def Generate(self, hdrname, file): module_name = GetModuleName(file, '_types.h') header = """ // autogenerated file --- DO NOT EDIT --- #ifndef __SCHEMA__%(modname)s_TYPES_H__ #define __SCHEMA__%(modname)s_TYPES_H__ #include "%(hdrname)s" #include <boost/bind.hpp> #include "ifmap/autogen.h" #include <pugixml/pugixml.hpp> using namespace std; namespace autogen { """ % { 'modname': module_name.upper(), 'hdrname': hdrname } file.write(header) for ctype in self._cTypeDict.values(): self.GenerateType(file, ctype) file.write('}\n') file.write('#endif // __SCHEMA__%s_TYPES_H__\n' % module_name.upper())
def Generate(self, file, ctype): module_name = GetModuleName(file, '_types.h') header = """ // autogenerated file --- DO NOT EDIT --- #ifndef __SCHEMA__%(modname)s_TYPES_H__ #define __SCHEMA__%(modname)s_TYPES_H__ #include <iostream> #include <string.h> #include <vector> #include <boost/dynamic_bitset.hpp> #include <boost/crc.hpp> // for boost::crc_32_type namespace pugi { class xml_node; class xml_document; } // namespace pugi #include "rapidjson/document.h" #include "ifmap/autogen.h" namespace autogen { """ % {'modname': module_name.upper()} file.write(header) self.GenerateType(file, ctype) file.write('} // namespace autogen\n') file.write('#endif // __SCHEMA__%s_TYPES_H__\n' % module_name.upper()) pass
def Generate(self, hdrname, file): module_name = GetModuleName(file, "_types.h") header = """ // autogenerated file --- DO NOT EDIT --- #ifndef __SCHEMA__%(modname)s_TYPES_H__ #define __SCHEMA__%(modname)s_TYPES_H__ #include "%(hdrname)s" #include <boost/bind.hpp> #include "ifmap/autogen.h" #include <pugixml/pugixml.hpp> using namespace std; namespace autogen { """ % { "modname": module_name.upper(), "hdrname": hdrname, } file.write(header) for ctype in self._cTypeDict.values(): self.GenerateType(file, ctype) file.write("}\n") file.write("#endif // __SCHEMA__%s_TYPES_H__\n" % module_name.upper())
def Generate(self, file, IdentifierDict, MetaDict): module_name = GetModuleName(file, '_types.h') #include <boost/cstdint.hpp> // for boost::uint16_t header = """ // autogenerated file --- DO NOT EDIT --- #ifndef __SCHEMA__%(modname)s_TYPES_H__ #define __SCHEMA__%(modname)s_TYPES_H__ #include <vector> #include <boost/dynamic_bitset.hpp> #include <boost/crc.hpp> // for boost::crc_32_type namespace pugi { class xml_node; } // namespace pugi #include "ifmap/autogen.h" #include "ifmap/ifmap_object.h" class DB; class DBGraph; class IFMapServerParser; class IFMapAgentParser; namespace autogen { """ % { 'modname': module_name.upper() } file.write(header) for idn in IdentifierDict.values(): # generate all dependent types properties = idn.getProperties() for prop in properties: if prop._xelement.isComplex(): self._GenerateProperty(file, prop) elif prop.getParent() == 'all': self._GenerateSimpleProperty(file, prop) for meta in MetaDict.values(): if type(meta) is IFMapLinkAttr: ctype = meta.getCType() if ctype: self._TypeGenerator.GenerateType(file, ctype) for idn in IdentifierDict.values(): if not idn._xelement: # cross-ref'd id from another file continue generator = IFMapGenIdentifier(self._cTypeDict, idn) generator.ServerClassDefn(file) for meta in MetaDict.values(): if type(meta) is IFMapLinkAttr: generator = IFMapGenLinkAttr(self, meta) generator.ServerClassDefn(file) file.write('} // namespace autogen\n') file.write('\nstruct %s_GraphFilterInfo {\n' % module_name) file.write( ' %s_GraphFilterInfo(std::string left, std::string right,\n' % module_name) file.write( ' std::string meta, bool linkattr) :\n') file.write( ' left_(left), right_(right), metadata_(meta), linkattr_(linkattr) { }\n' ) file.write(' std::string left_;\n') file.write(' std::string right_;\n') file.write(' std::string metadata_;\n') file.write(' bool linkattr_;\n') file.write('};\n') file.write( 'typedef std::vector<%s_GraphFilterInfo> %s_FilterInfo;\n\n' % (module_name, module_name)) file.write('extern void %s_Server_ModuleInit(DB *, DBGraph *);\n' % module_name) file.write( 'extern void %s_Server_GenerateGraphFilter(%s_FilterInfo *);\n' % (module_name, module_name)) file.write('extern void %s_Agent_ModuleInit(DB *, DBGraph *);\n' % module_name) file.write( 'extern void %s_Agent_ParserInit(DB *, IFMapAgentParser *);\n' % module_name) file.write('extern void %s_ParserInit(IFMapServerParser *);\n' % module_name) file.write('#endif // __SCHEMA__%s_TYPES_H__\n' % module_name.upper())
def Generate(self, file, IdentifierDict, MetaDict): module_name = GetModuleName(file, '_types.h') #include <boost/cstdint.hpp> // for boost::uint16_t header = """ // autogenerated file --- DO NOT EDIT --- #ifndef __SCHEMA__%(modname)s_TYPES_H__ #define __SCHEMA__%(modname)s_TYPES_H__ #include <vector> #include <boost/dynamic_bitset.hpp> #include <boost/crc.hpp> // for boost::crc_32_type namespace pugi { class xml_node; } // namespace pugi #include "ifmap/autogen.h" #include "ifmap/ifmap_object.h" class DB; class DBGraph; class IFMapServerParser; class IFMapAgentParser; namespace autogen { """ % {'modname': module_name.upper()} file.write(header) for idn in IdentifierDict.values(): # generate all dependent types properties = idn.getProperties() for prop in properties: if prop._xelement.isComplex(): self._GenerateProperty(file, prop) elif prop.getParent() == 'all': self._GenerateSimpleProperty(file, prop) for meta in MetaDict.values(): if type(meta) is IFMapLinkAttr: ctype = meta.getCType() if ctype: self._TypeGenerator.GenerateType(file, ctype) for idn in IdentifierDict.values(): if not idn._xelement: # cross-ref'd id from another file continue generator = IFMapGenIdentifier(self._cTypeDict, idn) generator.ServerClassDefn(file) for meta in MetaDict.values(): if type(meta) is IFMapLinkAttr: generator = IFMapGenLinkAttr(self, meta) generator.ServerClassDefn(file) file.write('} // namespace autogen\n') file.write('\nstruct %s_GraphFilterInfo {\n' % module_name) file.write(' %s_GraphFilterInfo(std::string left, std::string right,\n' % module_name) file.write(' std::string meta, bool linkattr) :\n') file.write(' left_(left), right_(right), metadata_(meta), linkattr_(linkattr) { }\n') file.write(' std::string left_;\n') file.write(' std::string right_;\n') file.write(' std::string metadata_;\n') file.write(' bool linkattr_;\n') file.write('};\n') file.write('typedef std::vector<%s_GraphFilterInfo> %s_FilterInfo;\n\n' % (module_name, module_name)) file.write('extern void %s_Server_ModuleInit(DB *, DBGraph *);\n' % module_name) file.write('extern void %s_Server_GenerateGraphFilter(%s_FilterInfo *);\n' % (module_name, module_name)) file.write('extern void %s_Agent_ModuleInit(DB *, DBGraph *);\n' % module_name) file.write('extern void %s_Agent_ParserInit(DB *, IFMapAgentParser *);\n' % module_name) file.write('extern void %s_ParserInit(IFMapServerParser *);\n' % module_name) file.write('#endif // __SCHEMA__%s_TYPES_H__\n' % module_name.upper())