Caa/README.md

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

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