| Not sure that scares you, code generation or a choice of scripting language? If you want to avoid a code generation, you can generate a .cdb (constant database) file with the cdbw(3) C API and read it using the cdbr(3) C API. cdbw(3) http://netbsd.gw.com/cgi-bin/man-cgi?cdbw+3+NetBSD-current
cdbr(3) http://netbsd.gw.com/cgi-bin/man-cgi?cdbr+3+NetBSD-current Some examples of .cdb files on NetBSD: /usr/share/misc/terminfo.cdb
/var/db/services.cdb If you don't like a particular choice of a scripting language, you can adapt my Lua script: https://gist.github.com/alnsn/68f599bc9358fcee122d6175392d77... Building and peeling a graph should be identical but the assign step is different. I use non-minimal not order preserving BDZ scheme while Joerg's code is based on the original CHM scheme. Given keys A, B, C and D, CHM always maps them to values 0, 1, 2 and 3. BDZ, on the other hand, can generate values in a range [0, 2.1 * 4) and it doesn't preserve an order. For instance, one possible mapping in the BDZ scheme is 7, 2, 5, 1. Alex |