Пример #1
0
#-------------------------------------------------------------------------------

xmlRootNode = xml.etree.ElementTree.parse(xmlInputFilePath).getroot()
if xmlRootNode.tag != "manufacturers":
    raise Exception("getAllNodes : Invalid root \"" + xmlRootNode.tag +
                    "\", \"manufacturers\" expected")

manufacturersClassName = "CManufacturers"
manufacturersClass = cppClass.CppClass(manufacturersClassName)
manufacturersClass.addSubType(cppClass.CppEnumType("EManufacturerIds", \
   xmlHelper.getEnumValues(inNode=xmlRootNode, foreachSubNode="manufacturer", enumValueNameTag="name", enumValueTag="id"), cppClass.PUBLIC))
manufacturersClass.addMember(cppClass.CppMember("ManufacturersMap", "std::map<unsigned int, std::string>", cppClass.PRIVATE, cppClass.STATIC | cppClass.CONST, \
   cppHelper.getMapInitCode(xmlHelper.getEnumValues(inNode=xmlRootNode, foreachSubNode="manufacturer", enumValueNameTag="name"))))
manufacturersClass.addMethod(cppClass.CppMethod("toManufacturerId", manufacturersClassName + "::EManufacturerIds", "unsigned int id", cppClass.PUBLIC, cppClass.STATIC, \
   "   if (ManufacturersMap.find(id) == ManufacturersMap.end())\n" \
   "      throw std::out_of_range(\"Unknown manufacturer\");\n" \
   "   return static_cast<EManufacturerIds>(id);\n"))
manufacturersClass.addMethod(cppClass.CppMethod("name", "const std::string&", "unsigned int id", cppClass.PUBLIC, cppClass.STATIC, \
   "   try {\n" \
   "      return ManufacturersMap.at(id);\n" \
   "   } catch(std::out_of_range&) {\n" \
   "      static const std::string UnknownManufacturer(\"Unknown manufacturer\");\n" \
   "      return UnknownManufacturer;\n" \
   "   }"))
manufacturersClass.addMethod(cppClass.CppMethod("name", "const std::string&", "EManufacturerIds id", cppClass.PUBLIC, cppClass.STATIC, \
   "   return name(static_cast<unsigned int>(id));"))

# Generate Header
util.createParentDir(headerPath)
with open(headerPath, 'w') as cppHeaderFile:
Пример #2
0
          str(hardCodedProfiles.getProfilesHardCoded()))

# CRorgs : Main Rorgs class, listing Rorg messages
rorgsClass = cppClass.CppClass("CRorgs")
rorgsItems = xmlHelper.getEnumValues(inNode=xmlProfileNode,
                                     foreachSubNode="rorg",
                                     enumValueNameTag="title",
                                     enumValueTag="number")
# Add 0xD4 (Universal Teach-in message) to RORG list as it doesn't not appear in eepXX.xml file
rorgsItems.append(['UTE Telegram ', '0xD4'])
rorgsClass.addSubType(
    cppClass.CppEnumType("ERorgIds", rorgsItems, cppClass.PUBLIC))
rorgsClass.addMember(cppClass.CppMember("RorgMap", "std::map<unsigned int, std::string>", cppClass.PRIVATE, cppClass.STATIC | cppClass.CONST, \
   cppHelper.getMapInitCode(rorgsItems)))
rorgsClass.addMethod(cppClass.CppMethod("toRorgId", "CRorgs::ERorgIds", "unsigned int id", cppClass.PUBLIC, cppClass.STATIC, \
   "   if (RorgMap.find(id) == RorgMap.end())\n" \
   "      throw std::out_of_range(\"Unknown rorg \" + CProfileHelper::byteToHexString(id));\n" \
   "   return static_cast<ERorgIds>(id);\n"))
rorgsClass.addMethod(cppClass.CppMethod("name", "const std::string&", "unsigned int id", cppClass.PUBLIC, cppClass.STATIC, \
   "   try {\n" \
   "      return RorgMap.at(id);\n" \
   "   } catch(std::out_of_range&) {\n" \
   "      static const std::string UnknownRorg(\"Unknown rorg\");\n" \
   "      return UnknownRorg;\n" \
   "   }"))


def createRorgCode(xmlProfileNode):
    code = "   switch(id)\n"
    code += "   {\n"
    for child in xmlProfileNode.findall("rorg"):
        enumValue = cppHelper.toEnumValueName(child.find("title").text)
Пример #3
0
#-------------------------------------------------------------------------------


xmlRootNode = xml.etree.ElementTree.parse(xmlInputFilePath).getroot()
if xmlRootNode.tag != 'manufacturers':
   raise Exception('getAllNodes : Invalid root "' + xmlRootNode.tag + '", "manufacturers" expected')

manufacturersClassName = 'CManufacturers'
manufacturersClass = cppClass.CppClass(manufacturersClassName)
manufacturersClass.addSubType(cppClass.CppEnumType('EManufacturerIds', \
   xmlHelper.getEnumValues(inNode=xmlRootNode, foreachSubNode='manufacturer', enumValueNameTag='name', enumValueTag='id'), cppClass.PUBLIC))
manufacturersClass.addMember(cppClass.CppMember('ManufacturersMap', 'std::map<unsigned int, std::string>', cppClass.PRIVATE, cppClass.STATIC | cppClass.CONST, \
   cppHelper.getMapInitCode(xmlHelper.getEnumValues(inNode=xmlRootNode, foreachSubNode='manufacturer', enumValueNameTag='name'))))
manufacturersClass.addMethod(cppClass.CppMethod('toManufacturerId', manufacturersClassName + '::EManufacturerIds', 'unsigned int id', cppClass.PUBLIC, cppClass.STATIC, \
   '   if (ManufacturersMap.find(id) == ManufacturersMap.end())\n' \
   '      throw std::out_of_range("Unknown manufacturer");\n' \
   '   return static_cast<EManufacturerIds>(id);\n'))
manufacturersClass.addMethod(cppClass.CppMethod('name', 'const std::string&', 'unsigned int id', cppClass.PUBLIC, cppClass.STATIC, \
   '   try {\n' \
   '      return ManufacturersMap.at(id);\n' \
   '   } catch(std::out_of_range&) {\n' \
   '      static const std::string UnknownManufacturer("Unknown manufacturer");\n' \
   '      return UnknownManufacturer;\n' \
   '   }'))
manufacturersClass.addMethod(cppClass.CppMethod('name', 'const std::string&', 'EManufacturerIds id', cppClass.PUBLIC, cppClass.STATIC, \
   '   return name(static_cast<unsigned int>(id));'))


# Start
print ('Script run with Python version ' + sys.version)
try: