ffigen 5.0.1
ffigen: ^5.0.1 copied to clipboard
Generator for FFI bindings, using LibClang to parse C header files.
5.0.1 #
- Add a the xcode tools llvm as default path on MacOS.
5.0.0 #
- Stable release targeting Dart 2.17, supporting ABI-specific integer types.
- EXPERIMENTAL support for ObjectiveC on MacOS hosts. The API and output might change at any point. Feel free to report bugs if encountered.
5.0.0-dev.1 #
- Fixed invalid default dart types being generated for
size_tandwchar_t.
5.0.0-dev.0 #
- Added support for generating ABI Specific integers.
- Breaking: removed config keys -
size-mapandtypedef-map. - Added config keys -
library-importsandtype-map.
4.1.3 #
- Analyzer fixes.
4.1.2 #
- Added fix for empty include list to exclude all
4.1.1 #
- Added fix for errors due to name collision between member name and type name used internally in structs/unions.
4.1.0 #
- Add config key
functions -> leaffor specifyingisLeaf:truefor functions.
4.0.0 #
- Release for Dart SDK
>=2.14.
4.0.0-dev.2 #
- Added config key
functions -> expose-typedefsto expose the typedef to Native and Dart type. - Config key
function->symbol-addressno longer exposes the typedef to Native type. Useexpose-typedefsto get the native type.
4.0.0-dev.1 #
- This package now targets package:lints for the generated code. The generated
code uses C symbol names as is. Use either
// ignore_for_file: lintRule1, lintRule2in thepreamble, or rename the symbols to make package:lints happy. - Name collisions are now resolved by suffixing
<int>instead of_<int>.
4.0.0-dev.0 #
- Added support for generating typedefs (referred typedefs only).
| Example C Code | Generated Dart typedef |
|
|
- All declarations that are excluded by the user are now only included if being used somewhere.
- Improved struct/union include/exclude. These declarations can now be targetted by their actual name, or if they are unnamed then by the name of the first typedef that refers to them.
3.1.0-dev.1 #
- Users can now specify exact path to dynamic library in
llvm-path.
3.1.0-dev.0 #
- Added support for generating unions.
3.0.0 #
- Release for dart sdk
>=2.13(Support for packed structs and inline arrays).
3.0.0-beta.0 #
- Added support for inline arrays in
Structs. - Remove config key
array-workaround. - Remove deprecated key
llvm-libfrom config, Usellvm-pathinstead.
2.5.0-beta.1 #
- Added support for
Packedstructs. Packed annotations are generated automatically but can be overriden usingstructs -> packconfig. - Updated sdk constraints to
>=2.13.0-211.6.beta.
2.4.2 #
- Fix issues due to declarations having duplicate names.
- Fix name conflict of declaration with ffi library prefix.
- Fix
charnot being recognized on platforms where it's unsigned by default.
2.4.1 #
- Added
/usr/libto default dynamic library location for linux.
2.4.0 #
- Added new config key
llvm-paththat accepts a list ofpath/to/llvm. - Deprecated config key
llvm-lib.
2.3.0 #
- Added config key
compiler-opts-automatic -> macos -> include-c-standard-library(default: true) to automatically find and add C standard library on macOS. - Allow passing list of string to config key
compiler-opts.
2.2.5 #
- Added new command line flag
--compiler-optsto the command line tool.
2.2.4 #
- Fix
sort: truenot working. - Fix extra
//or///in comments when usingcomments -> style:full.
2.2.3 #
- Added new subkey
dependency-only(options -full (default) | opaque) understructs. When set toopaque, ffigen will generate emptyOpaquestructs if structs were excluded in config (i.e added because they were a dependency) and only passed by reference(pointer).
2.2.2 #
- Fixed generation of empty opaque structs due to forward declarations in header files.
2.2.1 #
- Fixed generation of duplicate constants suffixed with
_<int>when using multiple entry points.
2.2.0 #
- Added subkey
symbol-addressto expose native symbol pointers forfunctionsandglobals.
2.1.0 #
- Added a new named constructor
NativeLibrary.fromLookup()to support dynamic linking. - Updated dart SDK constraints to latest stable version
2.12.0.
2.0.3 #
- Ignore typedef to struct pointer when possible.
- Recursively create directories for output file.
2.0.2 #
- Fixed illegal use of
constin name, crash due to unnamed inline structs and structs havingOpaquemembers.
2.0.1 #
- Switch to preview release of
package:quiver.
2.0.0 #
- Upgraded all dependencies.
package:ffigennow runs with sound null safety.
2.0.0-dev.6 #
- Functions marked
inlineare now skipped.
2.0.0-dev.5 #
- Use
Opaquefor representing emptyStructs.
2.0.0-dev.4 #
- Add support for parsing and generating globals.
2.0.0-dev.3 #
- Removed the usage of
--no-sound-null-safetyflag.
2.0.0-dev.2 #
- Removed setup phase for ffigen. Added new optional config key
llvm-libto specify path tollvm/libfolder.
2.0.0-dev.1 #
- Added support for passing and returning struct by value in functions.
2.0.0-dev.0 #
- Added support for Nested structs.
2.0.0-nullsafety.1 #
- Removed the need for
--no-sound-null-safetyflag.
2.0.0-nullsafety.0 #
- Migrated to (unsound) null safety.
1.2.0 #
- Added support for
Dart_Handlefromdart_api.h.
1.1.0 #
typedef-mapcan now be used to map a typedef name to a native type directly.
1.0.6 #
- Fixed missing typedefs nested in another typedef's return types.
1.0.5 #
- Fixed issues with generating macros of type
double.Infinityanddouble.NaN.
1.0.4 #
- Updated code to use
dart formatinstead ofdartfmtfor sdk version>= 2.10.0.
1.0.3 #
- Fixed errors due to extended ASCII and control characters in macro strings.
1.0.2 #
- Fix indentation for pub's readme.
1.0.1 #
- Fixed generation of
NativeFunctionparameters instead ofPointer<NativeFunction>in type signatures.
1.0.0 #
- Bump version to 1.0.0.
- Handle unimplememnted function pointers causing errors.
- Log lexical/semantic issues in headers as SEVERE.
0.3.0 #
- Added support for including/excluding/renaming un-named enums using key
unnamed_enums.
0.2.4+1 #
- Minor changes to dylib creation error log.
0.2.4 #
- Added support for C booleans as Uint8.
- Added config
dart-bool(default: true) to use dart bool instead of int in function parameters and return type.
0.2.3+3 #
- Wrapper dynamic library version now uses ffigen version from its pubspec.yaml file.
0.2.3+2 #
- Handle code formatting using dartfmt by finding dart-sdk.
0.2.3+1 #
- Fixed missing typedefs of nested function pointers.
0.2.3 #
- Fixed parsing structs with bitfields, all members of structs with bit field members will now be removed. See #84
0.2.2+1 #
- Updated
package:metaversion to^1.1.8for compatibility with flutter sdk.
0.2.2 #
- Fixed multiple generation/skipping of typedef enclosed declarations.
- Typedef names are now given higher preference over inner names, See #83.
0.2.1+1 #
- Added FAQ to readme.
0.2.1 #
- Fixed missing/duplicate typedef generation.
0.2.0 #
- Updated header config. Header
entry-pointsandinclude-directivesare now specified underheaderskey. Glob syntax is allowed. - Updated declaration
include/excludeconfig. These are now specified as a list. - Added Regexp based declaration renaming using
renamesubkey. - Added Regexp based member renaming for structs, enums and functions using
member-renamesubkey.prefixandprefix-replacementsubkeys have been removed.
0.1.5 #
- Added support for parsing macros and anonymous unnamed enums. These are generated as top level constants.
0.1.4 #
- Comments config now has a style and length sub keys -
style: doxygen(default) | any,length: brief | full(default), and can be disabled by passingcomments: false.
0.1.3 #
- Handled function arguments - dart keyword name collision
- Fix travis tests: the dynamic library is created using
pub run ffigen:setupbefore running the tests.
0.1.2 #
- Fixed wrapper not found error when running
pub run ffigen.
0.1.1 #
- Address pub score: follow dart File conventions, provide documentation, and pass static analysis.
0.1.0 #
- Support for Functions, Structs and Enums.
- Glob support for specifying headers.
- HeaderFilter - Include/Exclude declarations from specific header files using name matching.
- Filters - Include/Exclude function, structs and enum declarations using Regexp or Name matching.
- Prefixing - function, structs and enums can have a global prefix. Individual prefix Replacement support using Regexp.
- Comment extraction: full/brief/none
- Support for fixed size arrays in struct.
array-workaround(if enabled) will generate helpers for accessing fixed size arrays in structs. - Size for ints can be specified using
size-mapin config. - Options to disable using supported typedefs (e.g
uint8_t => Uint8), sort bindings. - Option to add a raw
preamblewhich is included as is in the generated file.