A binding assistant and generator for C(and maybe C++ later?) to mruby [Under heavy WIP]
- Run the scanner which will generate a func.json file. This json file will contain all functions(and their params) as well as all structs(and their params)
- Create a configuration file where you can reference specific functions and how you want their bindings to be generated differently
- for example, under what module or class a function should belong
- if a certain param should use self instead of passing in something
- ignore some functions if you dont need them
- insert bindings you made yourself
- Run the generator with the configuration file - this generates the resulting binding code
The defaults of FelBind make some assumptions on how you would like the resulting interface to look like.
- Functions get bound to methods using snake_case and kwargs
SomeFunction(someValue)
=>some_function(some_value: thing)
- Functions are defined under a module(by default
Test
)Test.some_function
- Structs are defined as classes under a module(by default
Test
)Test::MyStruct
- Struct values are read or written to by using the snake_case version of their respective members
my_struct_object.value_example
my_struct_object.value_example = 5
- Functions beginning with
Set
get bound as a method with=
SetSomeFunction(value)
=>Test.some_function = value
- Functions beginning with
Get
get bound as a method without itGetSomeFunction()
=>some_function
- Wrapping functions that return or have parameters that are of the basic C types(int, float, char *, etc) or their pointers(int *, float *, etc[except char *])
- Wrapping function that return or have parameters that are structs or their pointers
- Wrapping structs into objects
- Giving struct objects initializers and accessers
- Binding accessors for structs that contain structs or pointers
- Cloning struct objects
- The config system
- Struct Aliases(might make this manually done in the config system)
- Functions that utilize the
* void
type - Nested Pointers
- Functions with variable arguments