1.9 KiB
1.9 KiB
Caa - Generate Beef bindings from C Headers
This program is still in development and might not work fully, see TODO for more info on whats missing
Dependencies
- Libclang Beef bindings
- Libclang.dll & Libclang.lib (contained in the LLVM download)
CLI
The CLI program is extremely simple and doesnt have much customizeability. The process is as follows:
- It asks you for the amount of parameters to pass into clang
- You pass in the parameters one after another (The first one needs to be the file path to the header)
- The program parses the header (For debugging purposes it lists all tokens that where not parsed)
- You input the output file path
- File is output, program is stopped
API
- Binding.Bind => Takes in String[] args and generates the in memory model of the header
- Binding.Generate => Creates the string representation and outputs it into the target file
- Binding.CursorHandles => Dictionary containing handlers for specific cursor types, can be extended (Current broken)
- Binding.Options => General Options for binding and generating
Binding.Options
- Namespace => What to name the namespace and what to remove infront of all fields and names
- RemoveEnumStart => Try to find a common start to enum members and remove it
- LowercaseEnums => Outputs all enum fields in lowercase to make it easier to beefify it
TODO
- Error handling when opening the header
- Remove the hack, and get Args to actually work on line 31 in Binding
- Booleans should be parsed to Beef bools
- Some libraries (sqlite) use defines for enums/constants. Find a way to parse these
- Parse the output into multiple files
- Type parse function pointers correctly
- Struct fields inside of structs seemingly dont work
- Fix CursorHandles (I think its because of pointer fuckery