comparison Resources/CodeGeneration/stonegentool.py @ 507:ce49eae4c887 bgo-commands-codegen

Codegen + Warning fixes
author Benjamin Golinvaux <bgo@osimis.io>
date Fri, 01 Mar 2019 16:18:38 +0100
parents 8b6ceae45ba0
children 7105a0bad250
comparison
equal deleted inserted replaced
506:801d2697a1b1 507:ce49eae4c887
4 import os 4 import os
5 import sys 5 import sys
6 from jinja2 import Template 6 from jinja2 import Template
7 from io import StringIO 7 from io import StringIO
8 import time 8 import time
9 import datetime
9 10
10 """ 11 """
11 1 2 3 4 5 6 7 12 1 2 3 4 5 6 7
12 12345678901234567890123456789012345678901234567890123456789012345678901234567890 13 12345678901234567890123456789012345678901234567890123456789012345678901234567890
13 """ 14 """
261 # i.e., a struct. 262 # i.e., a struct.
262 if IsShortStructType(shortTypename, schema): 263 if IsShortStructType(shortTypename, schema):
263 struct = schema[GetLongTypename(shortTypename, schema)] 264 struct = schema[GetLongTypename(shortTypename, schema)]
264 # The keys in the struct dict are the member names 265 # The keys in the struct dict are the member names
265 # The values in the struct dict are the member types 266 # The values in the struct dict are the member types
266 for field in struct.keys(): 267 if struct:
267 # we fill the chain of dependent types (starting here) 268 # we reach this if struct is not None AND not empty
268 ancestors.append(shortTypename) 269 for field in struct.keys():
269 ComputeOrderFromTypeTree( 270 # we fill the chain of dependent types (starting here)
270 ancestors, genOrder, struct[field], schema) 271 ancestors.append(shortTypename)
271 # don't forget to restore it! 272 ComputeOrderFromTypeTree(
272 ancestors.pop() 273 ancestors, genOrder, struct[field], schema)
274 # don't forget to restore it!
275 ancestors.pop()
273 276
274 # now we're pretty sure our dependencies have been processed, 277 # now we're pretty sure our dependencies have been processed,
275 # we can start marking our code for generation (it might 278 # we can start marking our code for generation (it might
276 # already have been done if someone referenced us earlier) 279 # already have been done if someone referenced us earlier)
277 if not shortTypename in genOrder: 280 if not shortTypename in genOrder:
443 446
444 def GetTemplatingDictFromSchemaFilename(fn): 447 def GetTemplatingDictFromSchemaFilename(fn):
445 obj = LoadSchema(fn) 448 obj = LoadSchema(fn)
446 genOrder = ComputeRequiredDeclarationOrder(obj) 449 genOrder = ComputeRequiredDeclarationOrder(obj)
447 templatingDict = ProcessSchema(obj, genOrder) 450 templatingDict = ProcessSchema(obj, genOrder)
451 currentDT = datetime.datetime.now()
452 templatingDict['currentDatetime'] = str(currentDT)
448 return templatingDict 453 return templatingDict
449 454
450 # +-----------------------+ 455 # +-----------------------+
451 # | ENTRY POINT | 456 # | ENTRY POINT |
452 # +-----------------------+ 457 # +-----------------------+