def createTypeCode(xmlRorgNode, xmlFuncNode): itemNumber = 0 for xmlTypeNode in xmlFuncNode.findall("type"): if profileHelper.profileName(xmlRorgNode, xmlFuncNode, xmlTypeNode) in supportedProfiles: itemNumber += 1 if itemNumber == 0: return " throw std::out_of_range(\"Invalid EFuncIds\");" code = " switch(static_cast<ETypeIds>(typeId))\n" code += " {\n" for xmlTypeNode in xmlFuncNode.findall("type"): if profileHelper.profileName( xmlRorgNode, xmlFuncNode, xmlTypeNode) not in supportedProfiles: continue enumValue = cppHelper.toEnumValueName( xmlTypeNode.find("number").text) className = cppHelper.toCppName( "CProfile_" + profileHelper.profileName( xmlRorgNode, xmlFuncNode, xmlTypeNode)) code += " case " + enumValue + ": return boost::make_shared<" + className + ">(deviceId, api);\n" code += " default : throw std::out_of_range(\"Invalid EFuncIds\");\n" code += " }" return code
def generateHeader(self, f): f.write("DECLARE_ENUM_HEADER(" + self._cppTypeName + ",\n") for item in self.__listItems: # Enum item name f.write(" ((" + cppHelper.toEnumValueName(item[0]) + ")") # If available, enum item value if item[1]: f.write("(" + item[1] + ")") f.write(")\n") f.write(");\n\n")
def generateHeader(self, f, parentClassName): f.write("enum " + self._cppTypeName + " {\n") for item in self.__listItems: # Enum item name f.write(" " + cppHelper.toEnumValueName(item[0])) # If available, enum item value if item[1]: f.write(" = " + item[1]) f.write(",\n") f.write("};\n")
def createRorgCode(xmlProfileNode): code = " switch(id)\n" code += " {\n" for child in xmlProfileNode.findall("rorg"): enumValue = cppHelper.toEnumValueName(child.find("title").text) className = "C" + child.find("telegram").text + "Telegram" code += " case " + enumValue + ": return boost::make_shared<" + className + ">();\n" code += " default : throw std::out_of_range(\"Invalid EOrgId\");\n" code += " }\n" return code
def createFuncCode(xmlRorgNode): code = " switch(static_cast<EFuncIds>(funcId))\n" code += " {\n" for xmlFuncNode in xmlRorgNode.findall("func"): enumValue = cppHelper.toEnumValueName(xmlFuncNode.find("title").text) className = "C" + xmlRorgNode.find("telegram").text + "_" + cppHelper.toCppName(xmlFuncNode.find("number").text) code += " case " + enumValue + ": return boost::make_shared<" + className + ">();\n" code += " default : throw std::out_of_range(\"Invalid EFuncIds\");\n" code += " }\n" return code
def createTypeCode(xmlRorgNode, xmlFuncNode): itemNumber = 0 # Add types found in XML file for xmlTypeNode in xmlFuncNode.findall("type"): if profileHelper.profileName(xmlRorgNode, xmlFuncNode, xmlTypeNode) in supportedProfiles: itemNumber += 1 # Add hard-coded types not present in XML file profilePattern = profileHelper.profileFuncPattern( xmlRorgNode, xmlFuncNode) hardCodedProfilesNotInXml = list( filter(lambda p: re.match(profilePattern, p), hardCodedProfiles.getProfilesNotInXml())) itemNumber += len(hardCodedProfilesNotInXml) if itemNumber == 0: return " throw std::out_of_range(\"Invalid EFuncIds\");" code = " switch(static_cast<ETypeIds>(typeId))\n" code += " {\n" # Add types found in XML file for xmlTypeNode in xmlFuncNode.findall("type"): if profileHelper.profileName( xmlRorgNode, xmlFuncNode, xmlTypeNode) not in supportedProfiles: continue enumValue = cppHelper.toEnumValueName( xmlTypeNode.find("number").text) className = cppHelper.toCppName( "CProfile_" + profileHelper.profileName( xmlRorgNode, xmlFuncNode, xmlTypeNode)) code += " case " + enumValue + ": return boost::make_shared<" + className + ">(deviceId, api);\n" # Add hard-coded types not present in XML file for profile in hardCodedProfilesNotInXml: enumValue = cppHelper.toEnumValueName( "0x" + profileHelper.getType(profile)) className = cppHelper.toCppName("CProfile_" + profile) code += " case " + enumValue + ": return boost::make_shared<" + className + ">(deviceId, api);\n" code += " default : throw std::out_of_range(\"Invalid EFuncIds\");\n" code += " }" return code
def generateSource(self, f): f.write("DECLARE_ENUM_IMPLEMENTATION(" + self._cppTypeName + ",\n") for item in self.__listItems: # Enum item name f.write(" ((" + cppHelper.toEnumValueName(item[0]) + "))\n") f.write(");\n")