[ffigen] Fix generated asset/assetId property for ffi-native (#634)
diff --git a/pkgs/ffigen/CHANGELOG.md b/pkgs/ffigen/CHANGELOG.md index 2d90855..3de820d 100644 --- a/pkgs/ffigen/CHANGELOG.md +++ b/pkgs/ffigen/CHANGELOG.md
@@ -10,6 +10,7 @@ generate a typedef for the `Function`. - Use Dart wrapper types in args and returns of ObjCBlocks. - Bump min SDK version to 3.2.0-114.0.dev. +- Renamed `asset` to `assetId` for `ffi-native`. # 9.0.1
diff --git a/pkgs/ffigen/README.md b/pkgs/ffigen/README.md index 61464fd..3f2d0d8 100644 --- a/pkgs/ffigen/README.md +++ b/pkgs/ffigen/README.md
@@ -543,7 +543,7 @@ ```yaml ffi-native: - asset: 'myasset' # Optional. + assetId: 'myasset' # Optional. ``` </td> </tr>
diff --git a/pkgs/ffigen/example/ffinative/config.yaml b/pkgs/ffigen/example/ffinative/config.yaml index 397dbba..1bb3dac 100644 --- a/pkgs/ffigen/example/ffinative/config.yaml +++ b/pkgs/ffigen/example/ffinative/config.yaml
@@ -2,9 +2,9 @@ name: NativeLibrary ffi-native: - # asset: 'assetname' # (optional) + assetId: 'package:ffinative_example/generated_bindings.dart' # (optional) description: Bindings to `headers/example.h`. -output: 'generated_bindings.dart' +output: 'lib/generated_bindings.dart' headers: entry-points: - 'headers/example.h'
diff --git a/pkgs/ffigen/example/ffinative/generated_bindings.dart b/pkgs/ffigen/example/ffinative/generated_bindings.dart deleted file mode 100644 index 389620d..0000000 --- a/pkgs/ffigen/example/ffinative/generated_bindings.dart +++ /dev/null
@@ -1,43 +0,0 @@ -// ignore_for_file: deprecated_member_use - -// AUTO GENERATED FILE, DO NOT EDIT. -// -// Generated by `package:ffigen`. -// ignore_for_file: type=lint -import 'dart:ffi' as ffi; - -/// Adds 2 integers. -@ffi.Native<ffi.Int Function(ffi.Int, ffi.Int)>(symbol: 'sum') -external int sum( - int a, - int b, -); - -/// Subtracts 2 integers. -@ffi.Native<ffi.Int Function(ffi.Int, ffi.Int)>(symbol: 'subtract') -external int subtract( - int a, - int b, -); - -/// Multiplies 2 integers, returns pointer to an integer,. -@ffi.Native<ffi.Pointer<ffi.Int> Function(ffi.Int, ffi.Int)>(symbol: 'multiply') -external ffi.Pointer<ffi.Int> multiply( - int a, - int b, -); - -/// Divides 2 integers, returns pointer to a float. -@ffi.Native<ffi.Pointer<ffi.Float> Function(ffi.Int, ffi.Int)>(symbol: 'divide') -external ffi.Pointer<ffi.Float> divide( - int a, - int b, -); - -/// Divides 2 floats, returns a pointer to double. -@ffi.Native<ffi.Pointer<ffi.Double> Function(ffi.Float, ffi.Float)>( - symbol: 'dividePrecision') -external ffi.Pointer<ffi.Double> dividePrecision( - double a, - double b, -);
diff --git a/pkgs/ffigen/example/ffinative/lib/generated_bindings.dart b/pkgs/ffigen/example/ffinative/lib/generated_bindings.dart new file mode 100644 index 0000000..13c7d2b --- /dev/null +++ b/pkgs/ffigen/example/ffinative/lib/generated_bindings.dart
@@ -0,0 +1,51 @@ +// ignore_for_file: deprecated_member_use + +// AUTO GENERATED FILE, DO NOT EDIT. +// +// Generated by `package:ffigen`. +// ignore_for_file: type=lint +import 'dart:ffi' as ffi; + +/// Adds 2 integers. +@ffi.Native<ffi.Int Function(ffi.Int, ffi.Int)>( + symbol: 'sum', assetId: 'package:ffinative_example/generated_bindings.dart') +external int sum( + int a, + int b, +); + +/// Subtracts 2 integers. +@ffi.Native<ffi.Int Function(ffi.Int, ffi.Int)>( + symbol: 'subtract', + assetId: 'package:ffinative_example/generated_bindings.dart') +external int subtract( + int a, + int b, +); + +/// Multiplies 2 integers, returns pointer to an integer,. +@ffi.Native<ffi.Pointer<ffi.Int> Function(ffi.Int, ffi.Int)>( + symbol: 'multiply', + assetId: 'package:ffinative_example/generated_bindings.dart') +external ffi.Pointer<ffi.Int> multiply( + int a, + int b, +); + +/// Divides 2 integers, returns pointer to a float. +@ffi.Native<ffi.Pointer<ffi.Float> Function(ffi.Int, ffi.Int)>( + symbol: 'divide', + assetId: 'package:ffinative_example/generated_bindings.dart') +external ffi.Pointer<ffi.Float> divide( + int a, + int b, +); + +/// Divides 2 floats, returns a pointer to double. +@ffi.Native<ffi.Pointer<ffi.Double> Function(ffi.Float, ffi.Float)>( + symbol: 'dividePrecision', + assetId: 'package:ffinative_example/generated_bindings.dart') +external ffi.Pointer<ffi.Double> dividePrecision( + double a, + double b, +);
diff --git a/pkgs/ffigen/ffigen.schema.json b/pkgs/ffigen/ffigen.schema.json index a557a87..5c196f1 100644 --- a/pkgs/ffigen/ffigen.schema.json +++ b/pkgs/ffigen/ffigen.schema.json
@@ -418,12 +418,12 @@ "type": "object", "additionalProperties": false, "properties": { - "asset": { + "assetId": { "type": "string" } }, "required": [ - "asset" + "assetId" ] } ]
diff --git a/pkgs/ffigen/lib/src/code_generator/func.dart b/pkgs/ffigen/lib/src/code_generator/func.dart index 5e081cf..cbdebe7 100644 --- a/pkgs/ffigen/lib/src/code_generator/func.dart +++ b/pkgs/ffigen/lib/src/code_generator/func.dart
@@ -111,8 +111,8 @@ functionType.getFfiDartType(w, writeArgumentNames: false); if (ffiNativeConfig.enabled) { - final assetString = ffiNativeConfig.asset != null - ? ", asset: '${ffiNativeConfig.asset}'" + final assetString = ffiNativeConfig.assetId != null + ? ", assetId: '${ffiNativeConfig.assetId}'" : ''; final isLeafString = isLeaf ? ', isLeaf: true' : ''; s.write(
diff --git a/pkgs/ffigen/lib/src/config_provider/config_types.dart b/pkgs/ffigen/lib/src/config_provider/config_types.dart index 75d5fca..a4cf142 100644 --- a/pkgs/ffigen/lib/src/config_provider/config_types.dart +++ b/pkgs/ffigen/lib/src/config_provider/config_types.dart
@@ -384,9 +384,9 @@ class FfiNativeConfig { final bool enabled; - final String? asset; + final String? assetId; - const FfiNativeConfig({required this.enabled, this.asset}); + const FfiNativeConfig({required this.enabled, this.assetId}); } class SymbolFile {
diff --git a/pkgs/ffigen/lib/src/config_provider/spec_utils.dart b/pkgs/ffigen/lib/src/config_provider/spec_utils.dart index ff4e1b7..86a4bc5 100644 --- a/pkgs/ffigen/lib/src/config_provider/spec_utils.dart +++ b/pkgs/ffigen/lib/src/config_provider/spec_utils.dart
@@ -602,6 +602,6 @@ final yamlMap = yamlConfig as Map?; return FfiNativeConfig( enabled: true, - asset: yamlMap?[strings.ffiNativeAsset] as String?, + assetId: yamlMap?[strings.ffiNativeAsset] as String?, ); }
diff --git a/pkgs/ffigen/lib/src/strings.dart b/pkgs/ffigen/lib/src/strings.dart index 7613289..0918f48 100644 --- a/pkgs/ffigen/lib/src/strings.dart +++ b/pkgs/ffigen/lib/src/strings.dart
@@ -263,7 +263,7 @@ const dartHandleUsr = 'c:@S@_Dart_Handle'; const ffiNative = 'ffi-native'; -const ffiNativeAsset = 'asset'; +const ffiNativeAsset = 'assetId'; Directory? _tmpDir;
diff --git a/pkgs/ffigen/test/native_test/native_test.dart b/pkgs/ffigen/test/native_test/native_test.dart index cc31709..9c734a5 100644 --- a/pkgs/ffigen/test/native_test/native_test.dart +++ b/pkgs/ffigen/test/native_test/native_test.dart
@@ -58,6 +58,7 @@ rethrow; } }); + test('bool', () { expect(bindings.Function1Bool(true), false); expect(bindings.Function1Bool(false), true); @@ -112,6 +113,7 @@ } } }); + test('Array Workaround: Range Errors', () { final struct1 = bindings.getStruct1(); // Index (get) above range.