objdictgen/gen_cfile.py
changeset 227 f76c64f66097
parent 224 ae7edca3b7c4
child 229 b24906340673
equal deleted inserted replaced
226:abf63d732a84 227:f76c64f66097
    40 internal_types = {}
    40 internal_types = {}
    41 
    41 
    42 # Format a string for making a C++ variable
    42 # Format a string for making a C++ variable
    43 def FormatName(name):
    43 def FormatName(name):
    44     wordlist = [word for word in word_model.findall(name) if word != '']
    44     wordlist = [word for word in word_model.findall(name) if word != '']
    45     result = ''
    45     return "_".join(wordlist)
    46     sep = ''
       
    47     for word in wordlist:
       
    48         result += "%s%s"%(sep,word)
       
    49         sep = '_'
       
    50     return result
       
    51 
    46 
    52 # Extract the informations from a given type name
    47 # Extract the informations from a given type name
    53 def GetValidTypeInfos(typename):
    48 def GetValidTypeInfos(typename):
    54     if typename in internal_types:
    49     if typename in internal_types:
    55         return internal_types[typename]
    50         return internal_types[typename]
   140     mappedVariableContent = ""
   135     mappedVariableContent = ""
   141     strDeclareHeader = ""
   136     strDeclareHeader = ""
   142     strDeclareCallback = ""
   137     strDeclareCallback = ""
   143     indexContents = {}
   138     indexContents = {}
   144     indexCallbacks = {}
   139     indexCallbacks = {}
       
   140     translate_characters = "".join([chr(i) for i in xrange(128)] + ["_" for i in xrange(128)])
   145     for index in listIndex:
   141     for index in listIndex:
   146         texts["index"] = index
   142         texts["index"] = index
   147         strIndex = ""
   143         strIndex = ""
   148         entry_infos = Manager.GetEntryInfos(index)
   144         entry_infos = Manager.GetEntryInfos(index)
   149         texts["EntryName"] = entry_infos["name"]
   145         texts["EntryName"] = entry_infos["name"].translate(translate_characters)
   150         values = Manager.GetCurrentEntry(index)
   146         values = Manager.GetCurrentEntry(index)
   151         callbacks = Manager.HasCurrentEntryCallbacks(index)
   147         callbacks = Manager.HasCurrentEntryCallbacks(index)
   152         if index in variablelist:
   148         if index in variablelist:
   153             strIndex += "\n/* index 0x%(index)04X :   Mapped variable %(EntryName)s */\n"%texts
   149             strIndex += "\n/* index 0x%(index)04X :   Mapped variable %(EntryName)s */\n"%texts
   154         else:
   150         else:
   209                                 sep = ""
   205                                 sep = ""
   210                             if typeinfos[2] == "visible_string":
   206                             if typeinfos[2] == "visible_string":
   211                                 value = "\"%s\""%value
   207                                 value = "\"%s\""%value
   212                             elif typeinfos[2] == "domain":
   208                             elif typeinfos[2] == "domain":
   213                                 value = "\"%s\""%''.join(["\\x%2.2x"%ord(char) for char in value])
   209                                 value = "\"%s\""%''.join(["\\x%2.2x"%ord(char) for char in value])
   214 			    else:
   210                             else:
   215                                 comment = "\t/* %s */"%str(value)
   211                                 comment = "\t/* %s */"%str(value)
   216                                 value = "0x%X"%value
   212                                 value = "0x%X"%value
   217                             mappedVariableContent += "    %s%s%s\n"%(value, sep, comment)
   213                             mappedVariableContent += "    %s%s%s\n"%(value, sep, comment)
   218                     mappedVariableContent += "  };\n"
   214                     mappedVariableContent += "  };\n"
   219                 else:
   215                 else:
   249                             texts["value"] = "\"%s\""%value
   245                             texts["value"] = "\"%s\""%value
   250                             texts["comment"] = ""
   246                             texts["comment"] = ""
   251                         elif typeinfos[2] == "domain":
   247                         elif typeinfos[2] == "domain":
   252                             texts["value"] = "\"%s\""%''.join(["\\x%2.2x"%ord(char) for char in value])
   248                             texts["value"] = "\"%s\""%''.join(["\\x%2.2x"%ord(char) for char in value])
   253                             texts["comment"] = ""			
   249                             texts["comment"] = ""			
   254 			else:
   250                         else:
   255                             texts["value"] = "0x%X"%value
   251                             texts["value"] = "0x%X"%value
   256                             texts["comment"] = "\t/* %s */"%str(value)
   252                             texts["comment"] = "\t/* %s */"%str(value)
   257                         texts["name"] = FormatName(subentry_infos["name"])
   253                         texts["name"] = FormatName(subentry_infos["name"])
   258                         if index in variablelist:
   254                         if index in variablelist:
   259                             strDeclareHeader += "extern %(subIndexType)s %(parent)s_%(name)s%(suffixe)s;\t\t/* Mapped at index 0x%(index)04X, subindex 0x%(subIndex)02X */\n"%texts
   255                             strDeclareHeader += "extern %(subIndexType)s %(parent)s_%(name)s%(suffixe)s;\t\t/* Mapped at index 0x%(index)04X, subindex 0x%(subIndex)02X */\n"%texts