codespawn 0.3.3

C++ and Rust code generator. Supports XML and JSON for API definitions.
Documentation
{
    "config": "examples/config.json",
    "var": [
    {
        "type": "void*",
        "name": "void_ptr",
        "qualifier": "extern"
    },
    {
        "type": "int",
        "name": "some_number",
        "value": "1"
    },
    {
        "name": "ignored_var"
    }
    ],
    "enum": {
    "name": "GenericEnum",
    "attribute": [ {"name": "C-ABI"}, {"name": "DERIVE-DBG"} ],
    "var": [
        {
        "name": "EnumVal1",
        "type": "int"
        },
        {
        "name": "EnumVal2",
        "type": "int"
        },
        {
        "name": "Count",
        "value": "2",
        "type": "int"
        }
    ]
    },
    "bitflags": [
    {
    "name": "SampleBitflags",
    "type": "int",
    "attribute": [ {"name": "C-ABI"}, {"name": "DERIVE-DBG"} ],
    "var": [
        {
        "name": "Field1",
        "type": "int",
        "value": "1"
        },
        {
        "name": "Field2",
        "type": "int",
        "value": "2"
        }
    ]
    },
    {
    "name": "AltBitflags",
    "type": "int",
    "attribute": "C-ABI",
    "var": {
        "name": "C_Field1",
        "type": "int",
        "value": "1"
        }
    }
    ],
    "func": [
    {
        "type": "int",
        "name": "get_ascii",
        "var": {
        "type": "char&",
        "name": "letter"
        },
        "fptr": {
        "type": "bool",
        "name": "callback",
        "var": {
            "type": "int",
            "name": "code"
            }
        }
    },
    {
        "type": "int",
        "name": "get_ascii_alt",
        "var": [
            {
                "type": "char&",
                "name": "letter"
            },
            {
                "fptr": {
                "type": "bool",
                "name": "callback",
                "var": {
                    "type": "int",
                    "name": "code"
                }
              }
            }
        ]
    },
    {
        "type": "void",
        "name": "process_func",
        "qualifier": "static"
    },
    {
        "type": "void",
        "name": "func_ellipsis",
        "qualifier": "static",
        "var": [
            {
                "type": "const char*",
                "name": "str"
            },
            {
                "type": "..."
            },
            {
                "name": "ignored_var"
            }
        ]
    }
    ],
    "fptr": [
    {
        "type": "int",
        "name": "func_ptr"
    },
    {
        "type": "void",
        "name": "f_ptr",
        "var": 
        {
            "type": "const int*",
            "name": "fmt"
        },
        "fptr": 
        {
            "type": "void",
            "name": "fptr_arg",
            "var":
            {
                "type": "char&"
            }
        }
    }
    ],
    "struct": {
    "name": "GenericStruct",
    "attribute": [ {"name": "C-ABI"}, {"name": "DERIVE-DBG"} ],
    "var": [
        {
        "type": "int",
        "name": "x"
        },
        {
        "type": "int",
        "name": "y"
        },
        {
        "type": "int",
        "qualifier": "OPTION",
        "name": "opt_var"
        }
    ],
    "func":
    {
        "type": "int",
        "name": "return_int",
        "var": 
        {
            "type": "float",
            "name": "arg"
        },
        "fptr": 
        {
            "type": "float",
            "name": "opt_func",
            "qualifier": "OPTION_FPTR"
        }
    },
    "fptr": [
    {
        "type": "void",
        "name": "internal_ptr",
        "var": {
            "type": "const char*",
            "name": "arg"
        }
    },
    {
        "type": "void",
        "name": "opt_fptr",
        "qualifier": "OPTION_FPTR",
        "var": {
            "type": "const char*",
            "name": "arg"
        }
    }
    ],
    "struct": {
        "name": "SubStruct",
        "attribute" : "C-ABI",
        "enum": {
        "name": "SubEnum",
        "attribute": "DERIVE-DBG",
        "var": [
            { "name": "SubElement1" },
            { "name": "SubElement2" }
        ]
        },
        "func": {
        "qualifier": "static",
        "type": "char",
        "name": "do_magic",
        "var": {
            "type": "int",
            "name": "magic_number",
            "value": "42"
        }
        }
    }
    },
    "some_item": {
    "name": "unsupported",
    "type": "whatever"
    }
}