Skip to content
This repository was archived by the owner on Apr 29, 2024. It is now read-only.

Commit 7605781

Browse files
authored
File-per-class and single file bindings (#98)
1 parent 0b6847e commit 7605781

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+2970
-2577
lines changed

.github/workflows/test-package.yml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -331,11 +331,11 @@ jobs:
331331
- run: flutter build apk
332332
working-directory: ./jnigen/example/notification_plugin/example
333333
- name: re-generate bindings
334-
run: flutter pub run jnigen -Doutput.dart.path=_dart -Doutput.c.path=_c --config jnigen.yaml
334+
run: flutter pub run jnigen -Doutput.dart.path=_temp.dart -Doutput.c.path=_c/ --config jnigen.yaml
335335
- name: compare generated dart bindings
336-
run: diff -qr lib/ _dart
336+
run: diff lib/notifications.dart _temp.dart
337337
- name: compare generated C bindings
338-
run: diff -qr src/ _c
338+
run: diff -r src/ _c
339339

340340
build_in_app_java_example:
341341
runs-on: ubuntu-latest
@@ -361,11 +361,11 @@ jobs:
361361
- run: flutter analyze
362362
- run: flutter build apk
363363
- name: re-generate bindings
364-
run: flutter pub run jnigen -Doutput.dart.path=_dart -Doutput.c.path=_c --config jnigen.yaml
364+
run: flutter pub run jnigen -Doutput.dart.path=_temp.dart -Doutput.c.path=_c/ --config jnigen.yaml
365365
- name: compare generated dart bindings
366-
run: diff -qr lib/android_utils _dart
366+
run: diff lib/android_utils.dart _temp.dart
367367
- name: compare generated C bindings
368-
run: diff -qr src/android_utils _c
368+
run: diff -r src/android_utils _c
369369

370370
run_pdfbox_example_linux:
371371
runs-on: ubuntu-latest
@@ -390,13 +390,13 @@ jobs:
390390
- run: dart pub get
391391
- name: Generate bindings
392392
run: |
393-
dart run jnigen -Doutput.c.path=_c -Doutput.dart.path=_dart --config jnigen.yaml
393+
dart run jnigen -Doutput.c.path=_c/ -Doutput.dart.path=_dart/ --config jnigen.yaml
394394
- name: Compare generated bindings
395395
run: |
396-
diff -qr _c src/
397-
diff -qr _dart lib/src/third_party
396+
diff -r _c src/
397+
diff -r _dart lib/src/third_party
398398
- name: Generate full bindings
399-
run: dart run jnigen --config jnigen.yaml --override classes="org.apache.pdfbox.pdmodel;org.apache.pdfbox.text"
399+
run: dart run jnigen --config jnigen.yaml --override classes="org.apache.pdfbox"
400400
- name: Analyze generated bindings
401401
run: |
402402
flutter pub get # dart-analyze errors on flutter example

jnigen/example/in_app_java/jnigen.yaml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@ android_sdk_config:
44
output:
55
c:
66
library_name: android_utils
7-
path: src/android_utils
7+
path: src/android_utils/
88
dart:
9-
path: lib/android_utils
9+
path: lib/android_utils.dart
10+
structure: single_file
1011

1112
source_path:
1213
- 'android/app/src/main/java'

jnigen/example/in_app_java/lib/android_utils/com/example/in_app_java.dart renamed to jnigen/example/in_app_java/lib/android_utils.dart

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
// Autogenerated by jnigen. DO NOT EDIT!
22

33
// ignore_for_file: camel_case_types
4+
// ignore_for_file: file_names
5+
// ignore_for_file: unused_import
46
// ignore_for_file: non_constant_identifier_names
57
// ignore_for_file: constant_identifier_names
68
// ignore_for_file: annotate_overrides
@@ -11,7 +13,10 @@ import "dart:ffi" as ffi;
1113
import "package:jni/internal_helpers_for_jnigen.dart";
1214
import "package:jni/jni.dart" as jni;
1315

14-
import "../../_init.dart" show jniLookup;
16+
// Auto-generated initialization code.
17+
18+
final ffi.Pointer<T> Function<T extends ffi.NativeType>(String sym) jniLookup =
19+
ProtectedJniExtensions.initGeneratedLibrary("android_utils");
1520

1621
/// from: com.example.in_app_java.AndroidUtils
1722
class AndroidUtils extends jni.JniObject {

jnigen/example/in_app_java/lib/android_utils/_init.dart

Lines changed: 0 additions & 5 deletions
This file was deleted.

jnigen/example/in_app_java/lib/main.dart

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,8 @@ import 'package:flutter/material.dart';
66
import 'package:jni/jni.dart';
77

88
// The hierarchy created in generated code will mirror the java package
9-
// structure. This is an implementation convenience and we may allow
10-
// more customization in future.
11-
import 'android_utils/com/example/in_app_java.dart';
9+
// structure.
10+
import 'android_utils.dart';
1211

1312
JniObject activity = JniObject.fromRef(Jni.getCurrentActivity());
1413

jnigen/example/notification_plugin/example/lib/main.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import 'package:jni/jni.dart';
88
// The hierarchy created in generated code will mirror the java package
99
// structure. This is an implementation convenience and we may allow
1010
// more customization in future.
11-
import 'package:notification_plugin/com/example/notification_plugin.dart';
11+
import 'package:notification_plugin/notifications.dart';
1212

1313
JniObject activity = JniObject.fromRef(Jni.getCurrentActivity());
1414

jnigen/example/notification_plugin/jnigen.yaml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,8 @@ output:
1717
path: 'src/'
1818
library_name: notification_plugin
1919
dart:
20-
path: 'lib/'
20+
path: 'lib/notifications.dart'
21+
## Output to single file instead of recreating source's file structure.
22+
## This will be useful to reduce clutter when binding a small number of
23+
## classes.
24+
structure: 'single_file'

jnigen/example/notification_plugin/lib/_init.dart

Lines changed: 0 additions & 9 deletions
This file was deleted.

jnigen/example/notification_plugin/lib/com/example/notification_plugin.dart renamed to jnigen/example/notification_plugin/lib/notifications.dart

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
// Autogenerated by jnigen. DO NOT EDIT!
66

77
// ignore_for_file: camel_case_types
8+
// ignore_for_file: file_names
9+
// ignore_for_file: unused_import
810
// ignore_for_file: non_constant_identifier_names
911
// ignore_for_file: constant_identifier_names
1012
// ignore_for_file: annotate_overrides
@@ -15,7 +17,10 @@ import "dart:ffi" as ffi;
1517
import "package:jni/internal_helpers_for_jnigen.dart";
1618
import "package:jni/jni.dart" as jni;
1719

18-
import "../../_init.dart" show jniLookup;
20+
// Auto-generated initialization code.
21+
22+
final ffi.Pointer<T> Function<T extends ffi.NativeType>(String sym) jniLookup =
23+
ProtectedJniExtensions.initGeneratedLibrary("notification_plugin");
1924

2025
/// from: com.example.notification_plugin.Notifications
2126
class Notifications extends jni.JniObject {

jnigen/example/pdfbox_plugin/jnigen.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,11 @@ classes:
4343
- 'org.apache.pdfbox.pdmodel.PDDocumentInformation'
4444
- 'org.apache.pdfbox.text.PDFTextStripper'
4545

46+
## Exclude a problematic field
47+
exclude:
48+
fields:
49+
- 'org.apache.pdfbox.contentstream.operator.OperatorName#SHOW_TEXT_LINE_AND_SPACE'
50+
4651
## Dependencies to be downloaded using Maven (Invokes `mvn` command). These
4752
## dependencies are always downloaded along with their transitive dependencies.
4853
##
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
/// File merely exporting the generated bindings from lib/src/third_party
22
library pdfbox_plugin;
33

4-
export 'src/third_party/org/apache/pdfbox/pdmodel.dart';
5-
export 'src/third_party/org/apache/pdfbox/text.dart';
4+
export 'src/third_party/org/apache/pdfbox/pdmodel/PDDocument.dart';
5+
export 'src/third_party/org/apache/pdfbox/pdmodel/PDDocumentInformation.dart';
6+
export 'src/third_party/org/apache/pdfbox/text/PDFTextStripper.dart';

jnigen/example/pdfbox_plugin/lib/src/third_party/_init.dart

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,10 @@
1616
// See the License for the specific language governing permissions and
1717
// limitations under the License.
1818

19-
import "dart:ffi";
19+
import "dart:ffi" as ffi;
2020
import "package:jni/internal_helpers_for_jnigen.dart";
2121

22-
final Pointer<T> Function<T extends NativeType>(String sym) jniLookup =
22+
// Auto-generated initialization code.
23+
24+
final ffi.Pointer<T> Function<T extends ffi.NativeType>(String sym) jniLookup =
2325
ProtectedJniExtensions.initGeneratedLibrary("pdfbox_plugin");

0 commit comments

Comments
 (0)