commit | c340517c6b381c4f7cddbafd28e09c9cb13b6583 | [log] [tgz] |
---|---|---|
author | Rich Lane <rlane@bigswitch.com> | Wed Feb 20 18:18:57 2013 -0800 |
committer | Rich Lane <rlane@bigswitch.com> | Sat Apr 06 15:53:41 2013 -0700 |
tree | 971cb377463de77175075e1fc1a3faa1e463b40b | |
parent | d4e086930ea801a4a948dcc7ef7a803af792b9b5 [diff] |
LoxiGen: workaround a Tenjin bug Because the variable context is shared between nested includes (aka dynamic scope), and because Tenjin explicitly deletes variables from the context after the include is finished, we have a problem where the outer template's context variables are deleted by the inner template. Fix it by subclassing tenjin.Engine and rewriting include. We can't delegate to the original include because it uses stack frame magic.
LoxiGen is a tool that generates OpenFlow protocol libraries for a number of languages. It is composed of a frontend that parses wire protocol descriptions and a backend for each supported language (currently C and Python, with Java on the way).
You can run LoxiGen directly from the repository. There's no need to install it, and it has no dependencies beyond Python 2.6+.
To generate the libraries for all languages:
make
To generate the library for a single language:
make c
The currently supported languages are c
and python
.
The generated libraries will be under the loxi_output
directory. This can be changed with the LOXI_OUTPUT_DIR
environment variable when using the Makefile.
Each generated library comes with its own set of documentation in the standard format for that language. Please see that documentation for more details on using the generated libraries.
Please fork the repository on GitHub and send us a pull request. You might also be interested in the INTERNALS file which has notes about how LoxiGen works.