Beispiel #1
0
    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())
Beispiel #2
0
    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())