Esempio n. 1
0
 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)
Esempio n. 2
0
    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 )
Esempio n. 3
0
  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'
Esempio n. 4
0
  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'
Esempio n. 5
0
    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 )