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()
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