def genFile(self, packagename, tmplname): #instantiate a file parser g = gparser.gparser() # the file name is the package name plus the template name (. replaces _) fileName = '%s_%s' % (packagename, tmplname.replace('_', '.')) fileFullName = self.dictOutputDir + os.sep + fileName mess = ' File ' + fileFullName if os.path.isfile(fileFullName): mess += '(exists - appending)' self.appendFile(fileFullName, tmplname) # a bit of sorting self.sIncludes.sort() self.sIncludes.reverse() self.sDictInstances.sort() self.sDictInstances = self.align(self.sDictInstances) self.sClassSelections.sort() # fill the dictionary used for generation of files self.packageDict['dictName'] = packagename self.packageDict['includes'] = '\n'.join(self.sIncludes) self.packageDict['dictInstances'] = '\n'.join(self.sDictInstances) self.packageDict['classSelections'] = '\n'.join(self.sClassSelections) self.packageDict['classExclusions'] = '\n'.join(self.sClassExclusions) # parse the template file and generate the content for the file g.parse(self.godRoot + 'templates/' + tmplname + '.tpl', self.packageDict) # open file and write the parser content to it file = open(fileFullName, 'w') file.write(g.stream) file.close() mess += ' - Done' self.log.info(mess)
def doit(self,package,godNamespaces,outputDir,lname): default_scope = package.dict['packagenamespace'] for godNamespace in godNamespaces: self.reset(package,godNamespace) self.parseNamespaceImport(godNamespace) namespaceDict = package.dict namespacename = godNamespace['attrs']['name'] scope = godNamespace['attrs'].get('scope',default_scope); scoped_namespacename = scope+'::'+namespacename fileName = '%s.h' % namespacename mess = 'File ' + fileName.ljust(lname) namespaceDict['namespacename'] = namespacename namespaceDict['desc'] = self.genDesc(godNamespace) namespaceDict['author'] = self.genAuthor(godNamespace) namespaceDict['today'] = time.ctime() namespaceDict['namespaceScope'] = scope namespaceDict['typedefs'] = self.genTypedefs('all',godNamespace) namespaceDict['enums'] = self.genEnums('all',godNamespace) namespaceDict['enumOstreamOverloads'] = self.genEnumOstreamOverloads(godNamespace) namespaceDict['classes'] = self.genClasses(godNamespace) namespaceDict['attributes'] = self.genAttributes('all',godNamespace,1) namespaceDict['methods'] = self.genMethods('all',godNamespace) namespaceDict['methodDefs'] = self.genMethods('all',godNamespace,scoped_namespacename) namespaceDict['includes'] = self.genIncludes() namespaceDict['forwardDeclsLHCb'] = self.genForwardDeclsLHCb() namespaceDict['forwardDeclsGlob'] = self.genForwardDeclsGlob() namespaceDict['forwardIncludes'] = self.genForwardIncludes(namespacename) g = gparser.gparser() g.parse(self.godRoot+'templates/namespace.tpl',namespaceDict) file = open(outputDir+os.sep+fileName,'w') file.write(g.stream) file.close() mess += ' - Done' self.log.info( mess )
def doit(self,package,godNamespaces,outputDir,lname): default_scope = package.dict['packagenamespace'] for godNamespace in godNamespaces: self.reset(package,godNamespace) self.parseNamespaceImport(godNamespace) namespaceDict = package.dict namespacename = godNamespace['attrs']['name'] scope = godNamespace['attrs'].get('scope',default_scope); scoped_namespacename = scope+'::'+namespacename fileName = '%s.h' % namespacename print ' File %s' % fileName.ljust(lname), namespaceDict['namespacename'] = namespacename namespaceDict['desc'] = self.genDesc(godNamespace) namespaceDict['author'] = self.genAuthor(godNamespace) namespaceDict['today'] = time.ctime() namespaceDict['namespaceScope'] = scope namespaceDict['typedefs'] = self.genTypedefs('all',godNamespace) namespaceDict['enums'] = self.genEnums('all',godNamespace) namespaceDict['enumOstreamOverloads'] = self.genEnumOstreamOverloads(godNamespace) namespaceDict['classes'] = self.genClasses(godNamespace) namespaceDict['attributes'] = self.genAttributes('all',godNamespace,1) namespaceDict['methods'] = self.genMethods('all',godNamespace) namespaceDict['methodDefs'] = self.genMethods('all',godNamespace,scoped_namespacename) namespaceDict['includes'] = self.genIncludes() namespaceDict['forwardDeclsLHCb'] = self.genForwardDeclsLHCb() namespaceDict['forwardDeclsGlob'] = self.genForwardDeclsGlob() namespaceDict['forwardIncludes'] = self.genForwardIncludes(namespacename) g = gparser.gparser() g.parse(self.godRoot+'templates/namespace.tpl',namespaceDict) file = open(outputDir+os.sep+fileName,'w') file.write(g.stream) file.close() print ' - Done'
def doit(self,package,godClasses,outputDir,lname,allocatorType = 'FROMXML'): for godClass in godClasses: self.reset(package,godClass) self.parseClassImport(godClass) classDict = package.dict classname = godClass['attrs']['name'] # Get/set class namespace to package namespace if not set in class try: namespace = godClass['attrs']['namespace'] except KeyError: namespace = package.dict['packagenamespace'] godClass['attrs']['namespace'] = namespace scoped_classname = namespace+'::'+classname fileName = '%s.h' % classname print ' File %s' % fileName.ljust(lname), classDict['classname'] = classname classDict['uclassname'] = classname.upper() #added by Li #classDict['EDMBook'] = self.genEDMBook(godClass,scoped_classname) #classDict['classVersion'] = self.genClassVersion(godClass) classDict['desc'] = self.genDesc(godClass) classDict['author'] = godClass['attrs']['author'] classDict['today'] = time.ctime() classDict['classNamespace'] = namespace classDict['inheritance'] = self.genInheritance(godClass) classDict['constructorDecls'] = self.genConstructors(godClass) classDict['destructorDecl'] = self.genDestructors(godClass) for modifier in ['public','protected','private']: classDict[modifier+'Typedefs'] = self.genTypedefs(modifier,godClass) classDict[modifier+'Attributes'] = self.genAttributes(modifier,godClass) classDict[modifier+'TemplateAttr'] = self.genTemplateAttr(modifier,godClass) classDict[modifier+'BitfieldEnums'] = self.bitfieldEnums[modifier] classDict[modifier+'Enums'] = self.genEnums(modifier,godClass) classDict[modifier+'MethodDecls'] = self.genMethods(modifier,godClass) classDict[modifier+'MethodDefs'] = self.genMethods(modifier,godClass,scoped_classname) classDict['getSetMethodDecls'] = self.genGetSetMethods(godClass) classDict['constructorDefs'] = self.genConstructors(godClass,scoped_classname) classDict['destructorDef'] = self.genDestructors(godClass,scoped_classname) classDict['getSetMethodDefs'] = self.genGetSetMethods(godClass,scoped_classname) defs,maps,dcls = self.genEnumConversions(godClass, scoped_classname) classDict['enumConversionDefs'] = defs classDict['enumConversionMaps'] = maps classDict['enumConversionDecls'] = dcls classDict['includes'] = self.genIncludes() classDict['forwardDeclsGlob'] = self.genForwardDeclsGlob() classDict['forwardDeclsLHCb'] = self.genForwardDeclsLHCb() classDict['forwardIncludes'] = self.genForwardIncludes(classname) classDict['classDefine'] = self.genClassDefine(godClass,classname) #added by Li g = gparser.gparser() g.parse(self.godRoot+'templates/header.tpl',classDict) file = open(outputDir+os.sep+fileName,'w') file.write(g.stream) file.close() print ' - Done'
def doit(self,package,godClasses,outputDir,lname,allocatorType = 'FROMXML'): for godClass in godClasses: self.reset(package,godClass) self.parseClassImport(godClass) classDict = package.dict classname = godClass['attrs']['name'] # Get/set class namespace to package namespace if not set in class try: namespace = godClass['attrs']['namespace'] except KeyError: namespace = package.dict['packagenamespace'] godClass['attrs']['namespace'] = namespace scoped_classname = namespace+'::'+classname fileName = '%s.h' % classname mess = 'File ' + fileName.ljust(lname) classDict['classname'] = classname classDict['classID'] = self.genClassID(godClass) classDict['classVersion'] = self.genClassVersion(godClass) classDict['locations'] = self.genLocations(godClass) classDict['desc'] = self.genDesc(godClass) classDict['author'] = godClass['attrs']['author'] classDict['today'] = time.ctime() classDict['classNamespace'] = namespace classDict['inheritance'] = self.genInheritance(godClass) classDict['classContainerTypedefs'] = self.genClassContainerTypedefs(godClass) classDict['classTypedefs'] = self.genClassTypedefs(godClass) classDict['globalTypedefs'] = self.genTypedefs('global',godClass) classDict['constructorDecls'] = self.genConstructors(godClass) classDict['destructorDecl'] = self.genDestructors(godClass) classDict['classIDDecl'] = self.genClassIDFun(godClass) classDict['allocatorOperators'] = self.genAllocatorOperators(godClass,allocatorType) for modifier in ['public','protected','private']: classDict[modifier+'Typedefs'] = self.genTypedefs(modifier,godClass) classDict[modifier+'Attributes'] = self.genAttributes(modifier,godClass) classDict[modifier+'BitfieldEnums'] = self.bitfieldEnums[modifier] classDict[modifier+'Enums'] = self.genEnums(modifier,godClass) classDict[modifier+'MethodDecls'] = self.genMethods(modifier,godClass) classDict[modifier+'MethodDefs'] = self.genMethods(modifier,godClass,scoped_classname) classDict['streamerDecl'] = self.genStreamer(godClass) classDict['streamerDef'] = self.genStreamer(godClass,scoped_classname) classDict['classOstreamOverload'] = self.genClassOstreamOverload(godClass) classDict['enumOstreamOverloads'] = self.genEnumOstreamOverloads(godClass, scoped_classname) classDict['getSetMethodDecls'] = self.genGetSetMethods(godClass) classDict['constructorDefs'] = self.genConstructors(godClass,scoped_classname) classDict['destructorDef'] = self.genDestructors(godClass,scoped_classname) classDict['classIDDef'] = self.genClassIDFun(godClass,scoped_classname) classDict['getSetMethodDefs'] = self.genGetSetMethods(godClass,scoped_classname) defs,maps,dcls = self.genEnumConversions(godClass, scoped_classname) classDict['enumConversionDefs'] = defs classDict['enumConversionMaps'] = maps classDict['enumConversionDecls'] = dcls classDict['includes'] = self.genIncludes() classDict['forwardDeclsGlob'] = self.genForwardDeclsGlob() classDict['forwardDeclsLHCb'] = self.genForwardDeclsLHCb() classDict['forwardIncludes'] = self.genForwardIncludes(classname) classDict['registerAllocatorReleaser'] = self.genAllocatorReleaser(godClass, allocatorType) g = gparser.gparser() g.parse(self.godRoot+'templates/header.tpl',classDict) file = open(outputDir+os.sep+fileName,'w') file.write(g.stream) file.close() mess += ' - Done' self.log.info( mess )