def build_ir(ofinputs_by_version): classes = [] enums = [] for wire_version, ofinputs in ofinputs_by_version.items(): version = OFVersions.from_wire(wire_version) ofprotocol = loxi_ir.build_protocol(version, ofinputs) loxi_globals.ir[version] = ofprotocol loxi_globals.unified = loxi_ir.build_unified_ir(loxi_globals.ir)
} def make_gen(name, version): fn = getattr(py_gen.codegen, "generate_" + name) return lambda out, name: fn(out, name, version) def static(template_name): return lambda out, name: py_gen.util.render_template(out, template_name) targets = { prefix + '/__init__.py': static('toplevel_init.py'), prefix + '/pp.py': static('pp.py'), prefix + '/generic_util.py': static('generic_util.py'), } for version, subdir in versions.items(): targets['%s/%s/__init__.py' % (prefix, subdir)] = make_gen('init', version) for module in modules[version]: filename = '%s/%s/%s.py' % (prefix, subdir, module) targets[filename] = make_gen(module, OFVersions.from_wire(version)) def generate(install_dir): py_gen.codegen.init() for (name, fn) in targets.items(): with template_utils.open_output(install_dir, name) as outfile: fn(outfile, os.path.basename(name))
1: ["action", "common", "const", "message", "util"], 2: ["action", "common", "const", "instruction", "message", "util"], 3: ["action", "common", "const", "instruction", "message", "oxm", "util"], 4: ["action", "action_id", "common", "const", "instruction", "instruction_id", "message", "meter_band", "oxm", "bsn_tlv", "util"], } def make_gen(name, version): fn = getattr(py_gen.codegen, "generate_" + name) return lambda out, name: fn(out, name, version) def static(template_name): return lambda out, name: py_gen.util.render_template(out, template_name) targets = { prefix+'/__init__.py': static('toplevel_init.py'), prefix+'/pp.py': static('pp.py'), prefix+'/generic_util.py': static('generic_util.py'), } for version, subdir in versions.items(): targets['%s/%s/__init__.py' % (prefix, subdir)] = make_gen('init', version) for module in modules[version]: filename = '%s/%s/%s.py' % (prefix, subdir, module) targets[filename] = make_gen(module, OFVersions.from_wire(version)) def generate(install_dir): py_gen.codegen.init() for (name, fn) in targets.items(): with template_utils.open_output(install_dir, name) as outfile: fn(outfile, os.path.basename(name))