Fix generated asset/assetId property for ffi-native (#634)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2d90855..3de820d 100644
--- a/CHANGELOG.md
+++ b/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/README.md b/README.md
index 61464fd..3f2d0d8 100644
--- a/README.md
+++ b/README.md
@@ -543,7 +543,7 @@
```yaml
ffi-native:
- asset: 'myasset' # Optional.
+ assetId: 'myasset' # Optional.
```
</td>
</tr>
diff --git a/example/ffinative/config.yaml b/example/ffinative/config.yaml
index 397dbba..1bb3dac 100644
--- a/example/ffinative/config.yaml
+++ b/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/example/ffinative/generated_bindings.dart b/example/ffinative/generated_bindings.dart
deleted file mode 100644
index 389620d..0000000
--- a/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/example/ffinative/lib/generated_bindings.dart b/example/ffinative/lib/generated_bindings.dart
new file mode 100644
index 0000000..13c7d2b
--- /dev/null
+++ b/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/ffigen.schema.json b/ffigen.schema.json
index a557a87..5c196f1 100644
--- a/ffigen.schema.json
+++ b/ffigen.schema.json
@@ -418,12 +418,12 @@
"type": "object",
"additionalProperties": false,
"properties": {
- "asset": {
+ "assetId": {
"type": "string"
}
},
"required": [
- "asset"
+ "assetId"
]
}
]
diff --git a/lib/src/code_generator/func.dart b/lib/src/code_generator/func.dart
index 5e081cf..cbdebe7 100644
--- a/lib/src/code_generator/func.dart
+++ b/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/lib/src/config_provider/config_types.dart b/lib/src/config_provider/config_types.dart
index 75d5fca..a4cf142 100644
--- a/lib/src/config_provider/config_types.dart
+++ b/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/lib/src/config_provider/spec_utils.dart b/lib/src/config_provider/spec_utils.dart
index ff4e1b7..86a4bc5 100644
--- a/lib/src/config_provider/spec_utils.dart
+++ b/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/lib/src/strings.dart b/lib/src/strings.dart
index 7613289..0918f48 100644
--- a/lib/src/strings.dart
+++ b/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/test/native_test/native_test.dart b/test/native_test/native_test.dart
index cc31709..9c734a5 100644
--- a/test/native_test/native_test.dart
+++ b/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.