changeset 639 | 27c0a025acf3 |
parent 619 | 96f84395154f |
child 750 | bfb63ff7106e |
638:00bc03cb5606 | 639:27c0a025acf3 |
---|---|
37 |
37 |
38 generated_tag = """\n/* File generated by gen_cfile.py. Should not be modified. */\n""" |
38 generated_tag = """\n/* File generated by gen_cfile.py. Should not be modified. */\n""" |
39 |
39 |
40 internal_types = {} |
40 internal_types = {} |
41 default_string_size = 10 |
41 default_string_size = 10 |
42 |
|
43 #Verify that the name does not start with a digit |
|
44 def UnDigitName(name): |
|
45 start_with_digit = re.compile(r'^(\d.*)') |
|
46 if start_with_digit.match(name): |
|
47 return start_with_digit.sub(r'_\1', name) |
|
48 return name |
|
49 |
|
42 |
50 |
43 # Format a string for making a C++ variable |
51 # Format a string for making a C++ variable |
44 def FormatName(name): |
52 def FormatName(name): |
45 wordlist = [word for word in word_model.findall(name) if word != ''] |
53 wordlist = [word for word in word_model.findall(name) if word != ''] |
46 return "_".join(wordlist) |
54 return "_".join(wordlist) |
202 texts["suffixe"] = "[%d]"%typeinfos[1] |
210 texts["suffixe"] = "[%d]"%typeinfos[1] |
203 else: |
211 else: |
204 texts["suffixe"] = "" |
212 texts["suffixe"] = "" |
205 texts["value"], texts["comment"] = ComputeValue(typeinfos[2], values) |
213 texts["value"], texts["comment"] = ComputeValue(typeinfos[2], values) |
206 if index in variablelist: |
214 if index in variablelist: |
207 texts["name"] = FormatName(subentry_infos["name"]) |
215 texts["name"] = UnDigitName(FormatName(subentry_infos["name"])) |
208 strDeclareHeader += "extern %(subIndexType)s %(name)s%(suffixe)s;\t\t/* Mapped at index 0x%(index)04X, subindex 0x00*/\n"%texts |
216 strDeclareHeader += "extern %(subIndexType)s %(name)s%(suffixe)s;\t\t/* Mapped at index 0x%(index)04X, subindex 0x00*/\n"%texts |
209 mappedVariableContent += "%(subIndexType)s %(name)s%(suffixe)s = %(value)s;\t\t/* Mapped at index 0x%(index)04X, subindex 0x00 */\n"%texts |
217 mappedVariableContent += "%(subIndexType)s %(name)s%(suffixe)s = %(value)s;\t\t/* Mapped at index 0x%(index)04X, subindex 0x00 */\n"%texts |
210 else: |
218 else: |
211 strIndex += " %(subIndexType)s %(NodeName)s_obj%(index)04X%(suffixe)s = %(value)s;%(comment)s\n"%texts |
219 strIndex += " %(subIndexType)s %(NodeName)s_obj%(index)04X%(suffixe)s = %(value)s;%(comment)s\n"%texts |
212 values = [values] |
220 values = [values] |
233 else: |
241 else: |
234 texts["suffixe"] = "" |
242 texts["suffixe"] = "" |
235 texts["type_suffixe"] = "" |
243 texts["type_suffixe"] = "" |
236 texts["length"] = values[0] |
244 texts["length"] = values[0] |
237 if index in variablelist: |
245 if index in variablelist: |
238 texts["name"] = FormatName(entry_infos["name"]) |
246 texts["name"] = UnDigitName(FormatName(entry_infos["name"])) |
239 texts["values_count"] = str(len(values)-1) |
247 texts["values_count"] = str(len(values)-1) |
240 strDeclareHeader += "extern %(subIndexType)s%(type_suffixe)s %(name)s[%(values_count)s];\t\t/* Mapped at index 0x%(index)04X, subindex 0x01 - 0x%(length)02X */\n"%texts |
248 strDeclareHeader += "extern %(subIndexType)s%(type_suffixe)s %(name)s[%(values_count)s];\t\t/* Mapped at index 0x%(index)04X, subindex 0x01 - 0x%(length)02X */\n"%texts |
241 mappedVariableContent += "%(subIndexType)s%(type_suffixe)s %(name)s[] =\t\t/* Mapped at index 0x%(index)04X, subindex 0x01 - 0x%(length)02X */\n {\n"%texts |
249 mappedVariableContent += "%(subIndexType)s%(type_suffixe)s %(name)s[] =\t\t/* Mapped at index 0x%(index)04X, subindex 0x01 - 0x%(length)02X */\n {\n"%texts |
242 for subIndex, value in enumerate(values): |
250 for subIndex, value in enumerate(values): |
243 sep = "," |
251 sep = "," |
259 value, comment = ComputeValue(typeinfos[2], value) |
267 value, comment = ComputeValue(typeinfos[2], value) |
260 strIndex += " %s%s%s\n"%(value, sep, comment) |
268 strIndex += " %s%s%s\n"%(value, sep, comment) |
261 strIndex += " };\n" |
269 strIndex += " };\n" |
262 else: |
270 else: |
263 |
271 |
264 texts["parent"] = FormatName(entry_infos["name"]) |
272 texts["parent"] = UnDigitName(FormatName(entry_infos["name"])) |
265 # Entry type is ARRAY |
273 # Entry type is ARRAY |
266 for subIndex, value in enumerate(values): |
274 for subIndex, value in enumerate(values): |
267 texts["subIndex"] = subIndex |
275 texts["subIndex"] = subIndex |
268 if subIndex > 0: |
276 if subIndex > 0: |
269 subentry_infos = Node.GetSubentryInfos(index, subIndex) |
277 subentry_infos = Node.GetSubentryInfos(index, subIndex) |
286 if callbacks: |
294 if callbacks: |
287 if index in variablelist: |
295 if index in variablelist: |
288 name = FormatName(entry_infos["name"]) |
296 name = FormatName(entry_infos["name"]) |
289 else: |
297 else: |
290 name = "%(NodeName)s_Index%(index)04X"%texts |
298 name = "%(NodeName)s_Index%(index)04X"%texts |
299 name=UnDigitName(name); |
|
291 strIndex += " ODCallback_t %s_callbacks[] = \n {\n"%name |
300 strIndex += " ODCallback_t %s_callbacks[] = \n {\n"%name |
292 for subIndex in xrange(len(values)): |
301 for subIndex in xrange(len(values)): |
293 strIndex += " NULL,\n" |
302 strIndex += " NULL,\n" |
294 strIndex += " };\n" |
303 strIndex += " };\n" |
295 indexCallbacks[index] = "*callbacks = %s_callbacks; "%name |
304 indexCallbacks[index] = "*callbacks = %s_callbacks; "%name |
335 params = Node.GetParamsEntry(index, subIndex) |
344 params = Node.GetParamsEntry(index, subIndex) |
336 if params["save"]: |
345 if params["save"]: |
337 save = "|TO_BE_SAVE" |
346 save = "|TO_BE_SAVE" |
338 else: |
347 else: |
339 save = "" |
348 save = "" |
340 strIndex += " { %s%s, %s, %s, (void*)&%s }%s\n"%(subentry_infos["access"].upper(),save,typeinfos[2],sizeof,name,sep) |
349 strIndex += " { %s%s, %s, %s, (void*)&%s }%s\n"%(subentry_infos["access"].upper(),save,typeinfos[2],sizeof,UnDigitName(name),sep) |
341 pointer_name = pointers_dict.get((index, subIndex), None) |
350 pointer_name = pointers_dict.get((index, subIndex), None) |
342 if pointer_name is not None: |
351 if pointer_name is not None: |
343 pointedVariableContent += "%s* %s = &%s;\n"%(typeinfos[0], pointer_name, name) |
352 pointedVariableContent += "%s* %s = &%s;\n"%(typeinfos[0], pointer_name, name) |
344 strIndex += " };\n" |
353 strIndex += " };\n" |
345 indexContents[index] = strIndex |
354 indexContents[index] = strIndex |