Ejemplo n.º 1
0
        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
Ejemplo n.º 2
0
 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")
Ejemplo n.º 3
0
 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")
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
 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
Ejemplo n.º 6
0
        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
Ejemplo n.º 7
0
 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")