PropXXFlexible, high-performance configuration utility for C++ |
hosted at |
PropXX provides a property/configuration mechanism for C++ applications. Properties can be defined in files similar to but more flexible than Java properties:
The design of PropXX combines flexibility with high-performance for the C++ code which accesses property values. The property values are stored in objects of special property classes which are automatically generated from the property set definitions. Performance-critical code can be inlined by the compiler and a typical access to a property value is as cheap as reading a single variable from the memory. No costly data structures like hashes or balanced trees etc. are involved.
Since both the generated property classes and the embedded Lua interpreter are very light-weight and portable, PropXX can be used with practically any C++ project. In particular, it would make perfect sense to use it for embedded systems with very limited hardware resources.
Keywords:Lua, C++, Java properties, property files, parser, configuration language, library, Open Source, code generation, high performance, flexible, portable, embedded.
PropXX is distributed under the GNU General Public License v3. The C++-part is also available under the terms of the GNU Lesser General Public License v3. This permits using PropXX in commercial, closed-source applications as long as the set of available C++ property classes is not extended.
PropXX is available for download at the Sourceforge project page.
The feature set which was planned for the first release 1.0 is almost complete and PropXX is thus considered ready for productive use. PropXX has been tested with a quite comprehensive test suite.
Since high quality of the code is our main goal, please don't hesitate to report any issues that you might encounter. In general, any feedback is highly welcome. You may consider using the Sourceforge tracking utility or the forums
The usual
./configure make make check # (optional, runs the test suite) make installshall suffice to build the library. You may want to give some arguments to configure, e.g.
./configure --prefix=/install/path \ CPPFLAGS="-I/path/to/lua/include" LDFLAGS="-L/path/to/lua/lib"
The build process generated a small static library libpropxx.a which is installed to /install/path/lib.
Since PropXX is a small and lean tool, it is also a perfectly valid approach to directly include the C++ sources into the build process of your application instead of building and using the library. Please note that the library only allows that for projects with a license that is compatible with the GPL. Closed-source projects have to link to the library and may not modify the PropXX sources (unless these changes are published as Open Source in agreement with the terms of the GPL, of course).