package:ffigen
simplifies the process of generating dart:ffi
bindings from C header files. It is simple to use, with the input being a small YAML config file. It requires LLVM (9+) to work. This document tries to give a complete overview of every component without going into too many details about every single class/file.
package:ffigen
binds to LibClang using dart:ffi
for parsing C header files.
The config file for generating bindings is tool/libclang_config.yaml
. The bindings are generated to lib/src/header_parser/clang_bindings/clang_bindings.dart
. These are used by Header Parser for calling libclang functions.
This is the main entry point for the user- dart run ffigen
.
--verbose
: Sets log level.--config
: Specifies a config file.ffigen.dart
in the following way:ffigen.dart
will try to find dynamic library in default locations. If that fails, the user must excplicitly specify location in ffigen's config under the key llvm-path
.Config
object from an input Yaml file. This is used by other modules.parse
method is then invoked to generate a Library
object.Library
object to the specified file.The Config Provider holds all the configurations required by other modules.
The Header Parser parses C header files and converts them into a Library
object.
Library
object.The Code Generator generates the actual string bindings.
Binding
.