Ejemplo n.º 1
0
 def generate_header_file(self, outdir):
     self.header = hd_t.headerFile(self.get_name())
     #Handle Includes
     self.header.pathInclude.append('gen/yang/confd_headers.hpp')
     self.header.pathInclude.append('stdint.h')
     self.header.pathInclude.append('ORM/DataType.hpp')
     self.header.pathInclude.append('ORM/DataObject.hpp')
     self.header.pathInclude.append('ORM/Adaptors/ConfD/ConfDDataObject.hpp')
     
     for i in self.includes:
         inc_obj = self.includes[i]
         if not inc_obj.isEmpty:
             self.header.pathInclude.append('gen/yang/' + inc_obj.mod_name + '.hpp')
     for mod_pre in self.imports:
         import_mod = self.imports[mod_pre]
         if not import_mod.isEmpty:
             self.header.pathInclude.append('gen/yang/' + import_mod.mod_name + '.hpp')
     '''
     for aug_from in self.beAugmentedBy:
         self.header.pathInclude.append('gen/yang/' + aug_from + '.hpp')
     '''
     #flush namespace
     self.rootYinNode.flush_subtree()
            
     self.rootYinNode.generate_definition()
     for o in self.rootYinNode.output():
         self.header.body.append(o)
     
     # write to file
     hdFile = open(os.path.join(outdir, self.header.getFileNameWithExt()),'w')
     
     try:
         hd_lines = [line + iutil.newline for line in self.header.generate()]
         hdFile.writelines(hd_lines)
     finally:
         hdFile.close()
Ejemplo n.º 2
0
def run():
    inDir = ''
    #typeDict = ''
    #outDir = ''
    confd_headers_dir= None
    
    idx = 1
    while idx < len(sys.argv):
        var = sys.argv[idx]
        if '-i' == var:
            inDir = sys.argv[idx+1]
        #elif '-d' == var:
        #    typeDict = sys.argv[idx+1]
        elif '-ih' == var:
            confd_headers_dir = sys.argv[idx+1]
        elif '-oh' == var:
            outDirH = sys.argv[idx+1]
        elif '-oc' == var:
            outDirC = sys.argv[idx+1]
        elif '-trace' == var:
            iutil._traceFlag = True
        elif '-warning' == var:
            iutil._warningFlag = True
        elif '-error' == var:
            iutil._errorFlag = True
        elif '-debug' == var:
            iutil._debugFlag = True
        idx = idx+1
    
    if not os.path.isdir(inDir):
        iutil.ERROR('Need an input directory!')
    #elif typeDict == '' or typeDict[-5:] != '.dict':
    #    iutil.TRACE('Need a dict file!')
    elif not os.path.isdir(outDirH):
        iutil.ERROR('Need an output HPP directory!')
    elif not os.path.isdir(outDirC):
        iutil.ERROR('Need an output CPP directory!')
    else:
        iutil.TRACE('Input directory is ' + inDir)
        iutil.TRACE('Output HPP directory is ' + outDirH)
        iutil.TRACE('Output CPP directory is ' + outDirC)
        # Specify output directory
        
        confd_headers = []
        fl = os.listdir(confd_headers_dir)
        for f in fl:
            if f[-2:] == '.h':
                confd_headers.append(f)
        
        if len(confd_headers) < 1:    
            iutil.ERROR('There is no .h file under %s.' % confd_headers_dir)
        else:
            t_hFile = header_template.headerFile('confd_headers')
            fpath = os.path.join(outDirH, t_hFile.getFileNameWithExt())
            m_hFile = open(fpath, 'w')
            for h in confd_headers:
                t_hFile.body.append('#include <confd/yangModels/%s>' % h)
                
            lines = [line + iutil.newline for line in t_hFile.generate()]
            m_hFile.writelines(lines)
            m_hFile.close()            
        
        yinFiles = []
        fileList = os.listdir(inDir)
        
        for f in fileList:
            if f[-4:] == '.yin':
                yinFiles.append(os.path.join(inDir, f))
        
        if len(yinFiles) < 1:
            iutil.ERROR('There is no yin file under %s.' % inDir)
        else:
            pa = yin_parser.yinParser()
            cg = codes_generator.getGenerator()
            for yin in yinFiles:
                if cg.load_yin_tree(pa.parse(yin)):
                    iutil.DEBUG('Success on parsing %s' % yin)
                else:
                    iutil.WARNING('Fail on parsing %s' % yin)
                    
            cg.generate_code(outDirH,outDirC)

        print('Moriturus te saluto.')
        pass