diff --git a/.github/workflows/ffi.yaml b/.github/workflows/ffi.yaml index e521a3caf..ef174d88f 100644 --- a/.github/workflows/ffi.yaml +++ b/.github/workflows/ffi.yaml @@ -20,7 +20,6 @@ env: jobs: # Check code formatting and static analysis on a single OS (linux) - # against Dart dev. analyze: runs-on: ubuntu-latest defaults: @@ -29,10 +28,10 @@ jobs: strategy: fail-fast: false matrix: - sdk: [dev] + sdk: [main] steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - - uses: dart-lang/setup-dart@e630b99d28a3b71860378cafdc2a067c71107f94 + - uses: subosito/flutter-action@74af56c5ed2697ba4621264652728e8d217e53d3 with: sdk: ${{ matrix.sdk }} - id: install @@ -47,7 +46,7 @@ jobs: # Run tests on a matrix consisting of two dimensions: # 1. OS: ubuntu-latest, (macos-latest, windows-latest) - # 2. release channel: dev + # 2. release channel: main test: needs: analyze runs-on: ${{ matrix.os }} @@ -59,10 +58,10 @@ jobs: matrix: # Add macos-latest and/or windows-latest if relevant for this package. os: [ubuntu-latest] - sdk: [beta, dev] + sdk: [main] steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - - uses: dart-lang/setup-dart@e630b99d28a3b71860378cafdc2a067c71107f94 + - uses: subosito/flutter-action@74af56c5ed2697ba4621264652728e8d217e53d3 with: sdk: ${{ matrix.sdk }} - id: install diff --git a/.github/workflows/ffigen.yml b/.github/workflows/ffigen.yml index 6e1690b92..a0ea03f77 100644 --- a/.github/workflows/ffigen.yml +++ b/.github/workflows/ffigen.yml @@ -37,7 +37,7 @@ jobs: channel: 'stable' - id: install name: Install dependencies - run: flutter pub get && flutter pub get --directory="example/shared_bindings" && flutter pub get --directory="../objective_c" + run: flutter pub get && flutter pub get --directory="example/shared_bindings" - name: Check formatting run: dart format --output=none --set-exit-if-changed . if: always() && steps.install.outcome == 'success' @@ -79,7 +79,7 @@ jobs: with: channel: 'stable' - name: Install dependencies - run: flutter pub get && flutter pub get --directory="../objective_c" + run: flutter pub get - name: Build test dylib and bindings run: dart test/setup.dart - name: Run VM tests and collect coverage @@ -109,8 +109,10 @@ jobs: - uses: subosito/flutter-action@74af56c5ed2697ba4621264652728e8d217e53d3 with: channel: 'stable' + - name: Configure native-assets + run: flutter config --enable-native-assets - name: Install dependencies - run: flutter pub get && flutter pub get --directory="../objective_c" + run: flutter pub get - name: Build test dylib and bindings run: dart test/setup.dart --main-thread-dispatcher - name: Run Flutter tests @@ -142,7 +144,7 @@ jobs: # If we need to change the generated code, we should temporarily disable this # test, or temporarily disable the requirement for all bots to be green to # merge PRs. - # Running this sanity check on one OS should be sufficient. Chosing Windows + # Running this sanity check on one OS should be sufficient. Choosing Windows # because it is the most likely to break. test-windows-flutter: needs: analyze @@ -155,9 +157,11 @@ jobs: - uses: subosito/flutter-action@74af56c5ed2697ba4621264652728e8d217e53d3 with: channel: "master" + - name: Configure native-assets + run: flutter config --enable-native-assets - name: Install dependencies run: flutter pub get - name: Build test dylib and bindings run: dart test/setup.dart - name: Run VM tests - run: flutter pub run test test_flutter/ + run: flutter test test_flutter/ diff --git a/.github/workflows/ffigen_weekly.yml b/.github/workflows/ffigen_weekly.yml index 863eac384..b65086cfa 100644 --- a/.github/workflows/ffigen_weekly.yml +++ b/.github/workflows/ffigen_weekly.yml @@ -31,8 +31,10 @@ jobs: - uses: subosito/flutter-action@74af56c5ed2697ba4621264652728e8d217e53d3 with: channel: 'stable' + - name: Configure native-assets + run: flutter config --enable-native-assets - name: Install dependencies - run: flutter pub get && flutter pub get --directory="../objective_c" + run: flutter pub get - name: Build test dylib and bindings run: dart test/setup.dart --main-thread-dispatcher - name: Run VM tests diff --git a/.github/workflows/jnigen.yaml b/.github/workflows/jnigen.yaml index 462c84f10..7be99f6eb 100644 --- a/.github/workflows/jnigen.yaml +++ b/.github/workflows/jnigen.yaml @@ -53,7 +53,7 @@ jobs: args: '--set-exit-if-changed' - id: install name: Install dependencies - run: dart pub get + run: flutter pub get - name: install dependencies for android test runner run: flutter pub get working-directory: ./pkgs/jnigen/android_test_runner @@ -74,7 +74,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - sdk: [stable, beta] + sdk: [stable, main] steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - uses: subosito/flutter-action@74af56c5ed2697ba4621264652728e8d217e53d3 @@ -94,7 +94,7 @@ jobs: sudo apt-get update -y sudo apt-get install -y clang-format - name: Install dependencies - run: dart pub get + run: flutter pub get - name: build in_app_java APK run: flutter build apk --target-platform=android-arm64 working-directory: ./pkgs/jnigen/example/in_app_java @@ -147,6 +147,7 @@ jobs: sudo apt-get update -y sudo apt-get install -y clang-format build-essential cmake - run: flutter pub get + - run: flutter pub get -C example - name: Check formatting run: dart format --output=none --set-exit-if-changed . - name: Run lints @@ -179,10 +180,9 @@ jobs: - run: | sudo apt-get update -y sudo apt-get install -y ninja-build libgtk-3-dev libclang-dev - - run: dart pub get - run: dart run jni:setup - name: Get dependencies - run: dart pub get + run: flutter pub get - name: Run tests run: dart test --test-randomize-ordering-seed random - name: Install coverage @@ -226,7 +226,7 @@ jobs: distribution: 'zulu' java-version: '17' - run: Add-Content $env:GITHUB_PATH "$env:JAVA_HOME\bin\server" - - run: dart pub get + - run: flutter pub get - run: dart run jni:setup - run: dart test --test-randomize-ordering-seed random @@ -254,7 +254,7 @@ jobs: java-version: '17' - run: git config --global core.autocrlf true - run: Add-Content $env:GITHUB_PATH "$env:JAVA_HOME\bin\server" - - run: dart pub get + - run: flutter pub get - run: dart run jnigen:setup - name: Build summarizer run: dart run jnigen:setup @@ -278,7 +278,7 @@ jobs: with: distribution: 'temurin' java-version: '17' - - run: dart pub get + - run: flutter pub get - run: dart run jni:setup - run: dart test --test-randomize-ordering-seed random @@ -304,7 +304,7 @@ jobs: distribution: 'temurin' java-version: '17' - run: git config --global core.autocrlf true - - run: dart pub get + - run: flutter pub get - name: Build summarizer run: dart run jnigen:setup - name: Run tests @@ -393,7 +393,7 @@ jobs: sudo apt-get update -y sudo apt-get install -y ninja-build libgtk-3-dev clang-format - run: flutter config --enable-linux-desktop - - run: dart pub get + - run: flutter pub get - name: Generate full bindings run: dart run jnigen --config jnigen.yaml --override classes="org.apache.pdfbox" - name: Analyze generated bindings @@ -402,7 +402,7 @@ jobs: flutter analyze - name: Run standalone example run: | - dart pub get + flutter pub get dart run jni:setup wget 'https://raw.githubusercontent.com/dart-lang/site-www/a7f170389e210adc2aef810cc9a6fdbfa78059a5/src/guides/language/specifications/DartLangSpec-v2.2.pdf' dart run bin/pdf_info.dart DartLangSpec-v2.2.pdf diff --git a/.github/workflows/native.yaml b/.github/workflows/native.yaml index a4570e2b7..0e8851cee 100644 --- a/.github/workflows/native.yaml +++ b/.github/workflows/native.yaml @@ -31,7 +31,7 @@ jobs: fail-fast: false matrix: os: [ubuntu, macos, windows] - sdk: [stable, dev] + sdk: [stable, main] package: [native_assets_builder, native_assets_cli, native_toolchain_c] # Breaking changes temporarily break the example run on the Dart SDK until native_assets_builder is rolled into the Dart SDK dev build. breaking-change: [false] @@ -46,7 +46,7 @@ jobs: steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - - uses: dart-lang/setup-dart@e630b99d28a3b71860378cafdc2a067c71107f94 + - uses: subosito/flutter-action@74af56c5ed2697ba4621264652728e8d217e53d3 with: sdk: ${{ matrix.sdk }} @@ -57,89 +57,9 @@ jobs: - run: dart pub get - - run: dart pub get -C test_data/dart_app/ - if: ${{ matrix.package == 'native_assets_builder' }} - - - run: dart pub get -C test_data/native_add/ - if: ${{ matrix.package == 'native_assets_builder' }} - - - run: dart pub get -C test_data/native_add_duplicate/ - if: ${{ matrix.package == 'native_assets_builder' }} - - - run: dart pub get -C test_data/native_add_add_source/ - if: ${{ matrix.package == 'native_assets_builder' }} - - run: dart pub get -C test_data/native_add_version_skew/ if: ${{ matrix.package == 'native_assets_builder' }} - - run: dart pub get -C test_data/native_subtract/ - if: ${{ matrix.package == 'native_assets_builder' }} - - - run: dart pub get -C test_data/package_reading_metadata/ - if: ${{ matrix.package == 'native_assets_builder' }} - - - run: dart pub get -C test_data/package_with_metadata/ - if: ${{ matrix.package == 'native_assets_builder' }} - - - run: dart pub get -C test_data/simple_link/ - if: ${{ matrix.package == 'native_assets_builder' }} - - - run: dart pub get -C test_data/complex_link/ - if: ${{ matrix.package == 'native_assets_builder' }} - - - run: dart pub get -C test_data/complex_link_helper/ - if: ${{ matrix.package == 'native_assets_builder' }} - - - run: dart pub get -C test_data/drop_dylib_link/ - if: ${{ matrix.package == 'native_assets_builder' }} - - - run: dart pub get -C test_data/add_asset_link/ - if: ${{ matrix.package == 'native_assets_builder' }} - - - run: dart pub get -C test_data/transformer/ - if: ${{ matrix.package == 'native_assets_builder' }} - - - run: dart pub get -C test_data/treeshaking_native_libs/ - if: ${{ matrix.package == 'native_assets_builder' }} - - - run: dart pub get -C test_data/native_dynamic_linking/ - if: ${{ matrix.package == 'native_assets_builder' }} - - - run: dart pub get -C example/build/download_asset/ - if: ${{ matrix.package == 'native_assets_cli' }} - - - run: dart pub get -C example/build/native_dynamic_linking/ - if: ${{ matrix.package == 'native_assets_cli' }} - - - run: dart pub get -C example/build/native_add_app/ - if: ${{ matrix.package == 'native_assets_cli' }} - - - run: dart pub get -C example/build/native_add_library/ - if: ${{ matrix.package == 'native_assets_cli' }} - - - run: dart pub get -C example/build/use_dart_api/ - if: ${{ matrix.package == 'native_assets_cli' }} - - - run: dart pub get -C example/build/system_library/ - if: ${{ matrix.package == 'native_assets_cli' }} - - - run: dart pub get -C example/link/package_with_assets/ - if: ${{ matrix.package == 'native_assets_cli' }} - - - run: dart pub get -C example/link/app_with_asset_treeshaking/ - if: ${{ matrix.package == 'native_assets_cli' }} - - run: dart pub get -C test_data/fail_build/ - if: ${{ matrix.package == 'native_assets_builder' }} - - - run: dart pub get -C test_data/depend_on_fail_build/ - if: ${{ matrix.package == 'native_assets_builder' }} - - - run: dart pub get -C test_data/depend_on_fail_build_app/ - if: ${{ matrix.package == 'native_assets_builder' }} - - - run: dart pub get -C test_data/system_library/ - if: ${{ matrix.package == 'native_assets_builder' }} - - run: dart analyze --fatal-infos # Run on dev to ensure we're not depending on deprecated SDK things. @@ -156,32 +76,32 @@ jobs: # TODO(https://github.com/dart-lang/native/issues/190): Enable on windows once # https://github.com/dart-lang/sdk/commit/903eea6bfb8ee405587f0866a1d1e92eea45d29e # has landed in dev channel. - if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'dev' && !matrix.breaking-change && matrix.os != 'windows' }} + if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'main' && !matrix.breaking-change && matrix.os != 'windows' }} - run: dart --enable-experiment=native-assets test working-directory: pkgs/${{ matrix.package }}/example/build/native_add_app/ - if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'dev' && !matrix.breaking-change }} + if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'main' && !matrix.breaking-change }} - run: dart --enable-experiment=native-assets run working-directory: pkgs/${{ matrix.package }}/example/build/native_add_app/ - if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'dev' && !matrix.breaking-change }} + if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'main' && !matrix.breaking-change }} - run: dart --enable-experiment=native-assets build bin/native_add_app.dart working-directory: pkgs/${{ matrix.package }}/example/build/native_add_app/ - if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'dev' && !matrix.breaking-change }} + if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'main' && !matrix.breaking-change }} - run: ./native_add_app.exe working-directory: pkgs/${{ matrix.package }}/example/build/native_add_app/bin/native_add_app/ - if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'dev' && !matrix.breaking-change }} + if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'main' && !matrix.breaking-change }} - run: dart --enable-experiment=native-assets test working-directory: pkgs/${{ matrix.package }}/example/build/use_dart_api/ - if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'dev' && !matrix.breaking-change }} - + if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'main' && !matrix.breaking-change }} + # TODO(https://github.com/dart-lang/native/issues/1879): Enable this when the fix has rolled into Dart. # - run: dart --enable-experiment=native-assets test # working-directory: pkgs/${{ matrix.package }}/example/build/system_library/ - # if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'dev' && !matrix.breaking-change }} + # if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'main' && !matrix.breaking-change }} - name: Install coverage run: dart pub global activate coverage diff --git a/.github/workflows/native_toolchain_c.yaml b/.github/workflows/native_toolchain_c.yaml index 5af91a33d..d46ab7b34 100644 --- a/.github/workflows/native_toolchain_c.yaml +++ b/.github/workflows/native_toolchain_c.yaml @@ -34,7 +34,7 @@ jobs: steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - - uses: dart-lang/setup-dart@e630b99d28a3b71860378cafdc2a067c71107f94 + - uses: subosito/flutter-action@74af56c5ed2697ba4621264652728e8d217e53d3 with: sdk: ${{ matrix.sdk }} diff --git a/.github/workflows/objective_c.yaml b/.github/workflows/objective_c.yaml index 2c2ee64cb..7fc5cb61c 100644 --- a/.github/workflows/objective_c.yaml +++ b/.github/workflows/objective_c.yaml @@ -37,6 +37,8 @@ jobs: - id: install name: Install dependencies run: flutter pub get + - name: Install example dependencies + run: flutter pub get -C example - name: Check formatting run: dart format --output=none --set-exit-if-changed . if: always() && steps.install.outcome == 'success' @@ -57,6 +59,8 @@ jobs: channel: 'stable' - name: Install dependencies run: flutter pub get + - name: Install example dependencies + run: flutter pub get -C example - name: Build test dylib # TODO(https://github.com/dart-lang/native/issues/1068): Remove this. run: dart test/setup.dart diff --git a/.github/workflows/package_download_asset.yaml b/.github/workflows/package_download_asset.yaml index 96415865d..cc6d55cdd 100644 --- a/.github/workflows/package_download_asset.yaml +++ b/.github/workflows/package_download_asset.yaml @@ -32,7 +32,7 @@ jobs: steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - - uses: dart-lang/setup-dart@e630b99d28a3b71860378cafdc2a067c71107f94 + - uses: subosito/flutter-action@74af56c5ed2697ba4621264652728e8d217e53d3 with: sdk: stable @@ -61,7 +61,7 @@ jobs: dart tool/build.dart -olinux -aia32 dart tool/build.dart -olinux -ariscv64 dart tool/build.dart -olinux -ax64 - + - name: Build MacOS host if: matrix.os == 'macos' run: | @@ -70,7 +70,7 @@ jobs: dart tool/build.dart -oios -iiphoneos -aarm64 dart tool/build.dart -oios -iiphonesimulator -aarm64 dart tool/build.dart -oios -iiphonesimulator -ax64 - + - name: Build Windows host if: matrix.os == 'windows' run: | @@ -78,7 +78,7 @@ jobs: dart tool/build.dart -owindows -aarm64 dart tool/build.dart -owindows -aia32 dart tool/build.dart -owindows -ax64 - + - name: Upload artifacts uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 with: diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index c7f1d2cde..202fed347 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -17,4 +17,5 @@ jobs: pull-requests: write # Required for writing the pull request note with: write-comments: false - sdk: dev # use beta/stable after 3.3.0 + sdk: stable + use-flutter: true diff --git a/.github/workflows/swift2objc.yaml b/.github/workflows/swift2objc.yaml index ddd79dd8e..c027d1337 100644 --- a/.github/workflows/swift2objc.yaml +++ b/.github/workflows/swift2objc.yaml @@ -29,7 +29,7 @@ jobs: fail-fast: false steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - - uses: dart-lang/setup-dart@e630b99d28a3b71860378cafdc2a067c71107f94 + - uses: subosito/flutter-action@74af56c5ed2697ba4621264652728e8d217e53d3 with: sdk: stable - id: install @@ -50,7 +50,7 @@ jobs: working-directory: pkgs/swift2objc/ steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - - uses: dart-lang/setup-dart@e630b99d28a3b71860378cafdc2a067c71107f94 + - uses: subosito/flutter-action@74af56c5ed2697ba4621264652728e8d217e53d3 with: sdk: stable - name: Install dependencies diff --git a/analysis_options.yaml b/analysis_options.yaml new file mode 100644 index 000000000..131da91f1 --- /dev/null +++ b/analysis_options.yaml @@ -0,0 +1,42 @@ +include: package:dart_flutter_team_lints/analysis_options.yaml + +analyzer: + errors: + todo: ignore + + language: + strict-casts: true + strict-inference: true + strict-raw-types: true + + exclude: + # ffigen excludes + # Exclude anything that uses package:objective_c, due to flutter dependency. + # https://github.com/dart-lang/native/issues/1068 + - pkgs/ffigen/example/objective_c/** + - pkgs/ffigen/example/swift/** + - pkgs/ffigen/test_flutter/native_objc_test/** + - pkgs/ffigen/test/native_objc_test/** + - pkgs/ffigen/**/expected_bindings/** + + # jni excludes + - pkgs/jni/build/** + - pkgs/jni/third_party/** + + # jnigen excludes + - pkgs/jnigen/build/** + - pkgs/jnigen/example/** + + # objective_c excludes + - pkgs/objective_c/tool/data/extra_methods.dart + +linter: + rules: + prefer_final_locals: true + # ffigen rules + dangling_library_doc_comments: true + directives_ordering: true + prefer_final_in_for_each: true + use_super_parameters: true + # jni rules + prefer_const_declarations: true diff --git a/pkgs/ffi/CHANGELOG.md b/pkgs/ffi/CHANGELOG.md index fa7df106d..60ab6371f 100644 --- a/pkgs/ffi/CHANGELOG.md +++ b/pkgs/ffi/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.1.4 + +- Require Dart 3.6.0 or greater + ## 2.1.3 - Use `package:dart_flutter_team_lints`. diff --git a/pkgs/ffi/analysis_options.yaml b/pkgs/ffi/analysis_options.yaml deleted file mode 100644 index de90abda0..000000000 --- a/pkgs/ffi/analysis_options.yaml +++ /dev/null @@ -1,13 +0,0 @@ -include: package:dart_flutter_team_lints/analysis_options.yaml - -analyzer: - errors: - todo: ignore - language: - strict-casts: true - strict-inference: true - strict-raw-types: true - -linter: - rules: - - prefer_final_locals diff --git a/pkgs/ffi/example/main.dart b/pkgs/ffi/example/main.dart index 86149d9e6..f122f4056 100644 --- a/pkgs/ffi/example/main.dart +++ b/pkgs/ffi/example/main.dart @@ -15,7 +15,7 @@ void main() { // Use the Utf8 helper to encode zero-terminated UTF-8 strings in native // memory. - final myString = 'πŸ˜ŽπŸ‘ΏπŸ’¬'; + const myString = 'πŸ˜ŽπŸ‘ΏπŸ’¬'; final charPointer = myString.toNativeUtf8(); print('First byte is: ${charPointer.cast().value}'); print(charPointer.toDartString()); diff --git a/pkgs/ffi/pubspec.yaml b/pkgs/ffi/pubspec.yaml index 55261524e..fe999a5d8 100644 --- a/pkgs/ffi/pubspec.yaml +++ b/pkgs/ffi/pubspec.yaml @@ -1,5 +1,5 @@ name: ffi -version: 2.1.3 +version: 2.1.4 description: Utilities for working with Foreign Function Interface (FFI) code. repository: https://github.com/dart-lang/native/tree/main/pkgs/ffi issue_tracker: https://github.com/dart-lang/native/issues?q=is%3Aissue+is%3Aopen+label%3Apackage%3Affi @@ -10,8 +10,9 @@ topics: - codegen environment: - sdk: '>=3.3.0 <4.0.0' + sdk: ^3.6.0 +resolution: workspace dev_dependencies: - dart_flutter_team_lints: ^2.0.0 + dart_flutter_team_lints: ^3.2.0 test: ^1.21.2 diff --git a/pkgs/ffi/test/allocation_test.dart b/pkgs/ffi/test/allocation_test.dart index c95691bcf..209a6ce44 100644 --- a/pkgs/ffi/test/allocation_test.dart +++ b/pkgs/ffi/test/allocation_test.dart @@ -24,11 +24,11 @@ void main() async { test('testPointerAllocateTooLarge', () { // Try to allocate something that doesn't fit in 64 bit address space. - final maxInt = 9223372036854775807; // 2^63 - 1 + const maxInt = 9223372036854775807; // 2^63 - 1 expect(() => calloc(maxInt), throwsA(isA())); // Try to allocate almost the full 64 bit address space. - final maxInt1_8 = 1152921504606846975; // 2^60 -1 + const maxInt1_8 = 1152921504606846975; // 2^60 -1 expect(() => calloc(maxInt1_8), throwsA(isA())); }); diff --git a/pkgs/ffi/test/utf16_test.dart b/pkgs/ffi/test/utf16_test.dart index e64e4be89..475086728 100644 --- a/pkgs/ffi/test/utf16_test.dart +++ b/pkgs/ffi/test/utf16_test.dart @@ -9,7 +9,7 @@ import 'package:test/test.dart'; void main() { test('toUtf16 ASCII', () { - final start = 'Hello World!\n'; + const start = 'Hello World!\n'; final converted = start.toNativeUtf16().cast(); final end = converted.asTypedList(start.codeUnits.length + 1); final matcher = equals(start.codeUnits.toList()..add(0)); @@ -18,7 +18,7 @@ void main() { }); test('toUtf16 emoji', () { - final start = '😎'; + const start = '😎'; final converted = start.toNativeUtf16().cast(); final length = start.codeUnits.length; final end = converted.cast().asTypedList(length + 1); @@ -28,7 +28,7 @@ void main() { }); test('from Utf16 ASCII', () { - final string = 'Hello World!\n'; + const string = 'Hello World!\n'; final utf16Pointer = string.toNativeUtf16(); final stringAgain = utf16Pointer.toDartString(); expect(stringAgain, string); @@ -36,7 +36,7 @@ void main() { }); test('from Utf16 emoji', () { - final string = '😎'; + const string = '😎'; final utf16Pointer = string.toNativeUtf16(); final stringAgain = utf16Pointer.toDartString(); expect(stringAgain, string); @@ -44,7 +44,7 @@ void main() { }); test('zero bytes', () { - final string = 'Hello\x00World!\n'; + const string = 'Hello\x00World!\n'; final utf16Pointer = string.toNativeUtf16(); final stringAgain = utf16Pointer.toDartString(length: 13); expect(stringAgain, string); @@ -52,14 +52,14 @@ void main() { }); test('length', () { - final string = 'Hello'; + const string = 'Hello'; final utf16Pointer = string.toNativeUtf16(); expect(utf16Pointer.length, 5); calloc.free(utf16Pointer); }); test('fromUtf8 with negative length', () { - final string = 'Hello'; + const string = 'Hello'; final utf16 = string.toNativeUtf16(); expect(() => utf16.toDartString(length: -1), throwsRangeError); calloc.free(utf16); diff --git a/pkgs/ffi/test/utf8_test.dart b/pkgs/ffi/test/utf8_test.dart index 80ccfc90d..25f88cc36 100644 --- a/pkgs/ffi/test/utf8_test.dart +++ b/pkgs/ffi/test/utf8_test.dart @@ -17,7 +17,7 @@ Pointer _bytesFromList(List ints) { void main() { test('toUtf8 ASCII', () { - final start = 'Hello World!\n'; + const start = 'Hello World!\n'; final converted = start.toNativeUtf8().cast(); final end = converted.asTypedList(start.length + 1); final matcher = equals( @@ -36,7 +36,7 @@ void main() { }); test('toUtf8 emoji', () { - final start = 'πŸ˜ŽπŸ‘ΏπŸ’¬'; + const start = 'πŸ˜ŽπŸ‘ΏπŸ’¬'; final converted = start.toNativeUtf8().cast(); final length = converted.length; final end = converted.cast().asTypedList(length + 1); @@ -100,7 +100,7 @@ void main() { }); test('length', () { - final string = 'Hello'; + const string = 'Hello'; final utf8Pointer = string.toNativeUtf8(); expect(utf8Pointer.length, 5); calloc.free(utf8Pointer); @@ -117,7 +117,7 @@ void main() { }); test('zero terminated', () { - final string = 'Hello'; + const string = 'Hello'; final utf8Pointer = string.toNativeUtf8(); final charPointer = utf8Pointer.cast(); expect(charPointer[utf8Pointer.length], 0); diff --git a/pkgs/ffigen/CHANGELOG.md b/pkgs/ffigen/CHANGELOG.md index 963097449..963a6447a 100644 --- a/pkgs/ffigen/CHANGELOG.md +++ b/pkgs/ffigen/CHANGELOG.md @@ -1,6 +1,7 @@ ## 17.0.0-wip - Use package:objective_c 5.0.0 +- Require Dart 3.6.0 or greater ## 16.1.0 diff --git a/pkgs/ffigen/analysis_options.yaml b/pkgs/ffigen/analysis_options.yaml deleted file mode 100644 index 278f36d25..000000000 --- a/pkgs/ffigen/analysis_options.yaml +++ /dev/null @@ -1,30 +0,0 @@ -# Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file -# for details. All rights reserved. Use of this source code is governed by a -# BSD-style license that can be found in the LICENSE file. - -include: package:dart_flutter_team_lints/analysis_options.yaml - -analyzer: - errors: - todo: ignore - exclude: - - 'test/**_expected*' - - # Exclude anything that uses package:objective_c, due to flutter dependency. - # https://github.com/dart-lang/native/issues/1068 - - example/objective_c/** - - example/swift/** - - test_flutter/native_objc_test/** - - test/native_objc_test/** - language: - strict-casts: true - strict-inference: true - strict-raw-types: true - -linter: - rules: - dangling_library_doc_comments: true - directives_ordering: true - prefer_final_locals: true - prefer_final_in_for_each: true - use_super_parameters: true diff --git a/pkgs/ffigen/example/c_json/pubspec.yaml b/pkgs/ffigen/example/c_json/pubspec.yaml index 4694200a0..2268d1c79 100644 --- a/pkgs/ffigen/example/c_json/pubspec.yaml +++ b/pkgs/ffigen/example/c_json/pubspec.yaml @@ -5,8 +5,9 @@ name: c_json_example environment: - sdk: '>=3.2.0 <4.0.0' + sdk: ^3.6.0 +resolution: workspace dependencies: ffi: ^2.0.1 path: ^1.8.0 @@ -14,4 +15,3 @@ dependencies: dev_dependencies: ffigen: path: '../../' - lints: ^2.0.1 diff --git a/pkgs/ffigen/example/ffinative/pubspec.yaml b/pkgs/ffigen/example/ffinative/pubspec.yaml index 226c26cb6..a6eea820c 100644 --- a/pkgs/ffigen/example/ffinative/pubspec.yaml +++ b/pkgs/ffigen/example/ffinative/pubspec.yaml @@ -5,11 +5,12 @@ name: ffinative_example environment: - sdk: '>=3.3.0-252.0.dev <4.0.0' + sdk: ^3.6.0 +resolution: workspace dependencies: ffi: ^2.0.1 + dev_dependencies: ffigen: path: '../../' - lints: ^2.0.0 diff --git a/pkgs/ffigen/example/libclang-example/pubspec.yaml b/pkgs/ffigen/example/libclang-example/pubspec.yaml index e27a2b4ca..571962e00 100644 --- a/pkgs/ffigen/example/libclang-example/pubspec.yaml +++ b/pkgs/ffigen/example/libclang-example/pubspec.yaml @@ -5,11 +5,12 @@ name: libclang_example environment: - sdk: '>=3.2.0 <4.0.0' + sdk: ^3.6.0 +resolution: workspace dependencies: ffi: ^2.0.1 + dev_dependencies: ffigen: path: '../../' - lints: ^2.0.1 diff --git a/pkgs/ffigen/example/objective_c/pubspec.yaml b/pkgs/ffigen/example/objective_c/pubspec.yaml index 8ce0791fc..698d8d26a 100644 --- a/pkgs/ffigen/example/objective_c/pubspec.yaml +++ b/pkgs/ffigen/example/objective_c/pubspec.yaml @@ -5,18 +5,14 @@ name: objective_c_example environment: - sdk: '>=3.2.0 <4.0.0' + sdk: ^3.6.0 +resolution: workspace dependencies: args: ^2.6.0 ffi: ^2.0.1 - objective_c: ^0.0.1 + objective_c: ^5.0.0-wip dev_dependencies: ffigen: path: ../../ - lints: ^2.0.0 - -dependency_overrides: - objective_c: - path: ../../../objective_c/ diff --git a/pkgs/ffigen/example/shared_bindings/pubspec.yaml b/pkgs/ffigen/example/shared_bindings/pubspec.yaml index 42a6120ef..52495fa35 100644 --- a/pkgs/ffigen/example/shared_bindings/pubspec.yaml +++ b/pkgs/ffigen/example/shared_bindings/pubspec.yaml @@ -5,8 +5,9 @@ name: shared_bindings environment: - sdk: '>=3.2.0 <4.0.0' + sdk: ^3.6.0 +resolution: workspace dependencies: cli_util: ^0.4.2 ffi: ^2.0.1 @@ -15,4 +16,3 @@ dependencies: dev_dependencies: ffigen: path: '../../' - lints: ^2.0.1 diff --git a/pkgs/ffigen/example/simple/pubspec.yaml b/pkgs/ffigen/example/simple/pubspec.yaml index f1912eb6b..c88242ccd 100644 --- a/pkgs/ffigen/example/simple/pubspec.yaml +++ b/pkgs/ffigen/example/simple/pubspec.yaml @@ -5,11 +5,12 @@ name: simple_example environment: - sdk: '>=3.2.0 <4.0.0' + sdk: ^3.6.0 +resolution: workspace dependencies: ffi: ^2.0.1 + dev_dependencies: ffigen: path: '../../' - lints: ^2.0.1 diff --git a/pkgs/ffigen/example/swift/pubspec.yaml b/pkgs/ffigen/example/swift/pubspec.yaml index 1194dde57..1de7b2101 100644 --- a/pkgs/ffigen/example/swift/pubspec.yaml +++ b/pkgs/ffigen/example/swift/pubspec.yaml @@ -5,18 +5,14 @@ name: swift_example environment: - sdk: ">=3.2.0-42.1.beta <4.0.0" + sdk: ^3.6.0 +resolution: workspace dependencies: args: ^2.6.0 ffi: ^2.0.1 - objective_c: ^0.0.1 + objective_c: ^5.0.0-wip dev_dependencies: ffigen: path: ../../ - lints: ^2.0.0 - -dependency_overrides: - objective_c: - path: ../../../objective_c/ diff --git a/pkgs/ffigen/lib/ffigen.dart b/pkgs/ffigen/lib/ffigen.dart index aa1f364e5..23fc43a1d 100644 --- a/pkgs/ffigen/lib/ffigen.dart +++ b/pkgs/ffigen/lib/ffigen.dart @@ -6,7 +6,7 @@ /// /// For most use cases the YAML based API is simpler. See /// https://pub.dev/packages/ffigen for details. -library ffigen; +library; export 'src/config_provider.dart' show diff --git a/pkgs/ffigen/lib/src/code_generator.dart b/pkgs/ffigen/lib/src/code_generator.dart index 0197d5c04..6a1a3552c 100644 --- a/pkgs/ffigen/lib/src/code_generator.dart +++ b/pkgs/ffigen/lib/src/code_generator.dart @@ -3,7 +3,7 @@ // BSD-style license that can be found in the LICENSE file. /// Generates FFI bindings for a given Library. -library code_generator; +library; export 'code_generator/binding.dart'; export 'code_generator/compound.dart'; diff --git a/pkgs/ffigen/lib/src/code_generator/func_type.dart b/pkgs/ffigen/lib/src/code_generator/func_type.dart index f0c6d9b9e..431ebd34f 100644 --- a/pkgs/ffigen/lib/src/code_generator/func_type.dart +++ b/pkgs/ffigen/lib/src/code_generator/func_type.dart @@ -136,7 +136,7 @@ class FunctionType extends Type { } } -/// Represents a NativeFunction. +/// Represents a `NativeFunction`. class NativeFunc extends Type { // Either a FunctionType or a Typealias of a FunctionType. final Type _type; diff --git a/pkgs/ffigen/lib/src/code_generator/writer.dart b/pkgs/ffigen/lib/src/code_generator/writer.dart index 7b44ab451..8c33bdd60 100644 --- a/pkgs/ffigen/lib/src/code_generator/writer.dart +++ b/pkgs/ffigen/lib/src/code_generator/writer.dart @@ -190,7 +190,7 @@ class Writer { /// Finding a unique prefix for Array Helper Classes and store into /// [_arrayHelperClassPrefix]. - final base = 'ArrayHelper'; + const base = 'ArrayHelper'; _arrayHelperClassPrefix = base; var suffixInt = 0; for (var i = 0; i < allNameSet.length; i++) { diff --git a/pkgs/ffigen/lib/src/config_provider.dart b/pkgs/ffigen/lib/src/config_provider.dart index 8feb6fe89..dbf573169 100644 --- a/pkgs/ffigen/lib/src/config_provider.dart +++ b/pkgs/ffigen/lib/src/config_provider.dart @@ -3,7 +3,7 @@ // BSD-style license that can be found in the LICENSE file. /// Creates config object used by other sub_modules. -library config_provider; +library; export 'config_provider/config.dart'; export 'config_provider/config_types.dart'; diff --git a/pkgs/ffigen/lib/src/header_parser.dart b/pkgs/ffigen/lib/src/header_parser.dart index 92df4ac52..d4f8b623e 100644 --- a/pkgs/ffigen/lib/src/header_parser.dart +++ b/pkgs/ffigen/lib/src/header_parser.dart @@ -5,6 +5,6 @@ /// Generates a Library (code_generator) /// /// Parses the header files AST using clang_bindings. -library header_parser; +library; export 'header_parser/parser.dart' show parse; diff --git a/pkgs/ffigen/lib/src/header_parser/sub_parsers/compounddecl_parser.dart b/pkgs/ffigen/lib/src/header_parser/sub_parsers/compounddecl_parser.dart index 5e8c62fff..924c689eb 100644 --- a/pkgs/ffigen/lib/src/header_parser/sub_parsers/compounddecl_parser.dart +++ b/pkgs/ffigen/lib/src/header_parser/sub_parsers/compounddecl_parser.dart @@ -278,7 +278,7 @@ void _compoundMembersVisitor( // Anonymous members are always unnamed. To avoid environment- // dependent naming issues with the generated code, we explicitly // use the empty string as spelling. - final spelling = ''; + const spelling = ''; parsed.compound.members.add( CompoundMember( diff --git a/pkgs/ffigen/lib/src/header_parser/sub_parsers/macro_parser.dart b/pkgs/ffigen/lib/src/header_parser/sub_parsers/macro_parser.dart index 5ab325906..1efc6b605 100644 --- a/pkgs/ffigen/lib/src/header_parser/sub_parsers/macro_parser.dart +++ b/pkgs/ffigen/lib/src/header_parser/sub_parsers/macro_parser.dart @@ -167,7 +167,7 @@ late Set _macroVarNames; /// Creates a temporary file for parsing macros in current directory. File createFileForMacros() { final fileNameBase = p.normalize(p.join(strings.tmpDir, 'temp_for_macros')); - final fileExt = 'hpp'; + const fileExt = 'hpp'; // Find a filename which doesn't already exist. var file = File('$fileNameBase.$fileExt'); diff --git a/pkgs/ffigen/lib/src/header_parser/utils.dart b/pkgs/ffigen/lib/src/header_parser/utils.dart index 42b22663c..2e4cacaf7 100644 --- a/pkgs/ffigen/lib/src/header_parser/utils.dart +++ b/pkgs/ffigen/lib/src/header_parser/utils.dart @@ -430,7 +430,7 @@ class Stack { class IncrementalNamer { final _incrementedStringCounters = {}; - /// Appends `` to base. is incremented on every call. + /// Appends `` to base. `` is incremented on every call. String name(String base) { var i = _incrementedStringCounters[base] ?? 0; i++; diff --git a/pkgs/ffigen/pubspec.yaml b/pkgs/ffigen/pubspec.yaml index 70c13de76..4e6a3132a 100644 --- a/pkgs/ffigen/pubspec.yaml +++ b/pkgs/ffigen/pubspec.yaml @@ -16,8 +16,9 @@ topics: - codegen environment: - sdk: '>=3.4.0 <4.0.0' + sdk: ^3.6.0 +resolution: workspace dependencies: args: ^2.6.0 cli_util: ^0.4.2 @@ -38,15 +39,11 @@ dependencies: dev_dependencies: async: ^2.11.0 coverage: ^1.11.0 - dart_flutter_team_lints: ^2.0.0 + dart_flutter_team_lints: ^3.2.0 json_schema: ^5.1.1 leak_tracker: ^10.0.7 - objective_c: ^5.0.0 - test: ^1.16.2 - -dependency_overrides: # package:objective_c has a flutter dependency, so `dart test` must be run # using the dart from the flutter SDK. # See https://github.com/dart-lang/native/issues/1068 - objective_c: - path: ../objective_c/ + objective_c: ^5.0.0-wip + test: ^1.16.2 diff --git a/pkgs/ffigen/test/code_generator_tests/code_generator_test.dart b/pkgs/ffigen/test/code_generator_tests/code_generator_test.dart index 182f8b614..dcd7f060a 100644 --- a/pkgs/ffigen/test/code_generator_tests/code_generator_test.dart +++ b/pkgs/ffigen/test/code_generator_tests/code_generator_test.dart @@ -601,7 +601,7 @@ void main() { }); test('Adds Native symbol on mismatch', () { - final nativeConfig = const FfiNativeConfig(enabled: true); + const nativeConfig = FfiNativeConfig(enabled: true); final library = Library( name: 'init_dylib', header: diff --git a/pkgs/ffigen/test/config_tests/compiler_opts_test.dart b/pkgs/ffigen/test/config_tests/compiler_opts_test.dart index 97ed605f0..6eec6e41a 100644 --- a/pkgs/ffigen/test/config_tests/compiler_opts_test.dart +++ b/pkgs/ffigen/test/config_tests/compiler_opts_test.dart @@ -13,7 +13,7 @@ import '../test_utils.dart'; void main() { group('compiler_opts_test', () { test('Compiler Opts', () { - final opts = + const opts = '''--option value "in double quotes" 'in single quotes' -tab=separated'''; final list = compilerOptsToList(opts); expect( diff --git a/pkgs/ffigen/test/native_test/native_test.dart b/pkgs/ffigen/test/native_test/native_test.dart index d186065e5..5a994ef4b 100644 --- a/pkgs/ffigen/test/native_test/native_test.dart +++ b/pkgs/ffigen/test/native_test/native_test.dart @@ -155,7 +155,7 @@ void main() { }); test('Enum1 is a Dart enum', () { - final enum1 = Enum1.enum1Value1; + const enum1 = Enum1.enum1Value1; final result = bindings.funcWithEnum1(enum1); expect(enum1, isA()); expect(enum1.value, isA()); @@ -163,7 +163,7 @@ void main() { }); test('Enum2 is a Dart integer', () { - final enum2 = Enum2.enum2Value1; + const enum2 = Enum2.enum2Value1; final result = bindings.funcWithEnum2(enum2); expect(enum2, isA()); expect(result, enum2); diff --git a/pkgs/ffigen/test/rename_tests/rename_test.dart b/pkgs/ffigen/test/rename_tests/rename_test.dart index c9b820699..c4604bfee 100644 --- a/pkgs/ffigen/test/rename_tests/rename_test.dart +++ b/pkgs/ffigen/test/rename_tests/rename_test.dart @@ -10,10 +10,10 @@ import 'package:test/test.dart'; import '../test_utils.dart'; late Library actual, expected; -final functionPrefix = 'fff'; -final structPrefix = 'sss'; -final enumPrefix = 'eee'; -final macroPrefix = 'mmm'; +const functionPrefix = 'fff'; +const structPrefix = 'sss'; +const enumPrefix = 'eee'; +const macroPrefix = 'mmm'; void main() { group('rename_test', () { diff --git a/pkgs/ffigen/test_flutter/flutter_template_tests/flutter_plugin_ffi_test.dart b/pkgs/ffigen/test_flutter/flutter_template_tests/flutter_plugin_ffi_test.dart index e8e273475..d48908d1e 100644 --- a/pkgs/ffigen/test_flutter/flutter_template_tests/flutter_plugin_ffi_test.dart +++ b/pkgs/ffigen/test_flutter/flutter_template_tests/flutter_plugin_ffi_test.dart @@ -12,7 +12,7 @@ import 'package:test/test.dart'; void main() { Uri? tempDirUri; - final projectName = 'test_project'; + const projectName = 'test_project'; setUp(() async { tempDirUri = (await Directory.current.createTemp('.temp_test_')).uri; diff --git a/pkgs/jni/CHANGELOG.md b/pkgs/jni/CHANGELOG.md index db31af1ea..668ecd54d 100644 --- a/pkgs/jni/CHANGELOG.md +++ b/pkgs/jni/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.13.1 + +- Require Dart 3.6.0 or greater + ## 0.13.0 - **Breaking Change**: Separated primitive arrays from object arrays. diff --git a/pkgs/jni/analysis_options.yaml b/pkgs/jni/analysis_options.yaml deleted file mode 100644 index fda5f01ac..000000000 --- a/pkgs/jni/analysis_options.yaml +++ /dev/null @@ -1,16 +0,0 @@ -include: package:dart_flutter_team_lints/analysis_options.yaml - -analyzer: - errors: - todo: ignore - exclude: [build/**, third_party/**] - language: - strict-casts: true - strict-inference: true - strict-raw-types: true - -linter: - rules: - dangling_library_doc_comments: true - prefer_final_locals: true - prefer_const_declarations: true diff --git a/pkgs/jni/bin/setup.dart b/pkgs/jni/bin/setup.dart index 6ad9e06e0..90d5d46c0 100644 --- a/pkgs/jni/bin/setup.dart +++ b/pkgs/jni/bin/setup.dart @@ -116,7 +116,7 @@ Future> findDependencySources() async { throw UnsupportedError('Please run the command from project root.'); } final sources = {}; - for (var package in packageConfig.packages) { + for (final package in packageConfig.packages) { final src = package.root.resolve('src/'); final cmakeLists = src.resolve('CMakeLists.txt'); final cmakeListsFile = File.fromUri(cmakeLists); @@ -168,7 +168,7 @@ void main(List arguments) async { } final sources = options.sources; - for (var packageName in options.packages) { + for (final packageName in options.packages) { // It's assumed C FFI sources are in "src/" relative to package root. sources.add(await findSources(packageName, 'src')); } @@ -207,7 +207,7 @@ void main(List arguments) async { ); } - for (var srcPath in sources) { + for (final srcPath in sources) { final srcDir = Directory(srcPath); if (!srcDir.existsSync()) { stderr.writeln('Directory $srcPath does not exist'); @@ -243,7 +243,7 @@ void main(List arguments) async { final dllDirUri = Platform.isWindows ? tempDir.uri.resolve('Debug') : tempDir.uri; final dllDir = Directory.fromUri(dllDirUri); - for (var entry in dllDir.listSync()) { + for (final entry in dllDir.listSync()) { verboseLog(entry.toString()); final dllSuffix = Platform.isWindows ? 'dll' diff --git a/pkgs/jni/lib/src/accessors.dart b/pkgs/jni/lib/src/accessors.dart index 548acb4cd..b8429b835 100644 --- a/pkgs/jni/lib/src/accessors.dart +++ b/pkgs/jni/lib/src/accessors.dart @@ -62,6 +62,11 @@ extension JniResultMethods on JniResult { return value.l; } + JObjectRefType get referenceType { + check(); + return JObjectRefType.fromValue(value.i); + } + JReference get reference { final pointer = objectPointer; return pointer == nullptr ? jNullReference : JGlobalReference(pointer); diff --git a/pkgs/jni/lib/src/errors.dart b/pkgs/jni/lib/src/errors.dart index af1ab32f0..88c85393e 100644 --- a/pkgs/jni/lib/src/errors.dart +++ b/pkgs/jni/lib/src/errors.dart @@ -20,25 +20,24 @@ final class DoubleReleaseError extends StateError { DoubleReleaseError() : super('Double release error'); } -/// Represents JNI errors that might be returned by methods like -/// `JNI_CreateJavaVM`. +/// Represents JNI errors that might be returned by methods like `CreateJavaVM`. sealed class JniError extends Error { static const _errors = { - JniErrorCode.JNI_ERR: JniGenericError.new, - JniErrorCode.JNI_EDETACHED: JniThreadDetachedError.new, - JniErrorCode.JNI_EVERSION: JniVersionError.new, - JniErrorCode.JNI_ENOMEM: JniOutOfMemoryError.new, - JniErrorCode.JNI_EEXIST: JniVmExistsError.new, - JniErrorCode.JNI_EINVAL: JniArgumentError.new, + JniErrorCode.ERR: JniGenericError.new, + JniErrorCode.EDETACHED: JniThreadDetachedError.new, + JniErrorCode.EVERSION: JniVersionError.new, + JniErrorCode.ENOMEM: JniOutOfMemoryError.new, + JniErrorCode.EEXIST: JniVmExistsError.new, + JniErrorCode.EINVAL: JniArgumentError.new, }; final String message; JniError(this.message); - factory JniError.of(int status) { + factory JniError.of(JniErrorCode status) { if (!_errors.containsKey(status)) { - status = JniErrorCode.JNI_ERR; + status = JniErrorCode.ERR; } return _errors[status]!(); } diff --git a/pkgs/jni/lib/src/jni.dart b/pkgs/jni/lib/src/jni.dart index 29423de00..ec9502595 100644 --- a/pkgs/jni/lib/src/jni.dart +++ b/pkgs/jni/lib/src/jni.dart @@ -81,7 +81,7 @@ abstract final class Jni { List jvmOptions = const [], List classPath = const [], bool ignoreUnrecognized = false, - int jniVersion = JniVersions.JNI_VERSION_1_6, + JniVersions jniVersion = JniVersions.VERSION_1_6, }) { final status = spawnIfNotExists( dylibDir: dylibDir, @@ -105,7 +105,7 @@ abstract final class Jni { List jvmOptions = const [], List classPath = const [], bool ignoreUnrecognized = false, - int jniVersion = JniVersions.JNI_VERSION_1_6, + JniVersions jniVersion = JniVersions.VERSION_1_6, }) => using((arena) { _dylibDir = dylibDir; @@ -118,9 +118,9 @@ abstract final class Jni { allocator: arena, ); final status = _bindings.SpawnJvm(jvmArgs); - if (status == JniErrorCode.JNI_OK) { + if (status == JniErrorCode.OK) { return true; - } else if (status == DART_JNI_SINGLETON_EXISTS) { + } else if (status == JniErrorCode.SINGLETON_EXISTS) { return false; } else { throw JniError.of(status); @@ -132,7 +132,7 @@ abstract final class Jni { List classPath = const [], String? dylibPath, bool ignoreUnrecognized = false, - int version = JniVersions.JNI_VERSION_1_6, + JniVersions version = JniVersions.VERSION_1_6, required Allocator allocator, }) { final args = allocator(); @@ -159,7 +159,7 @@ abstract final class Jni { args.ref.nOptions = count; } args.ref.ignoreUnrecognized = ignoreUnrecognized ? 1 : 0; - args.ref.version = version; + args.ref.version = version.value; return args; } @@ -284,7 +284,7 @@ extension ProtectedJniExtensions on Jni { static Dart_FinalizableHandle newJObjectFinalizableHandle( Object object, Pointer reference, - int refType, + JObjectRefType refType, ) { ensureInitialized(); return Jni._bindings diff --git a/pkgs/jni/lib/src/third_party/global_env_extensions.dart b/pkgs/jni/lib/src/third_party/global_env_extensions.dart index 4563d629c..60dc7955a 100644 --- a/pkgs/jni/lib/src/third_party/global_env_extensions.dart +++ b/pkgs/jni/lib/src/third_party/global_env_extensions.dart @@ -45,14 +45,17 @@ class GlobalJniEnv { late final _GetVersion = ptr.ref.GetVersion.asFunction(isLeaf: true); - int GetVersion() => _GetVersion().integer; + DartJIntMarker GetVersion() => _GetVersion().integer; late final _DefineClass = ptr.ref.DefineClass.asFunction< - JniClassLookupResult Function(ffi.Pointer name, - JObjectPtr loader, ffi.Pointer buf, int bufLen)>(); + JniClassLookupResult Function( + ffi.Pointer name, + JObjectPtr loader, + ffi.Pointer buf, + DartJIntMarker bufLen)>(); JClassPtr DefineClass(ffi.Pointer name, JObjectPtr loader, - ffi.Pointer buf, int bufLen) => + ffi.Pointer buf, DartJIntMarker bufLen) => _DefineClass(name, loader, buf, bufLen).value; late final _FindClass = ptr.ref.FindClass @@ -74,10 +77,11 @@ class GlobalJniEnv { _FromReflectedField(field).fieldID; late final _ToReflectedMethod = ptr.ref.ToReflectedMethod.asFunction< - JniResult Function(JClassPtr cls, JMethodIDPtr methodId, int isStatic)>(); + JniResult Function( + JClassPtr cls, JMethodIDPtr methodId, DartJBooleanMarker isStatic)>(); JObjectPtr ToReflectedMethod( - JClassPtr cls, JMethodIDPtr methodId, int isStatic) => + JClassPtr cls, JMethodIDPtr methodId, DartJBooleanMarker isStatic) => _ToReflectedMethod(cls, methodId, isStatic).objectPointer; late final _GetSuperclass = ptr.ref.GetSuperclass @@ -93,21 +97,22 @@ class GlobalJniEnv { _IsAssignableFrom(clazz1, clazz2).boolean; late final _ToReflectedField = ptr.ref.ToReflectedField.asFunction< - JniResult Function(JClassPtr cls, JFieldIDPtr fieldID, int isStatic)>(); + JniResult Function( + JClassPtr cls, JFieldIDPtr fieldID, DartJBooleanMarker isStatic)>(); JObjectPtr ToReflectedField( - JClassPtr cls, JFieldIDPtr fieldID, int isStatic) => + JClassPtr cls, JFieldIDPtr fieldID, DartJBooleanMarker isStatic) => _ToReflectedField(cls, fieldID, isStatic).objectPointer; late final _Throw = ptr.ref.Throw.asFunction(); - int Throw(JThrowablePtr obj) => _Throw(obj).integer; + DartJIntMarker Throw(JThrowablePtr obj) => _Throw(obj).integer; late final _ThrowNew = ptr.ref.ThrowNew.asFunction< JniResult Function(JClassPtr clazz, ffi.Pointer message)>(); - int ThrowNew(JClassPtr clazz, ffi.Pointer message) => + DartJIntMarker ThrowNew(JClassPtr clazz, ffi.Pointer message) => _ThrowNew(clazz, message).integer; late final _ExceptionOccurred = @@ -130,10 +135,11 @@ class GlobalJniEnv { void FatalError(ffi.Pointer msg) => _FatalError(msg).check(); - late final _PushLocalFrame = - ptr.ref.PushLocalFrame.asFunction(); + late final _PushLocalFrame = ptr.ref.PushLocalFrame + .asFunction(); - int PushLocalFrame(int capacity) => _PushLocalFrame(capacity).integer; + DartJIntMarker PushLocalFrame(DartJIntMarker capacity) => + _PushLocalFrame(capacity).integer; late final _PopLocalFrame = ptr.ref.PopLocalFrame.asFunction(); @@ -170,9 +176,9 @@ class GlobalJniEnv { JObjectPtr NewLocalRef(JObjectPtr obj) => _NewLocalRef(obj).objectPointer; late final _EnsureLocalCapacity = ptr.ref.EnsureLocalCapacity - .asFunction(); + .asFunction(); - int EnsureLocalCapacity(int capacity) => + DartJIntMarker EnsureLocalCapacity(DartJIntMarker capacity) => _EnsureLocalCapacity(capacity).integer; late final _AllocObject = @@ -244,98 +250,98 @@ class GlobalJniEnv { late final _CallByteMethod = ptr.ref.CallByteMethod .asFunction(); - int CallByteMethod(JObjectPtr obj, JMethodIDPtr methodID) => + DartJByteMarker CallByteMethod(JObjectPtr obj, JMethodIDPtr methodID) => _CallByteMethod(obj, methodID).byte; late final _CallByteMethodA = ptr.ref.CallByteMethodA.asFunction< JniResult Function( JObjectPtr obj, JMethodIDPtr methodID, ffi.Pointer args)>(); - int CallByteMethodA( + DartJByteMarker CallByteMethodA( JObjectPtr obj, JMethodIDPtr methodID, ffi.Pointer args) => _CallByteMethodA(obj, methodID, args).byte; late final _CallCharMethod = ptr.ref.CallCharMethod .asFunction(); - int CallCharMethod(JObjectPtr obj, JMethodIDPtr methodID) => + DartJCharMarker CallCharMethod(JObjectPtr obj, JMethodIDPtr methodID) => _CallCharMethod(obj, methodID).char; late final _CallCharMethodA = ptr.ref.CallCharMethodA.asFunction< JniResult Function( JObjectPtr obj, JMethodIDPtr methodID, ffi.Pointer args)>(); - int CallCharMethodA( + DartJCharMarker CallCharMethodA( JObjectPtr obj, JMethodIDPtr methodID, ffi.Pointer args) => _CallCharMethodA(obj, methodID, args).char; late final _CallShortMethod = ptr.ref.CallShortMethod .asFunction(); - int CallShortMethod(JObjectPtr obj, JMethodIDPtr methodID) => + DartJShortMarker CallShortMethod(JObjectPtr obj, JMethodIDPtr methodID) => _CallShortMethod(obj, methodID).short; late final _CallShortMethodA = ptr.ref.CallShortMethodA.asFunction< JniResult Function( JObjectPtr obj, JMethodIDPtr methodID, ffi.Pointer args)>(); - int CallShortMethodA( + DartJShortMarker CallShortMethodA( JObjectPtr obj, JMethodIDPtr methodID, ffi.Pointer args) => _CallShortMethodA(obj, methodID, args).short; late final _CallIntMethod = ptr.ref.CallIntMethod .asFunction(); - int CallIntMethod(JObjectPtr obj, JMethodIDPtr methodID) => + DartJIntMarker CallIntMethod(JObjectPtr obj, JMethodIDPtr methodID) => _CallIntMethod(obj, methodID).integer; late final _CallIntMethodA = ptr.ref.CallIntMethodA.asFunction< JniResult Function( JObjectPtr obj, JMethodIDPtr methodID, ffi.Pointer args)>(); - int CallIntMethodA( + DartJIntMarker CallIntMethodA( JObjectPtr obj, JMethodIDPtr methodID, ffi.Pointer args) => _CallIntMethodA(obj, methodID, args).integer; late final _CallLongMethod = ptr.ref.CallLongMethod .asFunction(); - int CallLongMethod(JObjectPtr obj, JMethodIDPtr methodID) => + DartJLongMarker CallLongMethod(JObjectPtr obj, JMethodIDPtr methodID) => _CallLongMethod(obj, methodID).long; late final _CallLongMethodA = ptr.ref.CallLongMethodA.asFunction< JniResult Function( JObjectPtr obj, JMethodIDPtr methodID, ffi.Pointer args)>(); - int CallLongMethodA( + DartJLongMarker CallLongMethodA( JObjectPtr obj, JMethodIDPtr methodID, ffi.Pointer args) => _CallLongMethodA(obj, methodID, args).long; late final _CallFloatMethod = ptr.ref.CallFloatMethod .asFunction(); - double CallFloatMethod(JObjectPtr obj, JMethodIDPtr methodID) => + DartJFloatMarker CallFloatMethod(JObjectPtr obj, JMethodIDPtr methodID) => _CallFloatMethod(obj, methodID).float; late final _CallFloatMethodA = ptr.ref.CallFloatMethodA.asFunction< JniResult Function( JObjectPtr obj, JMethodIDPtr methodID, ffi.Pointer args)>(); - double CallFloatMethodA( + DartJFloatMarker CallFloatMethodA( JObjectPtr obj, JMethodIDPtr methodID, ffi.Pointer args) => _CallFloatMethodA(obj, methodID, args).float; late final _CallDoubleMethod = ptr.ref.CallDoubleMethod .asFunction(); - double CallDoubleMethod(JObjectPtr obj, JMethodIDPtr methodID) => + DartJDoubleMarker CallDoubleMethod(JObjectPtr obj, JMethodIDPtr methodID) => _CallDoubleMethod(obj, methodID).doubleFloat; late final _CallDoubleMethodA = ptr.ref.CallDoubleMethodA.asFunction< JniResult Function( JObjectPtr obj, JMethodIDPtr methodID, ffi.Pointer args)>(); - double CallDoubleMethodA( + DartJDoubleMarker CallDoubleMethodA( JObjectPtr obj, JMethodIDPtr methodID, ffi.Pointer args) => _CallDoubleMethodA(obj, methodID, args).doubleFloat; @@ -394,7 +400,7 @@ class GlobalJniEnv { JniResult Function( JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID)>(); - int CallNonvirtualByteMethod( + DartJByteMarker CallNonvirtualByteMethod( JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID) => _CallNonvirtualByteMethod(obj, clazz, methodID).byte; @@ -403,7 +409,7 @@ class GlobalJniEnv { JniResult Function(JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args)>(); - int CallNonvirtualByteMethodA(JObjectPtr obj, JClassPtr clazz, + DartJByteMarker CallNonvirtualByteMethodA(JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args) => _CallNonvirtualByteMethodA(obj, clazz, methodID, args).byte; @@ -412,7 +418,7 @@ class GlobalJniEnv { JniResult Function( JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID)>(); - int CallNonvirtualCharMethod( + DartJCharMarker CallNonvirtualCharMethod( JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID) => _CallNonvirtualCharMethod(obj, clazz, methodID).char; @@ -421,7 +427,7 @@ class GlobalJniEnv { JniResult Function(JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args)>(); - int CallNonvirtualCharMethodA(JObjectPtr obj, JClassPtr clazz, + DartJCharMarker CallNonvirtualCharMethodA(JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args) => _CallNonvirtualCharMethodA(obj, clazz, methodID, args).char; @@ -430,7 +436,7 @@ class GlobalJniEnv { JniResult Function( JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID)>(); - int CallNonvirtualShortMethod( + DartJShortMarker CallNonvirtualShortMethod( JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID) => _CallNonvirtualShortMethod(obj, clazz, methodID).short; @@ -439,7 +445,7 @@ class GlobalJniEnv { JniResult Function(JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args)>(); - int CallNonvirtualShortMethodA(JObjectPtr obj, JClassPtr clazz, + DartJShortMarker CallNonvirtualShortMethodA(JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args) => _CallNonvirtualShortMethodA(obj, clazz, methodID, args).short; @@ -448,7 +454,7 @@ class GlobalJniEnv { JniResult Function( JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID)>(); - int CallNonvirtualIntMethod( + DartJIntMarker CallNonvirtualIntMethod( JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID) => _CallNonvirtualIntMethod(obj, clazz, methodID).integer; @@ -457,7 +463,7 @@ class GlobalJniEnv { JniResult Function(JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args)>(); - int CallNonvirtualIntMethodA(JObjectPtr obj, JClassPtr clazz, + DartJIntMarker CallNonvirtualIntMethodA(JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args) => _CallNonvirtualIntMethodA(obj, clazz, methodID, args).integer; @@ -466,7 +472,7 @@ class GlobalJniEnv { JniResult Function( JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID)>(); - int CallNonvirtualLongMethod( + DartJLongMarker CallNonvirtualLongMethod( JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID) => _CallNonvirtualLongMethod(obj, clazz, methodID).long; @@ -475,7 +481,7 @@ class GlobalJniEnv { JniResult Function(JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args)>(); - int CallNonvirtualLongMethodA(JObjectPtr obj, JClassPtr clazz, + DartJLongMarker CallNonvirtualLongMethodA(JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args) => _CallNonvirtualLongMethodA(obj, clazz, methodID, args).long; @@ -484,7 +490,7 @@ class GlobalJniEnv { JniResult Function( JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID)>(); - double CallNonvirtualFloatMethod( + DartJFloatMarker CallNonvirtualFloatMethod( JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID) => _CallNonvirtualFloatMethod(obj, clazz, methodID).float; @@ -493,7 +499,7 @@ class GlobalJniEnv { JniResult Function(JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args)>(); - double CallNonvirtualFloatMethodA(JObjectPtr obj, JClassPtr clazz, + DartJFloatMarker CallNonvirtualFloatMethodA(JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args) => _CallNonvirtualFloatMethodA(obj, clazz, methodID, args).float; @@ -502,7 +508,7 @@ class GlobalJniEnv { JniResult Function( JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID)>(); - double CallNonvirtualDoubleMethod( + DartJDoubleMarker CallNonvirtualDoubleMethod( JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID) => _CallNonvirtualDoubleMethod(obj, clazz, methodID).doubleFloat; @@ -511,7 +517,7 @@ class GlobalJniEnv { JniResult Function(JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args)>(); - double CallNonvirtualDoubleMethodA(JObjectPtr obj, JClassPtr clazz, + DartJDoubleMarker CallNonvirtualDoubleMethodA(JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args) => _CallNonvirtualDoubleMethodA(obj, clazz, methodID, args).doubleFloat; @@ -559,49 +565,49 @@ class GlobalJniEnv { .asFunction( isLeaf: true); - int GetByteField(JObjectPtr obj, JFieldIDPtr fieldID) => + DartJByteMarker GetByteField(JObjectPtr obj, JFieldIDPtr fieldID) => _GetByteField(obj, fieldID).byte; late final _GetCharField = ptr.ref.GetCharField .asFunction( isLeaf: true); - int GetCharField(JObjectPtr obj, JFieldIDPtr fieldID) => + DartJCharMarker GetCharField(JObjectPtr obj, JFieldIDPtr fieldID) => _GetCharField(obj, fieldID).char; late final _GetShortField = ptr.ref.GetShortField .asFunction( isLeaf: true); - int GetShortField(JObjectPtr obj, JFieldIDPtr fieldID) => + DartJShortMarker GetShortField(JObjectPtr obj, JFieldIDPtr fieldID) => _GetShortField(obj, fieldID).short; late final _GetIntField = ptr.ref.GetIntField .asFunction( isLeaf: true); - int GetIntField(JObjectPtr obj, JFieldIDPtr fieldID) => + DartJIntMarker GetIntField(JObjectPtr obj, JFieldIDPtr fieldID) => _GetIntField(obj, fieldID).integer; late final _GetLongField = ptr.ref.GetLongField .asFunction( isLeaf: true); - int GetLongField(JObjectPtr obj, JFieldIDPtr fieldID) => + DartJLongMarker GetLongField(JObjectPtr obj, JFieldIDPtr fieldID) => _GetLongField(obj, fieldID).long; late final _GetFloatField = ptr.ref.GetFloatField .asFunction( isLeaf: true); - double GetFloatField(JObjectPtr obj, JFieldIDPtr fieldID) => + DartJFloatMarker GetFloatField(JObjectPtr obj, JFieldIDPtr fieldID) => _GetFloatField(obj, fieldID).float; late final _GetDoubleField = ptr.ref.GetDoubleField .asFunction( isLeaf: true); - double GetDoubleField(JObjectPtr obj, JFieldIDPtr fieldID) => + DartJDoubleMarker GetDoubleField(JObjectPtr obj, JFieldIDPtr fieldID) => _GetDoubleField(obj, fieldID).doubleFloat; late final _SetObjectField = ptr.ref.SetObjectField.asFunction< @@ -612,59 +618,63 @@ class GlobalJniEnv { _SetObjectField(obj, fieldID, val).check(); late final _SetBooleanField = ptr.ref.SetBooleanField.asFunction< - JThrowablePtr Function( - JObjectPtr obj, JFieldIDPtr fieldID, int val)>(isLeaf: true); + JThrowablePtr Function(JObjectPtr obj, JFieldIDPtr fieldID, + DartJBooleanMarker val)>(isLeaf: true); - void SetBooleanField(JObjectPtr obj, JFieldIDPtr fieldID, int val) => + void SetBooleanField( + JObjectPtr obj, JFieldIDPtr fieldID, DartJBooleanMarker val) => _SetBooleanField(obj, fieldID, val).check(); late final _SetByteField = ptr.ref.SetByteField.asFunction< - JThrowablePtr Function( - JObjectPtr obj, JFieldIDPtr fieldID, int val)>(isLeaf: true); + JThrowablePtr Function(JObjectPtr obj, JFieldIDPtr fieldID, + DartJByteMarker val)>(isLeaf: true); - void SetByteField(JObjectPtr obj, JFieldIDPtr fieldID, int val) => + void SetByteField(JObjectPtr obj, JFieldIDPtr fieldID, DartJByteMarker val) => _SetByteField(obj, fieldID, val).check(); late final _SetCharField = ptr.ref.SetCharField.asFunction< - JThrowablePtr Function( - JObjectPtr obj, JFieldIDPtr fieldID, int val)>(isLeaf: true); + JThrowablePtr Function(JObjectPtr obj, JFieldIDPtr fieldID, + DartJCharMarker val)>(isLeaf: true); - void SetCharField(JObjectPtr obj, JFieldIDPtr fieldID, int val) => + void SetCharField(JObjectPtr obj, JFieldIDPtr fieldID, DartJCharMarker val) => _SetCharField(obj, fieldID, val).check(); late final _SetShortField = ptr.ref.SetShortField.asFunction< - JThrowablePtr Function( - JObjectPtr obj, JFieldIDPtr fieldID, int val)>(isLeaf: true); + JThrowablePtr Function(JObjectPtr obj, JFieldIDPtr fieldID, + DartJShortMarker val)>(isLeaf: true); - void SetShortField(JObjectPtr obj, JFieldIDPtr fieldID, int val) => + void SetShortField( + JObjectPtr obj, JFieldIDPtr fieldID, DartJShortMarker val) => _SetShortField(obj, fieldID, val).check(); late final _SetIntField = ptr.ref.SetIntField.asFunction< - JThrowablePtr Function( - JObjectPtr obj, JFieldIDPtr fieldID, int val)>(isLeaf: true); + JThrowablePtr Function(JObjectPtr obj, JFieldIDPtr fieldID, + DartJIntMarker val)>(isLeaf: true); - void SetIntField(JObjectPtr obj, JFieldIDPtr fieldID, int val) => + void SetIntField(JObjectPtr obj, JFieldIDPtr fieldID, DartJIntMarker val) => _SetIntField(obj, fieldID, val).check(); late final _SetLongField = ptr.ref.SetLongField.asFunction< - JThrowablePtr Function( - JObjectPtr obj, JFieldIDPtr fieldID, int val)>(isLeaf: true); + JThrowablePtr Function(JObjectPtr obj, JFieldIDPtr fieldID, + DartJLongMarker val)>(isLeaf: true); - void SetLongField(JObjectPtr obj, JFieldIDPtr fieldID, int val) => + void SetLongField(JObjectPtr obj, JFieldIDPtr fieldID, DartJLongMarker val) => _SetLongField(obj, fieldID, val).check(); late final _SetFloatField = ptr.ref.SetFloatField.asFunction< - JThrowablePtr Function( - JObjectPtr obj, JFieldIDPtr fieldID, double val)>(isLeaf: true); + JThrowablePtr Function(JObjectPtr obj, JFieldIDPtr fieldID, + DartJFloatMarker val)>(isLeaf: true); - void SetFloatField(JObjectPtr obj, JFieldIDPtr fieldID, double val) => + void SetFloatField( + JObjectPtr obj, JFieldIDPtr fieldID, DartJFloatMarker val) => _SetFloatField(obj, fieldID, val).check(); late final _SetDoubleField = ptr.ref.SetDoubleField.asFunction< - JThrowablePtr Function( - JObjectPtr obj, JFieldIDPtr fieldID, double val)>(isLeaf: true); + JThrowablePtr Function(JObjectPtr obj, JFieldIDPtr fieldID, + DartJDoubleMarker val)>(isLeaf: true); - void SetDoubleField(JObjectPtr obj, JFieldIDPtr fieldID, double val) => + void SetDoubleField( + JObjectPtr obj, JFieldIDPtr fieldID, DartJDoubleMarker val) => _SetDoubleField(obj, fieldID, val).check(); late final _GetStaticMethodID = ptr.ref.GetStaticMethodID.asFunction< @@ -708,35 +718,38 @@ class GlobalJniEnv { late final _CallStaticByteMethod = ptr.ref.CallStaticByteMethod .asFunction(); - int CallStaticByteMethod(JClassPtr clazz, JMethodIDPtr methodID) => + DartJByteMarker CallStaticByteMethod( + JClassPtr clazz, JMethodIDPtr methodID) => _CallStaticByteMethod(clazz, methodID).byte; late final _CallStaticByteMethodA = ptr.ref.CallStaticByteMethodA.asFunction< JniResult Function( JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args)>(); - int CallStaticByteMethodA( + DartJByteMarker CallStaticByteMethodA( JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args) => _CallStaticByteMethodA(clazz, methodID, args).byte; late final _CallStaticCharMethod = ptr.ref.CallStaticCharMethod .asFunction(); - int CallStaticCharMethod(JClassPtr clazz, JMethodIDPtr methodID) => + DartJCharMarker CallStaticCharMethod( + JClassPtr clazz, JMethodIDPtr methodID) => _CallStaticCharMethod(clazz, methodID).char; late final _CallStaticCharMethodA = ptr.ref.CallStaticCharMethodA.asFunction< JniResult Function( JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args)>(); - int CallStaticCharMethodA( + DartJCharMarker CallStaticCharMethodA( JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args) => _CallStaticCharMethodA(clazz, methodID, args).char; late final _CallStaticShortMethod = ptr.ref.CallStaticShortMethod .asFunction(); - int CallStaticShortMethod(JClassPtr clazz, JMethodIDPtr methodID) => + DartJShortMarker CallStaticShortMethod( + JClassPtr clazz, JMethodIDPtr methodID) => _CallStaticShortMethod(clazz, methodID).short; late final _CallStaticShortMethodA = ptr.ref.CallStaticShortMethodA @@ -744,42 +757,44 @@ class GlobalJniEnv { JniResult Function(JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args)>(); - int CallStaticShortMethodA( + DartJShortMarker CallStaticShortMethodA( JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args) => _CallStaticShortMethodA(clazz, methodID, args).short; late final _CallStaticIntMethod = ptr.ref.CallStaticIntMethod .asFunction(); - int CallStaticIntMethod(JClassPtr clazz, JMethodIDPtr methodID) => + DartJIntMarker CallStaticIntMethod(JClassPtr clazz, JMethodIDPtr methodID) => _CallStaticIntMethod(clazz, methodID).integer; late final _CallStaticIntMethodA = ptr.ref.CallStaticIntMethodA.asFunction< JniResult Function( JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args)>(); - int CallStaticIntMethodA( + DartJIntMarker CallStaticIntMethodA( JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args) => _CallStaticIntMethodA(clazz, methodID, args).integer; late final _CallStaticLongMethod = ptr.ref.CallStaticLongMethod .asFunction(); - int CallStaticLongMethod(JClassPtr clazz, JMethodIDPtr methodID) => + DartJLongMarker CallStaticLongMethod( + JClassPtr clazz, JMethodIDPtr methodID) => _CallStaticLongMethod(clazz, methodID).long; late final _CallStaticLongMethodA = ptr.ref.CallStaticLongMethodA.asFunction< JniResult Function( JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args)>(); - int CallStaticLongMethodA( + DartJLongMarker CallStaticLongMethodA( JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args) => _CallStaticLongMethodA(clazz, methodID, args).long; late final _CallStaticFloatMethod = ptr.ref.CallStaticFloatMethod .asFunction(); - double CallStaticFloatMethod(JClassPtr clazz, JMethodIDPtr methodID) => + DartJFloatMarker CallStaticFloatMethod( + JClassPtr clazz, JMethodIDPtr methodID) => _CallStaticFloatMethod(clazz, methodID).float; late final _CallStaticFloatMethodA = ptr.ref.CallStaticFloatMethodA @@ -787,14 +802,15 @@ class GlobalJniEnv { JniResult Function(JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args)>(); - double CallStaticFloatMethodA( + DartJFloatMarker CallStaticFloatMethodA( JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args) => _CallStaticFloatMethodA(clazz, methodID, args).float; late final _CallStaticDoubleMethod = ptr.ref.CallStaticDoubleMethod .asFunction(); - double CallStaticDoubleMethod(JClassPtr clazz, JMethodIDPtr methodID) => + DartJDoubleMarker CallStaticDoubleMethod( + JClassPtr clazz, JMethodIDPtr methodID) => _CallStaticDoubleMethod(clazz, methodID).doubleFloat; late final _CallStaticDoubleMethodA = ptr.ref.CallStaticDoubleMethodA @@ -802,7 +818,7 @@ class GlobalJniEnv { JniResult Function(JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args)>(); - double CallStaticDoubleMethodA( + DartJDoubleMarker CallStaticDoubleMethodA( JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args) => _CallStaticDoubleMethodA(clazz, methodID, args).doubleFloat; @@ -846,49 +862,50 @@ class GlobalJniEnv { .asFunction( isLeaf: true); - int GetStaticByteField(JClassPtr clazz, JFieldIDPtr fieldID) => + DartJByteMarker GetStaticByteField(JClassPtr clazz, JFieldIDPtr fieldID) => _GetStaticByteField(clazz, fieldID).byte; late final _GetStaticCharField = ptr.ref.GetStaticCharField .asFunction( isLeaf: true); - int GetStaticCharField(JClassPtr clazz, JFieldIDPtr fieldID) => + DartJCharMarker GetStaticCharField(JClassPtr clazz, JFieldIDPtr fieldID) => _GetStaticCharField(clazz, fieldID).char; late final _GetStaticShortField = ptr.ref.GetStaticShortField .asFunction( isLeaf: true); - int GetStaticShortField(JClassPtr clazz, JFieldIDPtr fieldID) => + DartJShortMarker GetStaticShortField(JClassPtr clazz, JFieldIDPtr fieldID) => _GetStaticShortField(clazz, fieldID).short; late final _GetStaticIntField = ptr.ref.GetStaticIntField .asFunction( isLeaf: true); - int GetStaticIntField(JClassPtr clazz, JFieldIDPtr fieldID) => + DartJIntMarker GetStaticIntField(JClassPtr clazz, JFieldIDPtr fieldID) => _GetStaticIntField(clazz, fieldID).integer; late final _GetStaticLongField = ptr.ref.GetStaticLongField .asFunction( isLeaf: true); - int GetStaticLongField(JClassPtr clazz, JFieldIDPtr fieldID) => + DartJLongMarker GetStaticLongField(JClassPtr clazz, JFieldIDPtr fieldID) => _GetStaticLongField(clazz, fieldID).long; late final _GetStaticFloatField = ptr.ref.GetStaticFloatField .asFunction( isLeaf: true); - double GetStaticFloatField(JClassPtr clazz, JFieldIDPtr fieldID) => + DartJFloatMarker GetStaticFloatField(JClassPtr clazz, JFieldIDPtr fieldID) => _GetStaticFloatField(clazz, fieldID).float; late final _GetStaticDoubleField = ptr.ref.GetStaticDoubleField .asFunction( isLeaf: true); - double GetStaticDoubleField(JClassPtr clazz, JFieldIDPtr fieldID) => + DartJDoubleMarker GetStaticDoubleField( + JClassPtr clazz, JFieldIDPtr fieldID) => _GetStaticDoubleField(clazz, fieldID).doubleFloat; late final _SetStaticObjectField = ptr.ref.SetStaticObjectField.asFunction< @@ -900,71 +917,82 @@ class GlobalJniEnv { _SetStaticObjectField(clazz, fieldID, val).check(); late final _SetStaticBooleanField = ptr.ref.SetStaticBooleanField.asFunction< - JThrowablePtr Function( - JClassPtr clazz, JFieldIDPtr fieldID, int val)>(isLeaf: true); + JThrowablePtr Function(JClassPtr clazz, JFieldIDPtr fieldID, + DartJBooleanMarker val)>(isLeaf: true); - void SetStaticBooleanField(JClassPtr clazz, JFieldIDPtr fieldID, int val) => + void SetStaticBooleanField( + JClassPtr clazz, JFieldIDPtr fieldID, DartJBooleanMarker val) => _SetStaticBooleanField(clazz, fieldID, val).check(); late final _SetStaticByteField = ptr.ref.SetStaticByteField.asFunction< - JThrowablePtr Function( - JClassPtr clazz, JFieldIDPtr fieldID, int val)>(isLeaf: true); + JThrowablePtr Function(JClassPtr clazz, JFieldIDPtr fieldID, + DartJByteMarker val)>(isLeaf: true); - void SetStaticByteField(JClassPtr clazz, JFieldIDPtr fieldID, int val) => + void SetStaticByteField( + JClassPtr clazz, JFieldIDPtr fieldID, DartJByteMarker val) => _SetStaticByteField(clazz, fieldID, val).check(); late final _SetStaticCharField = ptr.ref.SetStaticCharField.asFunction< - JThrowablePtr Function( - JClassPtr clazz, JFieldIDPtr fieldID, int val)>(isLeaf: true); + JThrowablePtr Function(JClassPtr clazz, JFieldIDPtr fieldID, + DartJCharMarker val)>(isLeaf: true); - void SetStaticCharField(JClassPtr clazz, JFieldIDPtr fieldID, int val) => + void SetStaticCharField( + JClassPtr clazz, JFieldIDPtr fieldID, DartJCharMarker val) => _SetStaticCharField(clazz, fieldID, val).check(); late final _SetStaticShortField = ptr.ref.SetStaticShortField.asFunction< - JThrowablePtr Function( - JClassPtr clazz, JFieldIDPtr fieldID, int val)>(isLeaf: true); + JThrowablePtr Function(JClassPtr clazz, JFieldIDPtr fieldID, + DartJShortMarker val)>(isLeaf: true); - void SetStaticShortField(JClassPtr clazz, JFieldIDPtr fieldID, int val) => + void SetStaticShortField( + JClassPtr clazz, JFieldIDPtr fieldID, DartJShortMarker val) => _SetStaticShortField(clazz, fieldID, val).check(); late final _SetStaticIntField = ptr.ref.SetStaticIntField.asFunction< - JThrowablePtr Function( - JClassPtr clazz, JFieldIDPtr fieldID, int val)>(isLeaf: true); + JThrowablePtr Function(JClassPtr clazz, JFieldIDPtr fieldID, + DartJIntMarker val)>(isLeaf: true); - void SetStaticIntField(JClassPtr clazz, JFieldIDPtr fieldID, int val) => + void SetStaticIntField( + JClassPtr clazz, JFieldIDPtr fieldID, DartJIntMarker val) => _SetStaticIntField(clazz, fieldID, val).check(); late final _SetStaticLongField = ptr.ref.SetStaticLongField.asFunction< - JThrowablePtr Function( - JClassPtr clazz, JFieldIDPtr fieldID, int val)>(isLeaf: true); + JThrowablePtr Function(JClassPtr clazz, JFieldIDPtr fieldID, + DartJLongMarker val)>(isLeaf: true); - void SetStaticLongField(JClassPtr clazz, JFieldIDPtr fieldID, int val) => + void SetStaticLongField( + JClassPtr clazz, JFieldIDPtr fieldID, DartJLongMarker val) => _SetStaticLongField(clazz, fieldID, val).check(); late final _SetStaticFloatField = ptr.ref.SetStaticFloatField.asFunction< - JThrowablePtr Function( - JClassPtr clazz, JFieldIDPtr fieldID, double val)>(isLeaf: true); + JThrowablePtr Function(JClassPtr clazz, JFieldIDPtr fieldID, + DartJFloatMarker val)>(isLeaf: true); - void SetStaticFloatField(JClassPtr clazz, JFieldIDPtr fieldID, double val) => + void SetStaticFloatField( + JClassPtr clazz, JFieldIDPtr fieldID, DartJFloatMarker val) => _SetStaticFloatField(clazz, fieldID, val).check(); late final _SetStaticDoubleField = ptr.ref.SetStaticDoubleField.asFunction< - JThrowablePtr Function( - JClassPtr clazz, JFieldIDPtr fieldID, double val)>(isLeaf: true); + JThrowablePtr Function(JClassPtr clazz, JFieldIDPtr fieldID, + DartJDoubleMarker val)>(isLeaf: true); - void SetStaticDoubleField(JClassPtr clazz, JFieldIDPtr fieldID, double val) => + void SetStaticDoubleField( + JClassPtr clazz, JFieldIDPtr fieldID, DartJDoubleMarker val) => _SetStaticDoubleField(clazz, fieldID, val).check(); late final _NewString = ptr.ref.NewString.asFunction< - JniResult Function(ffi.Pointer unicodeChars, int len)>(); + JniResult Function( + ffi.Pointer unicodeChars, DartJIntMarker len)>(); - JStringPtr NewString(ffi.Pointer unicodeChars, int len) => + JStringPtr NewString( + ffi.Pointer unicodeChars, DartJIntMarker len) => _NewString(unicodeChars, len).objectPointer; late final _GetStringLength = ptr.ref.GetStringLength .asFunction(isLeaf: true); - int GetStringLength(JStringPtr string) => _GetStringLength(string).integer; + DartJIntMarker GetStringLength(JStringPtr string) => + _GetStringLength(string).integer; late final _GetStringChars = ptr.ref.GetStringChars.asFunction< JniPointerResult Function( @@ -990,7 +1018,7 @@ class GlobalJniEnv { late final _GetStringUTFLength = ptr.ref.GetStringUTFLength .asFunction(isLeaf: true); - int GetStringUTFLength(JStringPtr string) => + DartJIntMarker GetStringUTFLength(JStringPtr string) => _GetStringUTFLength(string).integer; late final _GetStringUTFChars = ptr.ref.GetStringUTFChars.asFunction< @@ -1010,73 +1038,79 @@ class GlobalJniEnv { late final _GetArrayLength = ptr.ref.GetArrayLength .asFunction(isLeaf: true); - int GetArrayLength(JArrayPtr array) => _GetArrayLength(array).integer; + DartJIntMarker GetArrayLength(JArrayPtr array) => + _GetArrayLength(array).integer; late final _NewObjectArray = ptr.ref.NewObjectArray.asFunction< - JniResult Function( - int length, JClassPtr elementClass, JObjectPtr initialElement)>(); + JniResult Function(DartJIntMarker length, JClassPtr elementClass, + JObjectPtr initialElement)>(); - JObjectArrayPtr NewObjectArray( - int length, JClassPtr elementClass, JObjectPtr initialElement) => + JObjectArrayPtr NewObjectArray(DartJIntMarker length, JClassPtr elementClass, + JObjectPtr initialElement) => _NewObjectArray(length, elementClass, initialElement).objectPointer; - late final _GetObjectArrayElement = ptr.ref.GetObjectArrayElement - .asFunction( - isLeaf: true); + late final _GetObjectArrayElement = ptr.ref.GetObjectArrayElement.asFunction< + JniResult Function( + JObjectArrayPtr array, DartJIntMarker index)>(isLeaf: true); - JObjectPtr GetObjectArrayElement(JObjectArrayPtr array, int index) => + JObjectPtr GetObjectArrayElement( + JObjectArrayPtr array, DartJIntMarker index) => _GetObjectArrayElement(array, index).objectPointer; late final _SetObjectArrayElement = ptr.ref.SetObjectArrayElement.asFunction< - JThrowablePtr Function( - JObjectArrayPtr array, int index, JObjectPtr val)>(isLeaf: true); + JThrowablePtr Function(JObjectArrayPtr array, DartJIntMarker index, + JObjectPtr val)>(isLeaf: true); void SetObjectArrayElement( - JObjectArrayPtr array, int index, JObjectPtr val) => + JObjectArrayPtr array, DartJIntMarker index, JObjectPtr val) => _SetObjectArrayElement(array, index, val).check(); - late final _NewBooleanArray = - ptr.ref.NewBooleanArray.asFunction(); + late final _NewBooleanArray = ptr.ref.NewBooleanArray + .asFunction(); - JBooleanArrayPtr NewBooleanArray(int length) => + JBooleanArrayPtr NewBooleanArray(DartJIntMarker length) => _NewBooleanArray(length).objectPointer; - late final _NewByteArray = - ptr.ref.NewByteArray.asFunction(); + late final _NewByteArray = ptr.ref.NewByteArray + .asFunction(); - JByteArrayPtr NewByteArray(int length) => _NewByteArray(length).objectPointer; + JByteArrayPtr NewByteArray(DartJIntMarker length) => + _NewByteArray(length).objectPointer; - late final _NewCharArray = - ptr.ref.NewCharArray.asFunction(); + late final _NewCharArray = ptr.ref.NewCharArray + .asFunction(); - JCharArrayPtr NewCharArray(int length) => _NewCharArray(length).objectPointer; + JCharArrayPtr NewCharArray(DartJIntMarker length) => + _NewCharArray(length).objectPointer; - late final _NewShortArray = - ptr.ref.NewShortArray.asFunction(); + late final _NewShortArray = ptr.ref.NewShortArray + .asFunction(); - JShortArrayPtr NewShortArray(int length) => + JShortArrayPtr NewShortArray(DartJIntMarker length) => _NewShortArray(length).objectPointer; - late final _NewIntArray = - ptr.ref.NewIntArray.asFunction(); + late final _NewIntArray = ptr.ref.NewIntArray + .asFunction(); - JIntArrayPtr NewIntArray(int length) => _NewIntArray(length).objectPointer; + JIntArrayPtr NewIntArray(DartJIntMarker length) => + _NewIntArray(length).objectPointer; - late final _NewLongArray = - ptr.ref.NewLongArray.asFunction(); + late final _NewLongArray = ptr.ref.NewLongArray + .asFunction(); - JLongArrayPtr NewLongArray(int length) => _NewLongArray(length).objectPointer; + JLongArrayPtr NewLongArray(DartJIntMarker length) => + _NewLongArray(length).objectPointer; - late final _NewFloatArray = - ptr.ref.NewFloatArray.asFunction(); + late final _NewFloatArray = ptr.ref.NewFloatArray + .asFunction(); - JFloatArrayPtr NewFloatArray(int length) => + JFloatArrayPtr NewFloatArray(DartJIntMarker length) => _NewFloatArray(length).objectPointer; - late final _NewDoubleArray = - ptr.ref.NewDoubleArray.asFunction(); + late final _NewDoubleArray = ptr.ref.NewDoubleArray + .asFunction(); - JDoubleArrayPtr NewDoubleArray(int length) => + JDoubleArrayPtr NewDoubleArray(DartJIntMarker length) => _NewDoubleArray(length).objectPointer; late final _GetBooleanArrayElements = ptr.ref.GetBooleanArrayElements @@ -1148,246 +1182,248 @@ class GlobalJniEnv { late final _ReleaseBooleanArrayElements = ptr.ref.ReleaseBooleanArrayElements .asFunction< JThrowablePtr Function(JBooleanArrayPtr array, - ffi.Pointer elems, int mode)>(); + ffi.Pointer elems, DartJIntMarker mode)>(); void ReleaseBooleanArrayElements(JBooleanArrayPtr array, - ffi.Pointer elems, int mode) => + ffi.Pointer elems, DartJIntMarker mode) => _ReleaseBooleanArrayElements(array, elems, mode).check(); late final _ReleaseByteArrayElements = ptr.ref.ReleaseByteArrayElements .asFunction< - JThrowablePtr Function( - JByteArrayPtr array, ffi.Pointer elems, int mode)>(); + JThrowablePtr Function(JByteArrayPtr array, + ffi.Pointer elems, DartJIntMarker mode)>(); - void ReleaseByteArrayElements( - JByteArrayPtr array, ffi.Pointer elems, int mode) => + void ReleaseByteArrayElements(JByteArrayPtr array, + ffi.Pointer elems, DartJIntMarker mode) => _ReleaseByteArrayElements(array, elems, mode).check(); late final _ReleaseCharArrayElements = ptr.ref.ReleaseCharArrayElements .asFunction< - JThrowablePtr Function( - JCharArrayPtr array, ffi.Pointer elems, int mode)>(); + JThrowablePtr Function(JCharArrayPtr array, + ffi.Pointer elems, DartJIntMarker mode)>(); - void ReleaseCharArrayElements( - JCharArrayPtr array, ffi.Pointer elems, int mode) => + void ReleaseCharArrayElements(JCharArrayPtr array, + ffi.Pointer elems, DartJIntMarker mode) => _ReleaseCharArrayElements(array, elems, mode).check(); late final _ReleaseShortArrayElements = ptr.ref.ReleaseShortArrayElements .asFunction< JThrowablePtr Function(JShortArrayPtr array, - ffi.Pointer elems, int mode)>(); + ffi.Pointer elems, DartJIntMarker mode)>(); - void ReleaseShortArrayElements( - JShortArrayPtr array, ffi.Pointer elems, int mode) => + void ReleaseShortArrayElements(JShortArrayPtr array, + ffi.Pointer elems, DartJIntMarker mode) => _ReleaseShortArrayElements(array, elems, mode).check(); late final _ReleaseIntArrayElements = ptr.ref.ReleaseIntArrayElements .asFunction< - JThrowablePtr Function( - JIntArrayPtr array, ffi.Pointer elems, int mode)>(); + JThrowablePtr Function(JIntArrayPtr array, + ffi.Pointer elems, DartJIntMarker mode)>(); - void ReleaseIntArrayElements( - JIntArrayPtr array, ffi.Pointer elems, int mode) => + void ReleaseIntArrayElements(JIntArrayPtr array, + ffi.Pointer elems, DartJIntMarker mode) => _ReleaseIntArrayElements(array, elems, mode).check(); late final _ReleaseLongArrayElements = ptr.ref.ReleaseLongArrayElements .asFunction< - JThrowablePtr Function( - JLongArrayPtr array, ffi.Pointer elems, int mode)>(); + JThrowablePtr Function(JLongArrayPtr array, + ffi.Pointer elems, DartJIntMarker mode)>(); - void ReleaseLongArrayElements( - JLongArrayPtr array, ffi.Pointer elems, int mode) => + void ReleaseLongArrayElements(JLongArrayPtr array, + ffi.Pointer elems, DartJIntMarker mode) => _ReleaseLongArrayElements(array, elems, mode).check(); late final _ReleaseFloatArrayElements = ptr.ref.ReleaseFloatArrayElements .asFunction< JThrowablePtr Function(JFloatArrayPtr array, - ffi.Pointer elems, int mode)>(); + ffi.Pointer elems, DartJIntMarker mode)>(); - void ReleaseFloatArrayElements( - JFloatArrayPtr array, ffi.Pointer elems, int mode) => + void ReleaseFloatArrayElements(JFloatArrayPtr array, + ffi.Pointer elems, DartJIntMarker mode) => _ReleaseFloatArrayElements(array, elems, mode).check(); late final _ReleaseDoubleArrayElements = ptr.ref.ReleaseDoubleArrayElements .asFunction< JThrowablePtr Function(JDoubleArrayPtr array, - ffi.Pointer elems, int mode)>(); + ffi.Pointer elems, DartJIntMarker mode)>(); - void ReleaseDoubleArrayElements( - JDoubleArrayPtr array, ffi.Pointer elems, int mode) => + void ReleaseDoubleArrayElements(JDoubleArrayPtr array, + ffi.Pointer elems, DartJIntMarker mode) => _ReleaseDoubleArrayElements(array, elems, mode).check(); late final _GetBooleanArrayRegion = ptr.ref.GetBooleanArrayRegion.asFunction< - JThrowablePtr Function(JBooleanArrayPtr array, int start, int len, - ffi.Pointer buf)>(); + JThrowablePtr Function(JBooleanArrayPtr array, DartJIntMarker start, + DartJIntMarker len, ffi.Pointer buf)>(); - void GetBooleanArrayRegion(JBooleanArrayPtr array, int start, int len, - ffi.Pointer buf) => + void GetBooleanArrayRegion(JBooleanArrayPtr array, DartJIntMarker start, + DartJIntMarker len, ffi.Pointer buf) => _GetBooleanArrayRegion(array, start, len, buf).check(); late final _GetByteArrayRegion = ptr.ref.GetByteArrayRegion.asFunction< - JThrowablePtr Function(JByteArrayPtr array, int start, int len, - ffi.Pointer buf)>(); + JThrowablePtr Function(JByteArrayPtr array, DartJIntMarker start, + DartJIntMarker len, ffi.Pointer buf)>(); - void GetByteArrayRegion(JByteArrayPtr array, int start, int len, - ffi.Pointer buf) => + void GetByteArrayRegion(JByteArrayPtr array, DartJIntMarker start, + DartJIntMarker len, ffi.Pointer buf) => _GetByteArrayRegion(array, start, len, buf).check(); late final _GetCharArrayRegion = ptr.ref.GetCharArrayRegion.asFunction< - JThrowablePtr Function(JCharArrayPtr array, int start, int len, - ffi.Pointer buf)>(); + JThrowablePtr Function(JCharArrayPtr array, DartJIntMarker start, + DartJIntMarker len, ffi.Pointer buf)>(); - void GetCharArrayRegion(JCharArrayPtr array, int start, int len, - ffi.Pointer buf) => + void GetCharArrayRegion(JCharArrayPtr array, DartJIntMarker start, + DartJIntMarker len, ffi.Pointer buf) => _GetCharArrayRegion(array, start, len, buf).check(); late final _GetShortArrayRegion = ptr.ref.GetShortArrayRegion.asFunction< - JThrowablePtr Function(JShortArrayPtr array, int start, int len, - ffi.Pointer buf)>(); + JThrowablePtr Function(JShortArrayPtr array, DartJIntMarker start, + DartJIntMarker len, ffi.Pointer buf)>(); - void GetShortArrayRegion(JShortArrayPtr array, int start, int len, - ffi.Pointer buf) => + void GetShortArrayRegion(JShortArrayPtr array, DartJIntMarker start, + DartJIntMarker len, ffi.Pointer buf) => _GetShortArrayRegion(array, start, len, buf).check(); late final _GetIntArrayRegion = ptr.ref.GetIntArrayRegion.asFunction< - JThrowablePtr Function(JIntArrayPtr array, int start, int len, - ffi.Pointer buf)>(); + JThrowablePtr Function(JIntArrayPtr array, DartJIntMarker start, + DartJIntMarker len, ffi.Pointer buf)>(); - void GetIntArrayRegion(JIntArrayPtr array, int start, int len, - ffi.Pointer buf) => + void GetIntArrayRegion(JIntArrayPtr array, DartJIntMarker start, + DartJIntMarker len, ffi.Pointer buf) => _GetIntArrayRegion(array, start, len, buf).check(); late final _GetLongArrayRegion = ptr.ref.GetLongArrayRegion.asFunction< - JThrowablePtr Function(JLongArrayPtr array, int start, int len, - ffi.Pointer buf)>(); + JThrowablePtr Function(JLongArrayPtr array, DartJIntMarker start, + DartJIntMarker len, ffi.Pointer buf)>(); - void GetLongArrayRegion(JLongArrayPtr array, int start, int len, - ffi.Pointer buf) => + void GetLongArrayRegion(JLongArrayPtr array, DartJIntMarker start, + DartJIntMarker len, ffi.Pointer buf) => _GetLongArrayRegion(array, start, len, buf).check(); late final _GetFloatArrayRegion = ptr.ref.GetFloatArrayRegion.asFunction< - JThrowablePtr Function(JFloatArrayPtr array, int start, int len, - ffi.Pointer buf)>(); + JThrowablePtr Function(JFloatArrayPtr array, DartJIntMarker start, + DartJIntMarker len, ffi.Pointer buf)>(); - void GetFloatArrayRegion(JFloatArrayPtr array, int start, int len, - ffi.Pointer buf) => + void GetFloatArrayRegion(JFloatArrayPtr array, DartJIntMarker start, + DartJIntMarker len, ffi.Pointer buf) => _GetFloatArrayRegion(array, start, len, buf).check(); late final _GetDoubleArrayRegion = ptr.ref.GetDoubleArrayRegion.asFunction< - JThrowablePtr Function(JDoubleArrayPtr array, int start, int len, - ffi.Pointer buf)>(); + JThrowablePtr Function(JDoubleArrayPtr array, DartJIntMarker start, + DartJIntMarker len, ffi.Pointer buf)>(); - void GetDoubleArrayRegion(JDoubleArrayPtr array, int start, int len, - ffi.Pointer buf) => + void GetDoubleArrayRegion(JDoubleArrayPtr array, DartJIntMarker start, + DartJIntMarker len, ffi.Pointer buf) => _GetDoubleArrayRegion(array, start, len, buf).check(); late final _SetBooleanArrayRegion = ptr.ref.SetBooleanArrayRegion.asFunction< - JThrowablePtr Function(JBooleanArrayPtr array, int start, int len, - ffi.Pointer buf)>(); + JThrowablePtr Function(JBooleanArrayPtr array, DartJIntMarker start, + DartJIntMarker len, ffi.Pointer buf)>(); - void SetBooleanArrayRegion(JBooleanArrayPtr array, int start, int len, - ffi.Pointer buf) => + void SetBooleanArrayRegion(JBooleanArrayPtr array, DartJIntMarker start, + DartJIntMarker len, ffi.Pointer buf) => _SetBooleanArrayRegion(array, start, len, buf).check(); late final _SetByteArrayRegion = ptr.ref.SetByteArrayRegion.asFunction< - JThrowablePtr Function(JByteArrayPtr array, int start, int len, - ffi.Pointer buf)>(); + JThrowablePtr Function(JByteArrayPtr array, DartJIntMarker start, + DartJIntMarker len, ffi.Pointer buf)>(); - void SetByteArrayRegion(JByteArrayPtr array, int start, int len, - ffi.Pointer buf) => + void SetByteArrayRegion(JByteArrayPtr array, DartJIntMarker start, + DartJIntMarker len, ffi.Pointer buf) => _SetByteArrayRegion(array, start, len, buf).check(); late final _SetCharArrayRegion = ptr.ref.SetCharArrayRegion.asFunction< - JThrowablePtr Function(JCharArrayPtr array, int start, int len, - ffi.Pointer buf)>(); + JThrowablePtr Function(JCharArrayPtr array, DartJIntMarker start, + DartJIntMarker len, ffi.Pointer buf)>(); - void SetCharArrayRegion(JCharArrayPtr array, int start, int len, - ffi.Pointer buf) => + void SetCharArrayRegion(JCharArrayPtr array, DartJIntMarker start, + DartJIntMarker len, ffi.Pointer buf) => _SetCharArrayRegion(array, start, len, buf).check(); late final _SetShortArrayRegion = ptr.ref.SetShortArrayRegion.asFunction< - JThrowablePtr Function(JShortArrayPtr array, int start, int len, - ffi.Pointer buf)>(); + JThrowablePtr Function(JShortArrayPtr array, DartJIntMarker start, + DartJIntMarker len, ffi.Pointer buf)>(); - void SetShortArrayRegion(JShortArrayPtr array, int start, int len, - ffi.Pointer buf) => + void SetShortArrayRegion(JShortArrayPtr array, DartJIntMarker start, + DartJIntMarker len, ffi.Pointer buf) => _SetShortArrayRegion(array, start, len, buf).check(); late final _SetIntArrayRegion = ptr.ref.SetIntArrayRegion.asFunction< - JThrowablePtr Function(JIntArrayPtr array, int start, int len, - ffi.Pointer buf)>(); + JThrowablePtr Function(JIntArrayPtr array, DartJIntMarker start, + DartJIntMarker len, ffi.Pointer buf)>(); - void SetIntArrayRegion(JIntArrayPtr array, int start, int len, - ffi.Pointer buf) => + void SetIntArrayRegion(JIntArrayPtr array, DartJIntMarker start, + DartJIntMarker len, ffi.Pointer buf) => _SetIntArrayRegion(array, start, len, buf).check(); late final _SetLongArrayRegion = ptr.ref.SetLongArrayRegion.asFunction< - JThrowablePtr Function(JLongArrayPtr array, int start, int len, - ffi.Pointer buf)>(); + JThrowablePtr Function(JLongArrayPtr array, DartJIntMarker start, + DartJIntMarker len, ffi.Pointer buf)>(); - void SetLongArrayRegion(JLongArrayPtr array, int start, int len, - ffi.Pointer buf) => + void SetLongArrayRegion(JLongArrayPtr array, DartJIntMarker start, + DartJIntMarker len, ffi.Pointer buf) => _SetLongArrayRegion(array, start, len, buf).check(); late final _SetFloatArrayRegion = ptr.ref.SetFloatArrayRegion.asFunction< - JThrowablePtr Function(JFloatArrayPtr array, int start, int len, - ffi.Pointer buf)>(); + JThrowablePtr Function(JFloatArrayPtr array, DartJIntMarker start, + DartJIntMarker len, ffi.Pointer buf)>(); - void SetFloatArrayRegion(JFloatArrayPtr array, int start, int len, - ffi.Pointer buf) => + void SetFloatArrayRegion(JFloatArrayPtr array, DartJIntMarker start, + DartJIntMarker len, ffi.Pointer buf) => _SetFloatArrayRegion(array, start, len, buf).check(); late final _SetDoubleArrayRegion = ptr.ref.SetDoubleArrayRegion.asFunction< - JThrowablePtr Function(JDoubleArrayPtr array, int start, int len, - ffi.Pointer buf)>(); + JThrowablePtr Function(JDoubleArrayPtr array, DartJIntMarker start, + DartJIntMarker len, ffi.Pointer buf)>(); - void SetDoubleArrayRegion(JDoubleArrayPtr array, int start, int len, - ffi.Pointer buf) => + void SetDoubleArrayRegion(JDoubleArrayPtr array, DartJIntMarker start, + DartJIntMarker len, ffi.Pointer buf) => _SetDoubleArrayRegion(array, start, len, buf).check(); late final _RegisterNatives = ptr.ref.RegisterNatives.asFunction< JniResult Function(JClassPtr clazz, ffi.Pointer methods, - int nMethods)>(); + DartJIntMarker nMethods)>(); - int RegisterNatives(JClassPtr clazz, ffi.Pointer methods, - int nMethods) => + DartJIntMarker RegisterNatives(JClassPtr clazz, + ffi.Pointer methods, DartJIntMarker nMethods) => _RegisterNatives(clazz, methods, nMethods).integer; late final _UnregisterNatives = ptr.ref.UnregisterNatives .asFunction(); - int UnregisterNatives(JClassPtr clazz) => _UnregisterNatives(clazz).integer; + DartJIntMarker UnregisterNatives(JClassPtr clazz) => + _UnregisterNatives(clazz).integer; late final _MonitorEnter = ptr.ref.MonitorEnter.asFunction(); - int MonitorEnter(JObjectPtr obj) => _MonitorEnter(obj).integer; + DartJIntMarker MonitorEnter(JObjectPtr obj) => _MonitorEnter(obj).integer; late final _MonitorExit = ptr.ref.MonitorExit.asFunction(); - int MonitorExit(JObjectPtr obj) => _MonitorExit(obj).integer; + DartJIntMarker MonitorExit(JObjectPtr obj) => _MonitorExit(obj).integer; late final _GetJavaVM = ptr.ref.GetJavaVM - .asFunction> vm)>( + .asFunction> vm)>( isLeaf: true); - int GetJavaVM(ffi.Pointer> vm) => _GetJavaVM(vm).integer; + DartJIntMarker GetJavaVM(ffi.Pointer> vm) => + _GetJavaVM(vm).integer; late final _GetStringRegion = ptr.ref.GetStringRegion.asFunction< - JThrowablePtr Function( - JStringPtr str, int start, int len, ffi.Pointer buf)>(); + JThrowablePtr Function(JStringPtr str, DartJIntMarker start, + DartJIntMarker len, ffi.Pointer buf)>(); - void GetStringRegion( - JStringPtr str, int start, int len, ffi.Pointer buf) => + void GetStringRegion(JStringPtr str, DartJIntMarker start, DartJIntMarker len, + ffi.Pointer buf) => _GetStringRegion(str, start, len, buf).check(); late final _GetStringUTFRegion = ptr.ref.GetStringUTFRegion.asFunction< - JThrowablePtr Function( - JStringPtr str, int start, int len, ffi.Pointer buf)>(); + JThrowablePtr Function(JStringPtr str, DartJIntMarker start, + DartJIntMarker len, ffi.Pointer buf)>(); - void GetStringUTFRegion( - JStringPtr str, int start, int len, ffi.Pointer buf) => + void GetStringUTFRegion(JStringPtr str, DartJIntMarker start, + DartJIntMarker len, ffi.Pointer buf) => _GetStringUTFRegion(str, start, len, buf).check(); late final _GetPrimitiveArrayCritical = ptr.ref.GetPrimitiveArrayCritical @@ -1401,11 +1437,11 @@ class GlobalJniEnv { late final _ReleasePrimitiveArrayCritical = ptr.ref.ReleasePrimitiveArrayCritical.asFunction< - JThrowablePtr Function( - JArrayPtr array, ffi.Pointer carray, int mode)>(); + JThrowablePtr Function(JArrayPtr array, ffi.Pointer carray, + DartJIntMarker mode)>(); void ReleasePrimitiveArrayCritical( - JArrayPtr array, ffi.Pointer carray, int mode) => + JArrayPtr array, ffi.Pointer carray, DartJIntMarker mode) => _ReleasePrimitiveArrayCritical(array, carray, mode).check(); late final _GetStringCritical = ptr.ref.GetStringCritical.asFunction< @@ -1440,9 +1476,11 @@ class GlobalJniEnv { bool ExceptionCheck() => _ExceptionCheck().boolean; late final _NewDirectByteBuffer = ptr.ref.NewDirectByteBuffer.asFunction< - JniResult Function(ffi.Pointer address, int capacity)>(); + JniResult Function( + ffi.Pointer address, DartJLongMarker capacity)>(); - JObjectPtr NewDirectByteBuffer(ffi.Pointer address, int capacity) => + JObjectPtr NewDirectByteBuffer( + ffi.Pointer address, DartJLongMarker capacity) => _NewDirectByteBuffer(address, capacity).objectPointer; late final _GetDirectBufferAddress = ptr.ref.GetDirectBufferAddress @@ -1454,13 +1492,14 @@ class GlobalJniEnv { late final _GetDirectBufferCapacity = ptr.ref.GetDirectBufferCapacity .asFunction(isLeaf: true); - int GetDirectBufferCapacity(JObjectPtr buf) => + DartJLongMarker GetDirectBufferCapacity(JObjectPtr buf) => _GetDirectBufferCapacity(buf).long; late final _GetObjectRefType = ptr.ref.GetObjectRefType .asFunction(isLeaf: true); - int GetObjectRefType(JObjectPtr obj) => _GetObjectRefType(obj).integer; + JObjectRefType GetObjectRefType(JObjectPtr obj) => + _GetObjectRefType(obj).referenceType; late final _GetBooleanArrayElement = ptr.ref.GetBooleanArrayElement .asFunction( diff --git a/pkgs/jni/lib/src/third_party/jni_bindings_generated.dart b/pkgs/jni/lib/src/third_party/jni_bindings_generated.dart index e970cbe4b..6462c56a4 100644 --- a/pkgs/jni/lib/src/third_party/jni_bindings_generated.dart +++ b/pkgs/jni/lib/src/third_party/jni_bindings_generated.dart @@ -66,9 +66,9 @@ class JniBindings { late final ffi.Pointer _tlsKey = _lookup('tlsKey'); - int get tlsKey => _tlsKey.value; + Dart__darwin_pthread_key_t get tlsKey => _tlsKey.value; - set tlsKey(int value) => _tlsKey.value = value; + set tlsKey(Dart__darwin_pthread_key_t value) => _tlsKey.value = value; JniClassLookupResult FindClass( ffi.Pointer name, @@ -98,35 +98,35 @@ class JniBindings { late final _GetExceptionDetails = _GetExceptionDetailsPtr.asFunction< JniExceptionDetails Function(JThrowablePtr)>(); - ffi.Pointer GetJavaVM() { + ffi.Pointer GetJavaVM() { return _GetJavaVM(); } late final _GetJavaVMPtr = - _lookup Function()>>('GetJavaVM'); + _lookup Function()>>('GetJavaVM'); late final _GetJavaVM = - _GetJavaVMPtr.asFunction Function()>(); + _GetJavaVMPtr.asFunction Function()>(); - ffi.Pointer GetJniEnv() { + ffi.Pointer GetJniEnv() { return _GetJniEnv(); } late final _GetJniEnvPtr = - _lookup Function()>>('GetJniEnv'); + _lookup Function()>>('GetJniEnv'); late final _GetJniEnv = - _GetJniEnvPtr.asFunction Function()>(); + _GetJniEnvPtr.asFunction Function()>(); /// Spawn a JVM with given arguments. /// /// Returns JNI_OK on success, and one of the documented JNI error codes on /// failure. It returns DART_JNI_SINGLETON_EXISTS if an attempt to spawn multiple /// JVMs is made, even if the underlying API potentially supports multiple VMs. - int SpawnJvm( + JniErrorCode SpawnJvm( ffi.Pointer args, ) { - return _SpawnJvm( + return JniErrorCode.fromValue(_SpawnJvm( args, - ); + )); } late final _SpawnJvmPtr = _lookup< @@ -244,19 +244,19 @@ class JniBindings { Dart_FinalizableHandle newJObjectFinalizableHandle( Object object, JObjectPtr reference, - int refType, + JObjectRefType refType, ) { return _newJObjectFinalizableHandle( object, reference, - refType, + refType.value, ); } late final _newJObjectFinalizableHandlePtr = _lookup< ffi.NativeFunction< Dart_FinalizableHandle Function(ffi.Handle, JObjectPtr, - ffi.Int32)>>('newJObjectFinalizableHandle'); + ffi.UnsignedInt)>>('newJObjectFinalizableHandle'); late final _newJObjectFinalizableHandle = _newJObjectFinalizableHandlePtr .asFunction(); @@ -306,33 +306,186 @@ class JniBindings { _GetGlobalEnvPtr.asFunction Function()>(); } -typedef pthread_key_t = __darwin_pthread_key_t; -typedef __darwin_pthread_key_t = ffi.UnsignedLong; +enum JniBooleanValues { + FALSE(0), + TRUE(1); -/// Types used by JNI API to distinguish between primitive types. -abstract class JniCallType { - static const int booleanType = 0; - static const int byteType = 1; - static const int shortType = 2; - static const int charType = 3; - static const int intType = 4; - static const int longType = 5; - static const int floatType = 6; - static const int doubleType = 7; - static const int objectType = 8; - static const int voidType = 9; + final int value; + const JniBooleanValues(this.value); + + static JniBooleanValues fromValue(int value) => switch (value) { + 0 => FALSE, + 1 => TRUE, + _ => throw ArgumentError("Unknown value for JniBooleanValues: $value"), + }; } -/// Result type for use by JNI. -/// -/// If [exception] is null, it means the result is valid. -/// It's assumed that the caller knows the expected type in [result]. -final class JniResult extends ffi.Struct { - external JValue value; +enum JniVersions { + VERSION_1_1(65537), + VERSION_1_2(65538), + VERSION_1_4(65540), + VERSION_1_6(65542); + + final int value; + const JniVersions(this.value); + + static JniVersions fromValue(int value) => switch (value) { + 65537 => VERSION_1_1, + 65538 => VERSION_1_2, + 65540 => VERSION_1_4, + 65542 => VERSION_1_6, + _ => throw ArgumentError("Unknown value for JniVersions: $value"), + }; +} - external JThrowablePtr exception; +enum JniErrorCode { + /// no error + OK(0), + + /// generic error + ERR(-1), + + /// thread detached from the VM + EDETACHED(-2), + + /// JNI version error + EVERSION(-3), + + /// Out of memory + ENOMEM(-4), + + /// VM already created + EEXIST(-5), + + /// Invalid argument + EINVAL(-6), + SINGLETON_EXISTS(-99); + + final int value; + const JniErrorCode(this.value); + + static JniErrorCode fromValue(int value) => switch (value) { + 0 => OK, + -1 => ERR, + -2 => EDETACHED, + -3 => EVERSION, + -4 => ENOMEM, + -5 => EEXIST, + -6 => EINVAL, + -99 => SINGLETON_EXISTS, + _ => throw ArgumentError("Unknown value for JniErrorCode: $value"), + }; +} + +enum JniBufferWriteBack { + /// copy content, do not free buffer + COMMIT(1), + + /// free buffer w/o copying back + ABORT(2); + + final int value; + const JniBufferWriteBack(this.value); + + static JniBufferWriteBack fromValue(int value) => switch (value) { + 1 => COMMIT, + 2 => ABORT, + _ => + throw ArgumentError("Unknown value for JniBufferWriteBack: $value"), + }; +} + +final class _opaque_pthread_mutex_t extends ffi.Struct { + @ffi.Long() + external int __sig; + + @ffi.Array.multi([56]) + external ffi.Array __opaque; +} + +typedef __darwin_pthread_mutex_t = _opaque_pthread_mutex_t; +typedef pthread_mutex_t = __darwin_pthread_mutex_t; +typedef MutexLock = pthread_mutex_t; + +final class _opaque_pthread_cond_t extends ffi.Struct { + @ffi.Long() + external int __sig; + + @ffi.Array.multi([40]) + external ffi.Array __opaque; } +typedef __darwin_pthread_cond_t = _opaque_pthread_cond_t; +typedef pthread_cond_t = __darwin_pthread_cond_t; +typedef ConditionVariable = pthread_cond_t; + +/// Reference types, in C. +typedef JObjectPtr = ffi.Pointer; + +final class CallbackResult extends ffi.Struct { + external MutexLock lock; + + external ConditionVariable cond; + + @ffi.Int() + external int ready; + + external JObjectPtr object; +} + +typedef __darwin_pthread_key_t = ffi.UnsignedLong; +typedef Dart__darwin_pthread_key_t = int; +typedef pthread_key_t = __darwin_pthread_key_t; + +/// Types used by JNI API to distinguish between primitive types. +enum JniCallType { + booleanType(0), + byteType(1), + shortType(2), + charType(3), + intType(4), + longType(5), + floatType(6), + doubleType(7), + objectType(8), + voidType(9); + + final int value; + const JniCallType(this.value); + + static JniCallType fromValue(int value) => switch (value) { + 0 => booleanType, + 1 => byteType, + 2 => shortType, + 3 => charType, + 4 => intType, + 5 => longType, + 6 => floatType, + 7 => doubleType, + 8 => objectType, + 9 => voidType, + _ => throw ArgumentError("Unknown value for JniCallType: $value"), + }; +} + +/// Primitive types that match up with Java equivalents. +typedef JBooleanMarker = ffi.Uint8; +typedef DartJBooleanMarker = int; +typedef JByteMarker = ffi.Int8; +typedef DartJByteMarker = int; +typedef JCharMarker = ffi.Uint16; +typedef DartJCharMarker = int; +typedef JShortMarker = ffi.Int16; +typedef DartJShortMarker = int; +typedef JIntMarker = ffi.Int32; +typedef DartJIntMarker = int; +typedef JLongMarker = ffi.Int64; +typedef DartJLongMarker = int; +typedef JFloatMarker = ffi.Float; +typedef DartJFloatMarker = double; +typedef JDoubleMarker = ffi.Double; +typedef DartJDoubleMarker = double; + final class JValue extends ffi.Union { @JBooleanMarker() external int z; @@ -361,20 +514,20 @@ final class JValue extends ffi.Union { external JObjectPtr l; } -/// Primitive types that match up with Java equivalents. -typedef JBooleanMarker = ffi.Uint8; -typedef JByteMarker = ffi.Int8; -typedef JCharMarker = ffi.Uint16; -typedef JShortMarker = ffi.Int16; -typedef JIntMarker = ffi.Int32; -typedef JLongMarker = ffi.Int64; -typedef JFloatMarker = ffi.Float; -typedef JDoubleMarker = ffi.Double; - -/// Reference types, in C. -typedef JObjectPtr = ffi.Pointer; typedef JThrowablePtr = JObjectPtr; +/// Result type for use by JNI. +/// +/// If [exception] is null, it means the result is valid. +/// It's assumed that the caller knows the expected type in [result]. +final class JniResult extends ffi.Struct { + external JValue value; + + external JThrowablePtr exception; +} + +typedef JClassPtr = JObjectPtr; + /// Similar to [JniResult] but for class lookups. final class JniClassLookupResult extends ffi.Struct { external JClassPtr value; @@ -382,8 +535,6 @@ final class JniClassLookupResult extends ffi.Struct { external JThrowablePtr exception; } -typedef JClassPtr = JObjectPtr; - /// Similar to [JniResult] but for method/field ID lookups. final class JniPointerResult extends ffi.Struct { external ffi.Pointer value; @@ -391,6 +542,8 @@ final class JniPointerResult extends ffi.Struct { external JThrowablePtr exception; } +typedef JStringPtr = JObjectPtr; + /// JniExceptionDetails holds 2 jstring objects, one is the result of /// calling `toString` on exception object, other is stack trace; final class JniExceptionDetails extends ffi.Struct { @@ -399,49 +552,57 @@ final class JniExceptionDetails extends ffi.Struct { external JStringPtr stacktrace; } -typedef JStringPtr = JObjectPtr; typedef JavaVM = ffi.Pointer; +typedef JniEnv = ffi.Pointer; -/// JNI invocation interface. -final class JNIInvokeInterface extends ffi.Struct { - external ffi.Pointer reserved0; +/// "cardinal indices and sizes" +typedef JSizeMarker = JIntMarker; - external ffi.Pointer reserved1; +final class jmethodID_ extends ffi.Opaque {} - external ffi.Pointer reserved2; +typedef JMethodIDPtr = ffi.Pointer; - external ffi - .Pointer vm)>> - DestroyJavaVM; +final class jfieldID_ extends ffi.Opaque {} - external ffi.Pointer< - ffi.NativeFunction< - JIntMarker Function( - ffi.Pointer vm, - ffi.Pointer> p_env, - ffi.Pointer thr_args)>> AttachCurrentThread; +typedef JFieldIDPtr = ffi.Pointer; +typedef JArrayPtr = JObjectPtr; +typedef JObjectArrayPtr = JArrayPtr; +typedef JBooleanArrayPtr = JArrayPtr; +typedef JByteArrayPtr = JArrayPtr; +typedef JCharArrayPtr = JArrayPtr; +typedef JShortArrayPtr = JArrayPtr; +typedef JIntArrayPtr = JArrayPtr; +typedef JLongArrayPtr = JArrayPtr; +typedef JFloatArrayPtr = JArrayPtr; +typedef JDoubleArrayPtr = JArrayPtr; - external ffi - .Pointer vm)>> - DetachCurrentThread; +final class JNINativeMethod extends ffi.Struct { + external ffi.Pointer name; - external ffi.Pointer< - ffi.NativeFunction< - JIntMarker Function( - ffi.Pointer vm, - ffi.Pointer> p_env, - JIntMarker version)>> GetEnv; + external ffi.Pointer signature; - external ffi.Pointer< - ffi.NativeFunction< - JIntMarker Function( - ffi.Pointer vm, - ffi.Pointer> p_env, - ffi.Pointer thr_args)>> AttachCurrentThreadAsDaemon; + external ffi.Pointer fnPtr; } -typedef JavaVM1 = ffi.Pointer; -typedef JniEnv = ffi.Pointer; +typedef JWeakPtr = JObjectPtr; + +enum JObjectRefType { + JNIInvalidRefType(0), + JNILocalRefType(1), + JNIGlobalRefType(2), + JNIWeakGlobalRefType(3); + + final int value; + const JObjectRefType(this.value); + + static JObjectRefType fromValue(int value) => switch (value) { + 0 => JNIInvalidRefType, + 1 => JNILocalRefType, + 2 => JNIGlobalRefType, + 3 => JNIWeakGlobalRefType, + _ => throw ArgumentError("Unknown value for JObjectRefType: $value"), + }; +} /// Table of interface function pointers. final class JNINativeInterface extends ffi.Struct { @@ -453,14 +614,14 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer reserved3; - external ffi.Pointer< - ffi.NativeFunction env)>> + external ffi + .Pointer env)>> GetVersion; external ffi.Pointer< ffi.NativeFunction< JClassPtr Function( - ffi.Pointer env, + ffi.Pointer env, ffi.Pointer name, JObjectPtr loader, ffi.Pointer buf, @@ -469,325 +630,325 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< JClassPtr Function( - ffi.Pointer env, ffi.Pointer name)>> FindClass; + ffi.Pointer env, ffi.Pointer name)>> FindClass; external ffi.Pointer< - ffi.NativeFunction< - JMethodIDPtr Function( - ffi.Pointer env, JObjectPtr method)>> - FromReflectedMethod; + ffi.NativeFunction< + JMethodIDPtr Function( + ffi.Pointer env, JObjectPtr method)>> FromReflectedMethod; external ffi.Pointer< ffi.NativeFunction< - JFieldIDPtr Function(ffi.Pointer env, JObjectPtr field)>> + JFieldIDPtr Function(ffi.Pointer env, JObjectPtr field)>> FromReflectedField; /// spec doesn't show jboolean parameter external ffi.Pointer< ffi.NativeFunction< JObjectPtr Function( - ffi.Pointer env, + ffi.Pointer env, JClassPtr cls, JMethodIDPtr methodId, JBooleanMarker isStatic)>> ToReflectedMethod; external ffi.Pointer< ffi.NativeFunction< - JClassPtr Function(ffi.Pointer env, JClassPtr clazz)>> + JClassPtr Function(ffi.Pointer env, JClassPtr clazz)>> GetSuperclass; external ffi.Pointer< - ffi.NativeFunction< - JBooleanMarker Function(ffi.Pointer env, JClassPtr clazz1, - JClassPtr clazz2)>> IsAssignableFrom; + ffi.NativeFunction< + JBooleanMarker Function( + ffi.Pointer env, JClassPtr clazz1, JClassPtr clazz2)>> + IsAssignableFrom; /// spec doesn't show jboolean parameter external ffi.Pointer< ffi.NativeFunction< - JObjectPtr Function(ffi.Pointer env, JClassPtr cls, + JObjectPtr Function(ffi.Pointer env, JClassPtr cls, JFieldIDPtr fieldID, JBooleanMarker isStatic)>> ToReflectedField; external ffi.Pointer< ffi.NativeFunction< - JIntMarker Function(ffi.Pointer env, JThrowablePtr obj)>> + JIntMarker Function(ffi.Pointer env, JThrowablePtr obj)>> Throw; external ffi.Pointer< ffi.NativeFunction< - JIntMarker Function(ffi.Pointer env, JClassPtr clazz, + JIntMarker Function(ffi.Pointer env, JClassPtr clazz, ffi.Pointer message)>> ThrowNew; external ffi.Pointer< - ffi.NativeFunction env)>> + ffi.NativeFunction env)>> ExceptionOccurred; external ffi - .Pointer env)>> + .Pointer env)>> ExceptionDescribe; external ffi - .Pointer env)>> + .Pointer env)>> ExceptionClear; external ffi.Pointer< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer env, ffi.Pointer msg)>> FatalError; + ffi.Pointer env, ffi.Pointer msg)>> FatalError; external ffi.Pointer< ffi.NativeFunction< JIntMarker Function( - ffi.Pointer env, JIntMarker capacity)>> PushLocalFrame; + ffi.Pointer env, JIntMarker capacity)>> PushLocalFrame; external ffi.Pointer< ffi.NativeFunction< - JObjectPtr Function(ffi.Pointer env, JObjectPtr result)>> + JObjectPtr Function(ffi.Pointer env, JObjectPtr result)>> PopLocalFrame; external ffi.Pointer< ffi.NativeFunction< - JObjectPtr Function(ffi.Pointer env, JObjectPtr obj)>> + JObjectPtr Function(ffi.Pointer env, JObjectPtr obj)>> NewGlobalRef; external ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer env, JObjectPtr globalRef)>> DeleteGlobalRef; + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer env, JObjectPtr globalRef)>> + DeleteGlobalRef; external ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer env, JObjectPtr localRef)>> + ffi.Void Function(ffi.Pointer env, JObjectPtr localRef)>> DeleteLocalRef; external ffi.Pointer< ffi.NativeFunction< JBooleanMarker Function( - ffi.Pointer env, JObjectPtr ref1, JObjectPtr ref2)>> + ffi.Pointer env, JObjectPtr ref1, JObjectPtr ref2)>> IsSameObject; external ffi.Pointer< ffi.NativeFunction< - JObjectPtr Function(ffi.Pointer env, JObjectPtr obj)>> + JObjectPtr Function(ffi.Pointer env, JObjectPtr obj)>> NewLocalRef; external ffi.Pointer< ffi.NativeFunction< JIntMarker Function( - ffi.Pointer env, JIntMarker capacity)>> + ffi.Pointer env, JIntMarker capacity)>> EnsureLocalCapacity; external ffi.Pointer< ffi.NativeFunction< - JObjectPtr Function(ffi.Pointer env, JClassPtr clazz)>> + JObjectPtr Function(ffi.Pointer env, JClassPtr clazz)>> AllocObject; external ffi.Pointer< ffi.NativeFunction< - JObjectPtr Function(ffi.Pointer env, JClassPtr clazz, + JObjectPtr Function(ffi.Pointer env, JClassPtr clazz, JMethodIDPtr methodID)>> NewObject; external ffi.Pointer< ffi.NativeFunction< - JObjectPtr Function(ffi.Pointer, JClassPtr, JMethodIDPtr, + JObjectPtr Function(ffi.Pointer, JClassPtr, JMethodIDPtr, ffi.Pointer)>> NewObjectV; external ffi.Pointer< ffi.NativeFunction< - JObjectPtr Function(ffi.Pointer env, JClassPtr clazz, + JObjectPtr Function(ffi.Pointer env, JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args)>> NewObjectA; external ffi.Pointer< ffi.NativeFunction< - JClassPtr Function(ffi.Pointer env, JObjectPtr obj)>> + JClassPtr Function(ffi.Pointer env, JObjectPtr obj)>> GetObjectClass; external ffi.Pointer< ffi.NativeFunction< JBooleanMarker Function( - ffi.Pointer env, JObjectPtr obj, JClassPtr clazz)>> + ffi.Pointer env, JObjectPtr obj, JClassPtr clazz)>> IsInstanceOf; external ffi.Pointer< ffi.NativeFunction< JMethodIDPtr Function( - ffi.Pointer env, + ffi.Pointer env, JClassPtr clazz, ffi.Pointer name, ffi.Pointer sig)>> GetMethodID; external ffi.Pointer< ffi.NativeFunction< - JObjectPtr Function(ffi.Pointer env, JObjectPtr obj, + JObjectPtr Function(ffi.Pointer env, JObjectPtr obj, JMethodIDPtr methodID)>> CallObjectMethod; external ffi.Pointer< ffi.NativeFunction< - JObjectPtr Function(ffi.Pointer, JObjectPtr, JMethodIDPtr, + JObjectPtr Function(ffi.Pointer, JObjectPtr, JMethodIDPtr, ffi.Pointer)>> CallObjectMethodV; external ffi.Pointer< ffi.NativeFunction< JObjectPtr Function( - ffi.Pointer env, + ffi.Pointer env, JObjectPtr obj, JMethodIDPtr methodID, ffi.Pointer args)>> CallObjectMethodA; external ffi.Pointer< ffi.NativeFunction< - JBooleanMarker Function(ffi.Pointer env, JObjectPtr obj, + JBooleanMarker Function(ffi.Pointer env, JObjectPtr obj, JMethodIDPtr methodID)>> CallBooleanMethod; external ffi.Pointer< ffi.NativeFunction< - JBooleanMarker Function(ffi.Pointer, JObjectPtr, - JMethodIDPtr, ffi.Pointer)>> CallBooleanMethodV; + JBooleanMarker Function(ffi.Pointer, JObjectPtr, JMethodIDPtr, + ffi.Pointer)>> CallBooleanMethodV; external ffi.Pointer< ffi.NativeFunction< JBooleanMarker Function( - ffi.Pointer env, + ffi.Pointer env, JObjectPtr obj, JMethodIDPtr methodId, ffi.Pointer args)>> CallBooleanMethodA; external ffi.Pointer< ffi.NativeFunction< - JByteMarker Function(ffi.Pointer env, JObjectPtr obj, + JByteMarker Function(ffi.Pointer env, JObjectPtr obj, JMethodIDPtr methodID)>> CallByteMethod; external ffi.Pointer< ffi.NativeFunction< - JByteMarker Function(ffi.Pointer, JObjectPtr, JMethodIDPtr, + JByteMarker Function(ffi.Pointer, JObjectPtr, JMethodIDPtr, ffi.Pointer)>> CallByteMethodV; external ffi.Pointer< ffi.NativeFunction< JByteMarker Function( - ffi.Pointer env, + ffi.Pointer env, JObjectPtr obj, JMethodIDPtr methodID, ffi.Pointer args)>> CallByteMethodA; external ffi.Pointer< ffi.NativeFunction< - JCharMarker Function(ffi.Pointer env, JObjectPtr obj, + JCharMarker Function(ffi.Pointer env, JObjectPtr obj, JMethodIDPtr methodID)>> CallCharMethod; external ffi.Pointer< ffi.NativeFunction< - JCharMarker Function(ffi.Pointer, JObjectPtr, JMethodIDPtr, + JCharMarker Function(ffi.Pointer, JObjectPtr, JMethodIDPtr, ffi.Pointer)>> CallCharMethodV; external ffi.Pointer< ffi.NativeFunction< JCharMarker Function( - ffi.Pointer env, + ffi.Pointer env, JObjectPtr obj, JMethodIDPtr methodID, ffi.Pointer args)>> CallCharMethodA; external ffi.Pointer< ffi.NativeFunction< - JShortMarker Function(ffi.Pointer env, JObjectPtr obj, + JShortMarker Function(ffi.Pointer env, JObjectPtr obj, JMethodIDPtr methodID)>> CallShortMethod; external ffi.Pointer< ffi.NativeFunction< - JShortMarker Function(ffi.Pointer, JObjectPtr, JMethodIDPtr, + JShortMarker Function(ffi.Pointer, JObjectPtr, JMethodIDPtr, ffi.Pointer)>> CallShortMethodV; external ffi.Pointer< ffi.NativeFunction< JShortMarker Function( - ffi.Pointer env, + ffi.Pointer env, JObjectPtr obj, JMethodIDPtr methodID, ffi.Pointer args)>> CallShortMethodA; external ffi.Pointer< ffi.NativeFunction< - JIntMarker Function(ffi.Pointer env, JObjectPtr obj, + JIntMarker Function(ffi.Pointer env, JObjectPtr obj, JMethodIDPtr methodID)>> CallIntMethod; external ffi.Pointer< ffi.NativeFunction< - JIntMarker Function(ffi.Pointer, JObjectPtr, JMethodIDPtr, + JIntMarker Function(ffi.Pointer, JObjectPtr, JMethodIDPtr, ffi.Pointer)>> CallIntMethodV; external ffi.Pointer< ffi.NativeFunction< - JIntMarker Function(ffi.Pointer env, JObjectPtr obj, + JIntMarker Function(ffi.Pointer env, JObjectPtr obj, JMethodIDPtr methodID, ffi.Pointer args)>> CallIntMethodA; external ffi.Pointer< ffi.NativeFunction< - JLongMarker Function(ffi.Pointer env, JObjectPtr obj, + JLongMarker Function(ffi.Pointer env, JObjectPtr obj, JMethodIDPtr methodID)>> CallLongMethod; external ffi.Pointer< ffi.NativeFunction< - JLongMarker Function(ffi.Pointer, JObjectPtr, JMethodIDPtr, + JLongMarker Function(ffi.Pointer, JObjectPtr, JMethodIDPtr, ffi.Pointer)>> CallLongMethodV; external ffi.Pointer< ffi.NativeFunction< JLongMarker Function( - ffi.Pointer env, + ffi.Pointer env, JObjectPtr obj, JMethodIDPtr methodID, ffi.Pointer args)>> CallLongMethodA; external ffi.Pointer< ffi.NativeFunction< - JFloatMarker Function(ffi.Pointer env, JObjectPtr obj, + JFloatMarker Function(ffi.Pointer env, JObjectPtr obj, JMethodIDPtr methodID)>> CallFloatMethod; external ffi.Pointer< ffi.NativeFunction< - JFloatMarker Function(ffi.Pointer, JObjectPtr, JMethodIDPtr, + JFloatMarker Function(ffi.Pointer, JObjectPtr, JMethodIDPtr, ffi.Pointer)>> CallFloatMethodV; external ffi.Pointer< ffi.NativeFunction< JFloatMarker Function( - ffi.Pointer env, + ffi.Pointer env, JObjectPtr obj, JMethodIDPtr methodID, ffi.Pointer args)>> CallFloatMethodA; external ffi.Pointer< ffi.NativeFunction< - JDoubleMarker Function(ffi.Pointer env, JObjectPtr obj, + JDoubleMarker Function(ffi.Pointer env, JObjectPtr obj, JMethodIDPtr methodID)>> CallDoubleMethod; external ffi.Pointer< ffi.NativeFunction< - JDoubleMarker Function(ffi.Pointer, JObjectPtr, JMethodIDPtr, + JDoubleMarker Function(ffi.Pointer, JObjectPtr, JMethodIDPtr, ffi.Pointer)>> CallDoubleMethodV; external ffi.Pointer< ffi.NativeFunction< JDoubleMarker Function( - ffi.Pointer env, + ffi.Pointer env, JObjectPtr obj, JMethodIDPtr methodID, ffi.Pointer args)>> CallDoubleMethodA; external ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer env, JObjectPtr obj, + ffi.Void Function(ffi.Pointer env, JObjectPtr obj, JMethodIDPtr methodID)>> CallVoidMethod; external ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, JObjectPtr, JMethodIDPtr, + ffi.Void Function(ffi.Pointer, JObjectPtr, JMethodIDPtr, ffi.Pointer)>> CallVoidMethodV; external ffi.Pointer< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer env, + ffi.Pointer env, JObjectPtr obj, JMethodIDPtr methodID, ffi.Pointer args)>> CallVoidMethodA; @@ -795,7 +956,7 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< JObjectPtr Function( - ffi.Pointer env, + ffi.Pointer env, JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID)>> CallNonvirtualObjectMethod; @@ -803,7 +964,7 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< JObjectPtr Function( - ffi.Pointer, + ffi.Pointer, JObjectPtr, JClassPtr, JMethodIDPtr, @@ -812,7 +973,7 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< JObjectPtr Function( - ffi.Pointer env, + ffi.Pointer env, JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID, @@ -821,7 +982,7 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< JBooleanMarker Function( - ffi.Pointer env, + ffi.Pointer env, JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID)>> CallNonvirtualBooleanMethod; @@ -829,7 +990,7 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< JBooleanMarker Function( - ffi.Pointer, + ffi.Pointer, JObjectPtr, JClassPtr, JMethodIDPtr, @@ -838,7 +999,7 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< JBooleanMarker Function( - ffi.Pointer env, + ffi.Pointer env, JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID, @@ -847,20 +1008,20 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< JByteMarker Function( - ffi.Pointer env, + ffi.Pointer env, JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID)>> CallNonvirtualByteMethod; external ffi.Pointer< ffi.NativeFunction< - JByteMarker Function(ffi.Pointer, JObjectPtr, JClassPtr, + JByteMarker Function(ffi.Pointer, JObjectPtr, JClassPtr, JMethodIDPtr, ffi.Pointer)>> CallNonvirtualByteMethodV; external ffi.Pointer< ffi.NativeFunction< JByteMarker Function( - ffi.Pointer env, + ffi.Pointer env, JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID, @@ -869,20 +1030,20 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< JCharMarker Function( - ffi.Pointer env, + ffi.Pointer env, JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID)>> CallNonvirtualCharMethod; external ffi.Pointer< ffi.NativeFunction< - JCharMarker Function(ffi.Pointer, JObjectPtr, JClassPtr, + JCharMarker Function(ffi.Pointer, JObjectPtr, JClassPtr, JMethodIDPtr, ffi.Pointer)>> CallNonvirtualCharMethodV; external ffi.Pointer< ffi.NativeFunction< JCharMarker Function( - ffi.Pointer env, + ffi.Pointer env, JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID, @@ -891,20 +1052,20 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< JShortMarker Function( - ffi.Pointer env, + ffi.Pointer env, JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID)>> CallNonvirtualShortMethod; external ffi.Pointer< ffi.NativeFunction< - JShortMarker Function(ffi.Pointer, JObjectPtr, JClassPtr, + JShortMarker Function(ffi.Pointer, JObjectPtr, JClassPtr, JMethodIDPtr, ffi.Pointer)>> CallNonvirtualShortMethodV; external ffi.Pointer< ffi.NativeFunction< JShortMarker Function( - ffi.Pointer env, + ffi.Pointer env, JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID, @@ -912,18 +1073,18 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< - JIntMarker Function(ffi.Pointer env, JObjectPtr obj, + JIntMarker Function(ffi.Pointer env, JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID)>> CallNonvirtualIntMethod; external ffi.Pointer< ffi.NativeFunction< - JIntMarker Function(ffi.Pointer, JObjectPtr, JClassPtr, + JIntMarker Function(ffi.Pointer, JObjectPtr, JClassPtr, JMethodIDPtr, ffi.Pointer)>> CallNonvirtualIntMethodV; external ffi.Pointer< ffi.NativeFunction< JIntMarker Function( - ffi.Pointer env, + ffi.Pointer env, JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID, @@ -932,20 +1093,20 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< JLongMarker Function( - ffi.Pointer env, + ffi.Pointer env, JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID)>> CallNonvirtualLongMethod; external ffi.Pointer< ffi.NativeFunction< - JLongMarker Function(ffi.Pointer, JObjectPtr, JClassPtr, + JLongMarker Function(ffi.Pointer, JObjectPtr, JClassPtr, JMethodIDPtr, ffi.Pointer)>> CallNonvirtualLongMethodV; external ffi.Pointer< ffi.NativeFunction< JLongMarker Function( - ffi.Pointer env, + ffi.Pointer env, JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID, @@ -954,20 +1115,20 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< JFloatMarker Function( - ffi.Pointer env, + ffi.Pointer env, JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID)>> CallNonvirtualFloatMethod; external ffi.Pointer< ffi.NativeFunction< - JFloatMarker Function(ffi.Pointer, JObjectPtr, JClassPtr, + JFloatMarker Function(ffi.Pointer, JObjectPtr, JClassPtr, JMethodIDPtr, ffi.Pointer)>> CallNonvirtualFloatMethodV; external ffi.Pointer< ffi.NativeFunction< JFloatMarker Function( - ffi.Pointer env, + ffi.Pointer env, JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID, @@ -976,7 +1137,7 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< JDoubleMarker Function( - ffi.Pointer env, + ffi.Pointer env, JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID)>> CallNonvirtualDoubleMethod; @@ -984,7 +1145,7 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< JDoubleMarker Function( - ffi.Pointer, + ffi.Pointer, JObjectPtr, JClassPtr, JMethodIDPtr, @@ -993,7 +1154,7 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< JDoubleMarker Function( - ffi.Pointer env, + ffi.Pointer env, JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID, @@ -1002,20 +1163,20 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer env, + ffi.Pointer env, JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID)>> CallNonvirtualVoidMethod; external ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, JObjectPtr, JClassPtr, + ffi.Void Function(ffi.Pointer, JObjectPtr, JClassPtr, JMethodIDPtr, ffi.Pointer)>> CallNonvirtualVoidMethodV; external ffi.Pointer< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer env, + ffi.Pointer env, JObjectPtr obj, JClassPtr clazz, JMethodIDPtr methodID, @@ -1024,285 +1185,285 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< JFieldIDPtr Function( - ffi.Pointer env, + ffi.Pointer env, JClassPtr clazz, ffi.Pointer name, ffi.Pointer sig)>> GetFieldID; external ffi.Pointer< ffi.NativeFunction< - JObjectPtr Function(ffi.Pointer env, JObjectPtr obj, + JObjectPtr Function(ffi.Pointer env, JObjectPtr obj, JFieldIDPtr fieldID)>> GetObjectField; external ffi.Pointer< ffi.NativeFunction< - JBooleanMarker Function(ffi.Pointer env, JObjectPtr obj, + JBooleanMarker Function(ffi.Pointer env, JObjectPtr obj, JFieldIDPtr fieldID)>> GetBooleanField; external ffi.Pointer< ffi.NativeFunction< - JByteMarker Function(ffi.Pointer env, JObjectPtr obj, + JByteMarker Function(ffi.Pointer env, JObjectPtr obj, JFieldIDPtr fieldID)>> GetByteField; external ffi.Pointer< ffi.NativeFunction< - JCharMarker Function(ffi.Pointer env, JObjectPtr obj, + JCharMarker Function(ffi.Pointer env, JObjectPtr obj, JFieldIDPtr fieldID)>> GetCharField; external ffi.Pointer< ffi.NativeFunction< - JShortMarker Function(ffi.Pointer env, JObjectPtr obj, + JShortMarker Function(ffi.Pointer env, JObjectPtr obj, JFieldIDPtr fieldID)>> GetShortField; external ffi.Pointer< ffi.NativeFunction< - JIntMarker Function(ffi.Pointer env, JObjectPtr obj, + JIntMarker Function(ffi.Pointer env, JObjectPtr obj, JFieldIDPtr fieldID)>> GetIntField; external ffi.Pointer< ffi.NativeFunction< - JLongMarker Function(ffi.Pointer env, JObjectPtr obj, + JLongMarker Function(ffi.Pointer env, JObjectPtr obj, JFieldIDPtr fieldID)>> GetLongField; external ffi.Pointer< ffi.NativeFunction< - JFloatMarker Function(ffi.Pointer env, JObjectPtr obj, + JFloatMarker Function(ffi.Pointer env, JObjectPtr obj, JFieldIDPtr fieldID)>> GetFloatField; external ffi.Pointer< ffi.NativeFunction< - JDoubleMarker Function(ffi.Pointer env, JObjectPtr obj, + JDoubleMarker Function(ffi.Pointer env, JObjectPtr obj, JFieldIDPtr fieldID)>> GetDoubleField; external ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer env, JObjectPtr obj, + ffi.Void Function(ffi.Pointer env, JObjectPtr obj, JFieldIDPtr fieldID, JObjectPtr val)>> SetObjectField; external ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer env, JObjectPtr obj, + ffi.Void Function(ffi.Pointer env, JObjectPtr obj, JFieldIDPtr fieldID, JBooleanMarker val)>> SetBooleanField; external ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer env, JObjectPtr obj, + ffi.Void Function(ffi.Pointer env, JObjectPtr obj, JFieldIDPtr fieldID, JByteMarker val)>> SetByteField; external ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer env, JObjectPtr obj, + ffi.Void Function(ffi.Pointer env, JObjectPtr obj, JFieldIDPtr fieldID, JCharMarker val)>> SetCharField; external ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer env, JObjectPtr obj, + ffi.Void Function(ffi.Pointer env, JObjectPtr obj, JFieldIDPtr fieldID, JShortMarker val)>> SetShortField; external ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer env, JObjectPtr obj, + ffi.Void Function(ffi.Pointer env, JObjectPtr obj, JFieldIDPtr fieldID, JIntMarker val)>> SetIntField; external ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer env, JObjectPtr obj, + ffi.Void Function(ffi.Pointer env, JObjectPtr obj, JFieldIDPtr fieldID, JLongMarker val)>> SetLongField; external ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer env, JObjectPtr obj, + ffi.Void Function(ffi.Pointer env, JObjectPtr obj, JFieldIDPtr fieldID, JFloatMarker val)>> SetFloatField; external ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer env, JObjectPtr obj, + ffi.Void Function(ffi.Pointer env, JObjectPtr obj, JFieldIDPtr fieldID, JDoubleMarker val)>> SetDoubleField; external ffi.Pointer< ffi.NativeFunction< JMethodIDPtr Function( - ffi.Pointer env, + ffi.Pointer env, JClassPtr clazz, ffi.Pointer name, ffi.Pointer sig)>> GetStaticMethodID; external ffi.Pointer< ffi.NativeFunction< - JObjectPtr Function(ffi.Pointer env, JClassPtr clazz, + JObjectPtr Function(ffi.Pointer env, JClassPtr clazz, JMethodIDPtr methodID)>> CallStaticObjectMethod; external ffi.Pointer< ffi.NativeFunction< - JObjectPtr Function(ffi.Pointer, JClassPtr, JMethodIDPtr, + JObjectPtr Function(ffi.Pointer, JClassPtr, JMethodIDPtr, ffi.Pointer)>> CallStaticObjectMethodV; external ffi.Pointer< ffi.NativeFunction< JObjectPtr Function( - ffi.Pointer env, + ffi.Pointer env, JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args)>> CallStaticObjectMethodA; external ffi.Pointer< ffi.NativeFunction< - JBooleanMarker Function(ffi.Pointer env, JClassPtr clazz, + JBooleanMarker Function(ffi.Pointer env, JClassPtr clazz, JMethodIDPtr methodID)>> CallStaticBooleanMethod; external ffi.Pointer< ffi.NativeFunction< - JBooleanMarker Function(ffi.Pointer, JClassPtr, JMethodIDPtr, + JBooleanMarker Function(ffi.Pointer, JClassPtr, JMethodIDPtr, ffi.Pointer)>> CallStaticBooleanMethodV; external ffi.Pointer< ffi.NativeFunction< JBooleanMarker Function( - ffi.Pointer env, + ffi.Pointer env, JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args)>> CallStaticBooleanMethodA; external ffi.Pointer< ffi.NativeFunction< - JByteMarker Function(ffi.Pointer env, JClassPtr clazz, + JByteMarker Function(ffi.Pointer env, JClassPtr clazz, JMethodIDPtr methodID)>> CallStaticByteMethod; external ffi.Pointer< ffi.NativeFunction< - JByteMarker Function(ffi.Pointer, JClassPtr, JMethodIDPtr, + JByteMarker Function(ffi.Pointer, JClassPtr, JMethodIDPtr, ffi.Pointer)>> CallStaticByteMethodV; external ffi.Pointer< ffi.NativeFunction< JByteMarker Function( - ffi.Pointer env, + ffi.Pointer env, JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args)>> CallStaticByteMethodA; external ffi.Pointer< ffi.NativeFunction< - JCharMarker Function(ffi.Pointer env, JClassPtr clazz, + JCharMarker Function(ffi.Pointer env, JClassPtr clazz, JMethodIDPtr methodID)>> CallStaticCharMethod; external ffi.Pointer< ffi.NativeFunction< - JCharMarker Function(ffi.Pointer, JClassPtr, JMethodIDPtr, + JCharMarker Function(ffi.Pointer, JClassPtr, JMethodIDPtr, ffi.Pointer)>> CallStaticCharMethodV; external ffi.Pointer< ffi.NativeFunction< JCharMarker Function( - ffi.Pointer env, + ffi.Pointer env, JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args)>> CallStaticCharMethodA; external ffi.Pointer< ffi.NativeFunction< - JShortMarker Function(ffi.Pointer env, JClassPtr clazz, + JShortMarker Function(ffi.Pointer env, JClassPtr clazz, JMethodIDPtr methodID)>> CallStaticShortMethod; external ffi.Pointer< ffi.NativeFunction< - JShortMarker Function(ffi.Pointer, JClassPtr, JMethodIDPtr, + JShortMarker Function(ffi.Pointer, JClassPtr, JMethodIDPtr, ffi.Pointer)>> CallStaticShortMethodV; external ffi.Pointer< ffi.NativeFunction< JShortMarker Function( - ffi.Pointer env, + ffi.Pointer env, JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args)>> CallStaticShortMethodA; external ffi.Pointer< ffi.NativeFunction< - JIntMarker Function(ffi.Pointer env, JClassPtr clazz, + JIntMarker Function(ffi.Pointer env, JClassPtr clazz, JMethodIDPtr methodID)>> CallStaticIntMethod; external ffi.Pointer< ffi.NativeFunction< - JIntMarker Function(ffi.Pointer, JClassPtr, JMethodIDPtr, + JIntMarker Function(ffi.Pointer, JClassPtr, JMethodIDPtr, ffi.Pointer)>> CallStaticIntMethodV; external ffi.Pointer< ffi.NativeFunction< JIntMarker Function( - ffi.Pointer env, + ffi.Pointer env, JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args)>> CallStaticIntMethodA; external ffi.Pointer< ffi.NativeFunction< - JLongMarker Function(ffi.Pointer env, JClassPtr clazz, + JLongMarker Function(ffi.Pointer env, JClassPtr clazz, JMethodIDPtr methodID)>> CallStaticLongMethod; external ffi.Pointer< ffi.NativeFunction< - JLongMarker Function(ffi.Pointer, JClassPtr, JMethodIDPtr, + JLongMarker Function(ffi.Pointer, JClassPtr, JMethodIDPtr, ffi.Pointer)>> CallStaticLongMethodV; external ffi.Pointer< ffi.NativeFunction< JLongMarker Function( - ffi.Pointer env, + ffi.Pointer env, JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args)>> CallStaticLongMethodA; external ffi.Pointer< ffi.NativeFunction< - JFloatMarker Function(ffi.Pointer env, JClassPtr clazz, + JFloatMarker Function(ffi.Pointer env, JClassPtr clazz, JMethodIDPtr methodID)>> CallStaticFloatMethod; external ffi.Pointer< ffi.NativeFunction< - JFloatMarker Function(ffi.Pointer, JClassPtr, JMethodIDPtr, + JFloatMarker Function(ffi.Pointer, JClassPtr, JMethodIDPtr, ffi.Pointer)>> CallStaticFloatMethodV; external ffi.Pointer< ffi.NativeFunction< JFloatMarker Function( - ffi.Pointer env, + ffi.Pointer env, JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args)>> CallStaticFloatMethodA; external ffi.Pointer< ffi.NativeFunction< - JDoubleMarker Function(ffi.Pointer env, JClassPtr clazz, + JDoubleMarker Function(ffi.Pointer env, JClassPtr clazz, JMethodIDPtr methodID)>> CallStaticDoubleMethod; external ffi.Pointer< ffi.NativeFunction< - JDoubleMarker Function(ffi.Pointer, JClassPtr, JMethodIDPtr, + JDoubleMarker Function(ffi.Pointer, JClassPtr, JMethodIDPtr, ffi.Pointer)>> CallStaticDoubleMethodV; external ffi.Pointer< ffi.NativeFunction< JDoubleMarker Function( - ffi.Pointer env, + ffi.Pointer env, JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args)>> CallStaticDoubleMethodA; external ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer env, JClassPtr clazz, + ffi.Void Function(ffi.Pointer env, JClassPtr clazz, JMethodIDPtr methodID)>> CallStaticVoidMethod; external ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, JClassPtr, JMethodIDPtr, + ffi.Void Function(ffi.Pointer, JClassPtr, JMethodIDPtr, ffi.Pointer)>> CallStaticVoidMethodV; external ffi.Pointer< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer env, + ffi.Pointer env, JClassPtr clazz, JMethodIDPtr methodID, ffi.Pointer args)>> CallStaticVoidMethodA; @@ -1310,271 +1471,271 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< JFieldIDPtr Function( - ffi.Pointer env, + ffi.Pointer env, JClassPtr clazz, ffi.Pointer name, ffi.Pointer sig)>> GetStaticFieldID; external ffi.Pointer< ffi.NativeFunction< - JObjectPtr Function(ffi.Pointer env, JClassPtr clazz, + JObjectPtr Function(ffi.Pointer env, JClassPtr clazz, JFieldIDPtr fieldID)>> GetStaticObjectField; external ffi.Pointer< ffi.NativeFunction< - JBooleanMarker Function(ffi.Pointer env, JClassPtr clazz, + JBooleanMarker Function(ffi.Pointer env, JClassPtr clazz, JFieldIDPtr fieldID)>> GetStaticBooleanField; external ffi.Pointer< ffi.NativeFunction< - JByteMarker Function(ffi.Pointer env, JClassPtr clazz, + JByteMarker Function(ffi.Pointer env, JClassPtr clazz, JFieldIDPtr fieldID)>> GetStaticByteField; external ffi.Pointer< ffi.NativeFunction< - JCharMarker Function(ffi.Pointer env, JClassPtr clazz, + JCharMarker Function(ffi.Pointer env, JClassPtr clazz, JFieldIDPtr fieldID)>> GetStaticCharField; external ffi.Pointer< ffi.NativeFunction< - JShortMarker Function(ffi.Pointer env, JClassPtr clazz, + JShortMarker Function(ffi.Pointer env, JClassPtr clazz, JFieldIDPtr fieldID)>> GetStaticShortField; external ffi.Pointer< ffi.NativeFunction< - JIntMarker Function(ffi.Pointer env, JClassPtr clazz, + JIntMarker Function(ffi.Pointer env, JClassPtr clazz, JFieldIDPtr fieldID)>> GetStaticIntField; external ffi.Pointer< ffi.NativeFunction< - JLongMarker Function(ffi.Pointer env, JClassPtr clazz, + JLongMarker Function(ffi.Pointer env, JClassPtr clazz, JFieldIDPtr fieldID)>> GetStaticLongField; external ffi.Pointer< ffi.NativeFunction< - JFloatMarker Function(ffi.Pointer env, JClassPtr clazz, + JFloatMarker Function(ffi.Pointer env, JClassPtr clazz, JFieldIDPtr fieldID)>> GetStaticFloatField; external ffi.Pointer< ffi.NativeFunction< - JDoubleMarker Function(ffi.Pointer env, JClassPtr clazz, + JDoubleMarker Function(ffi.Pointer env, JClassPtr clazz, JFieldIDPtr fieldID)>> GetStaticDoubleField; external ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer env, JClassPtr clazz, + ffi.Void Function(ffi.Pointer env, JClassPtr clazz, JFieldIDPtr fieldID, JObjectPtr val)>> SetStaticObjectField; external ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer env, JClassPtr clazz, + ffi.Void Function(ffi.Pointer env, JClassPtr clazz, JFieldIDPtr fieldID, JBooleanMarker val)>> SetStaticBooleanField; external ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer env, JClassPtr clazz, + ffi.Void Function(ffi.Pointer env, JClassPtr clazz, JFieldIDPtr fieldID, JByteMarker val)>> SetStaticByteField; external ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer env, JClassPtr clazz, + ffi.Void Function(ffi.Pointer env, JClassPtr clazz, JFieldIDPtr fieldID, JCharMarker val)>> SetStaticCharField; external ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer env, JClassPtr clazz, + ffi.Void Function(ffi.Pointer env, JClassPtr clazz, JFieldIDPtr fieldID, JShortMarker val)>> SetStaticShortField; external ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer env, JClassPtr clazz, + ffi.Void Function(ffi.Pointer env, JClassPtr clazz, JFieldIDPtr fieldID, JIntMarker val)>> SetStaticIntField; external ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer env, JClassPtr clazz, + ffi.Void Function(ffi.Pointer env, JClassPtr clazz, JFieldIDPtr fieldID, JLongMarker val)>> SetStaticLongField; external ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer env, JClassPtr clazz, + ffi.Void Function(ffi.Pointer env, JClassPtr clazz, JFieldIDPtr fieldID, JFloatMarker val)>> SetStaticFloatField; external ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer env, JClassPtr clazz, + ffi.Void Function(ffi.Pointer env, JClassPtr clazz, JFieldIDPtr fieldID, JDoubleMarker val)>> SetStaticDoubleField; external ffi.Pointer< ffi.NativeFunction< JStringPtr Function( - ffi.Pointer env, + ffi.Pointer env, ffi.Pointer unicodeChars, JSizeMarker len)>> NewString; external ffi.Pointer< - ffi.NativeFunction< - JSizeMarker Function( - ffi.Pointer env, JStringPtr string)>> GetStringLength; + ffi.NativeFunction< + JSizeMarker Function(ffi.Pointer env, JStringPtr string)>> + GetStringLength; external ffi.Pointer< ffi.NativeFunction< ffi.Pointer Function( - ffi.Pointer env, + ffi.Pointer env, JStringPtr string, ffi.Pointer isCopy)>> GetStringChars; external ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer env, JStringPtr string, + ffi.Void Function(ffi.Pointer env, JStringPtr string, ffi.Pointer isCopy)>> ReleaseStringChars; external ffi.Pointer< ffi.NativeFunction< JStringPtr Function( - ffi.Pointer env, ffi.Pointer bytes)>> + ffi.Pointer env, ffi.Pointer bytes)>> NewStringUTF; external ffi.Pointer< - ffi.NativeFunction< - JSizeMarker Function( - ffi.Pointer env, JStringPtr string)>> GetStringUTFLength; + ffi.NativeFunction< + JSizeMarker Function(ffi.Pointer env, JStringPtr string)>> + GetStringUTFLength; external ffi.Pointer< ffi.NativeFunction< ffi.Pointer Function( - ffi.Pointer env, + ffi.Pointer env, JStringPtr string, ffi.Pointer isCopy)>> GetStringUTFChars; external ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer env, JStringPtr string, + ffi.Void Function(ffi.Pointer env, JStringPtr string, ffi.Pointer utf)>> ReleaseStringUTFChars; external ffi.Pointer< ffi.NativeFunction< - JSizeMarker Function(ffi.Pointer env, JArrayPtr array)>> + JSizeMarker Function(ffi.Pointer env, JArrayPtr array)>> GetArrayLength; external ffi.Pointer< ffi.NativeFunction< JObjectArrayPtr Function( - ffi.Pointer env, + ffi.Pointer env, JSizeMarker length, JClassPtr elementClass, JObjectPtr initialElement)>> NewObjectArray; external ffi.Pointer< ffi.NativeFunction< - JObjectPtr Function(ffi.Pointer env, JObjectArrayPtr array, + JObjectPtr Function(ffi.Pointer env, JObjectArrayPtr array, JSizeMarker index)>> GetObjectArrayElement; external ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer env, JObjectArrayPtr array, + ffi.Void Function(ffi.Pointer env, JObjectArrayPtr array, JSizeMarker index, JObjectPtr val)>> SetObjectArrayElement; external ffi.Pointer< ffi.NativeFunction< JBooleanArrayPtr Function( - ffi.Pointer env, JSizeMarker length)>> NewBooleanArray; + ffi.Pointer env, JSizeMarker length)>> NewBooleanArray; external ffi.Pointer< ffi.NativeFunction< JByteArrayPtr Function( - ffi.Pointer env, JSizeMarker length)>> NewByteArray; + ffi.Pointer env, JSizeMarker length)>> NewByteArray; external ffi.Pointer< ffi.NativeFunction< JCharArrayPtr Function( - ffi.Pointer env, JSizeMarker length)>> NewCharArray; + ffi.Pointer env, JSizeMarker length)>> NewCharArray; external ffi.Pointer< ffi.NativeFunction< JShortArrayPtr Function( - ffi.Pointer env, JSizeMarker length)>> NewShortArray; + ffi.Pointer env, JSizeMarker length)>> NewShortArray; external ffi.Pointer< ffi.NativeFunction< JIntArrayPtr Function( - ffi.Pointer env, JSizeMarker length)>> NewIntArray; + ffi.Pointer env, JSizeMarker length)>> NewIntArray; external ffi.Pointer< ffi.NativeFunction< JLongArrayPtr Function( - ffi.Pointer env, JSizeMarker length)>> NewLongArray; + ffi.Pointer env, JSizeMarker length)>> NewLongArray; external ffi.Pointer< ffi.NativeFunction< JFloatArrayPtr Function( - ffi.Pointer env, JSizeMarker length)>> NewFloatArray; + ffi.Pointer env, JSizeMarker length)>> NewFloatArray; external ffi.Pointer< ffi.NativeFunction< JDoubleArrayPtr Function( - ffi.Pointer env, JSizeMarker length)>> NewDoubleArray; + ffi.Pointer env, JSizeMarker length)>> NewDoubleArray; external ffi.Pointer< ffi.NativeFunction< ffi.Pointer Function( - ffi.Pointer env, + ffi.Pointer env, JBooleanArrayPtr array, ffi.Pointer isCopy)>> GetBooleanArrayElements; external ffi.Pointer< ffi.NativeFunction< ffi.Pointer Function( - ffi.Pointer env, + ffi.Pointer env, JByteArrayPtr array, ffi.Pointer isCopy)>> GetByteArrayElements; external ffi.Pointer< ffi.NativeFunction< ffi.Pointer Function( - ffi.Pointer env, + ffi.Pointer env, JCharArrayPtr array, ffi.Pointer isCopy)>> GetCharArrayElements; external ffi.Pointer< ffi.NativeFunction< ffi.Pointer Function( - ffi.Pointer env, + ffi.Pointer env, JShortArrayPtr array, ffi.Pointer isCopy)>> GetShortArrayElements; external ffi.Pointer< ffi.NativeFunction< ffi.Pointer Function( - ffi.Pointer env, + ffi.Pointer env, JIntArrayPtr array, ffi.Pointer isCopy)>> GetIntArrayElements; external ffi.Pointer< ffi.NativeFunction< ffi.Pointer Function( - ffi.Pointer env, + ffi.Pointer env, JLongArrayPtr array, ffi.Pointer isCopy)>> GetLongArrayElements; external ffi.Pointer< ffi.NativeFunction< ffi.Pointer Function( - ffi.Pointer env, + ffi.Pointer env, JFloatArrayPtr array, ffi.Pointer isCopy)>> GetFloatArrayElements; external ffi.Pointer< ffi.NativeFunction< ffi.Pointer Function( - ffi.Pointer env, + ffi.Pointer env, JDoubleArrayPtr array, ffi.Pointer isCopy)>> GetDoubleArrayElements; external ffi.Pointer< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer env, + ffi.Pointer env, JBooleanArrayPtr array, ffi.Pointer elems, JIntMarker mode)>> ReleaseBooleanArrayElements; @@ -1582,7 +1743,7 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer env, + ffi.Pointer env, JByteArrayPtr array, ffi.Pointer elems, JIntMarker mode)>> ReleaseByteArrayElements; @@ -1590,7 +1751,7 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer env, + ffi.Pointer env, JCharArrayPtr array, ffi.Pointer elems, JIntMarker mode)>> ReleaseCharArrayElements; @@ -1598,7 +1759,7 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer env, + ffi.Pointer env, JShortArrayPtr array, ffi.Pointer elems, JIntMarker mode)>> ReleaseShortArrayElements; @@ -1606,7 +1767,7 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer env, + ffi.Pointer env, JIntArrayPtr array, ffi.Pointer elems, JIntMarker mode)>> ReleaseIntArrayElements; @@ -1614,7 +1775,7 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer env, + ffi.Pointer env, JLongArrayPtr array, ffi.Pointer elems, JIntMarker mode)>> ReleaseLongArrayElements; @@ -1622,7 +1783,7 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer env, + ffi.Pointer env, JFloatArrayPtr array, ffi.Pointer elems, JIntMarker mode)>> ReleaseFloatArrayElements; @@ -1630,7 +1791,7 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer env, + ffi.Pointer env, JDoubleArrayPtr array, ffi.Pointer elems, JIntMarker mode)>> ReleaseDoubleArrayElements; @@ -1638,7 +1799,7 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer env, + ffi.Pointer env, JBooleanArrayPtr array, JSizeMarker start, JSizeMarker len, @@ -1647,7 +1808,7 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer env, + ffi.Pointer env, JByteArrayPtr array, JSizeMarker start, JSizeMarker len, @@ -1656,7 +1817,7 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer env, + ffi.Pointer env, JCharArrayPtr array, JSizeMarker start, JSizeMarker len, @@ -1665,7 +1826,7 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer env, + ffi.Pointer env, JShortArrayPtr array, JSizeMarker start, JSizeMarker len, @@ -1674,7 +1835,7 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer env, + ffi.Pointer env, JIntArrayPtr array, JSizeMarker start, JSizeMarker len, @@ -1683,7 +1844,7 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer env, + ffi.Pointer env, JLongArrayPtr array, JSizeMarker start, JSizeMarker len, @@ -1692,7 +1853,7 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer env, + ffi.Pointer env, JFloatArrayPtr array, JSizeMarker start, JSizeMarker len, @@ -1701,7 +1862,7 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer env, + ffi.Pointer env, JDoubleArrayPtr array, JSizeMarker start, JSizeMarker len, @@ -1711,7 +1872,7 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer env, + ffi.Pointer env, JBooleanArrayPtr array, JSizeMarker start, JSizeMarker len, @@ -1720,7 +1881,7 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer env, + ffi.Pointer env, JByteArrayPtr array, JSizeMarker start, JSizeMarker len, @@ -1729,7 +1890,7 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer env, + ffi.Pointer env, JCharArrayPtr array, JSizeMarker start, JSizeMarker len, @@ -1738,7 +1899,7 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer env, + ffi.Pointer env, JShortArrayPtr array, JSizeMarker start, JSizeMarker len, @@ -1747,7 +1908,7 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer env, + ffi.Pointer env, JIntArrayPtr array, JSizeMarker start, JSizeMarker len, @@ -1756,7 +1917,7 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer env, + ffi.Pointer env, JLongArrayPtr array, JSizeMarker start, JSizeMarker len, @@ -1765,7 +1926,7 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer env, + ffi.Pointer env, JFloatArrayPtr array, JSizeMarker start, JSizeMarker len, @@ -1774,7 +1935,7 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer env, + ffi.Pointer env, JDoubleArrayPtr array, JSizeMarker start, JSizeMarker len, @@ -1783,35 +1944,35 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< JIntMarker Function( - ffi.Pointer env, + ffi.Pointer env, JClassPtr clazz, ffi.Pointer methods, JIntMarker nMethods)>> RegisterNatives; external ffi.Pointer< ffi.NativeFunction< - JIntMarker Function(ffi.Pointer env, JClassPtr clazz)>> + JIntMarker Function(ffi.Pointer env, JClassPtr clazz)>> UnregisterNatives; external ffi.Pointer< ffi.NativeFunction< - JIntMarker Function(ffi.Pointer env, JObjectPtr obj)>> + JIntMarker Function(ffi.Pointer env, JObjectPtr obj)>> MonitorEnter; external ffi.Pointer< ffi.NativeFunction< - JIntMarker Function(ffi.Pointer env, JObjectPtr obj)>> + JIntMarker Function(ffi.Pointer env, JObjectPtr obj)>> MonitorExit; external ffi.Pointer< ffi.NativeFunction< - JIntMarker Function(ffi.Pointer env, - ffi.Pointer> vm)>> GetJavaVM; + JIntMarker Function(ffi.Pointer env, + ffi.Pointer> vm)>> GetJavaVM; external ffi.Pointer< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer env, + ffi.Pointer env, JStringPtr str, JSizeMarker start, JSizeMarker len, @@ -1820,7 +1981,7 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer env, + ffi.Pointer env, JStringPtr str, JSizeMarker start, JSizeMarker len, @@ -1829,14 +1990,14 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< ffi.Pointer Function( - ffi.Pointer env, + ffi.Pointer env, JArrayPtr array, ffi.Pointer isCopy)>> GetPrimitiveArrayCritical; external ffi.Pointer< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer env, + ffi.Pointer env, JArrayPtr array, ffi.Pointer carray, JIntMarker mode)>> ReleasePrimitiveArrayCritical; @@ -1844,92 +2005,101 @@ final class JNINativeInterface extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< ffi.Pointer Function( - ffi.Pointer env, + ffi.Pointer env, JStringPtr str, ffi.Pointer isCopy)>> GetStringCritical; external ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer env, JStringPtr str, + ffi.Void Function(ffi.Pointer env, JStringPtr str, ffi.Pointer carray)>> ReleaseStringCritical; external ffi.Pointer< ffi.NativeFunction< - JWeakPtr Function(ffi.Pointer env, JObjectPtr obj)>> + JWeakPtr Function(ffi.Pointer env, JObjectPtr obj)>> NewWeakGlobalRef; external ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer env, JWeakPtr obj)>> + ffi.Void Function(ffi.Pointer env, JWeakPtr obj)>> DeleteWeakGlobalRef; external ffi.Pointer< - ffi.NativeFunction env)>> + ffi.NativeFunction env)>> ExceptionCheck; external ffi.Pointer< ffi.NativeFunction< JObjectPtr Function( - ffi.Pointer env, + ffi.Pointer env, ffi.Pointer address, JLongMarker capacity)>> NewDirectByteBuffer; external ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer env, JObjectPtr buf)>> - GetDirectBufferAddress; + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer env, JObjectPtr buf)>> GetDirectBufferAddress; external ffi.Pointer< ffi.NativeFunction< - JLongMarker Function(ffi.Pointer env, JObjectPtr buf)>> + JLongMarker Function(ffi.Pointer env, JObjectPtr buf)>> GetDirectBufferCapacity; /// added in JNI 1.6 external ffi.Pointer< - ffi.NativeFunction< - ffi.Int32 Function(ffi.Pointer env, JObjectPtr obj)>> - GetObjectRefType; + ffi.NativeFunction< + ffi.UnsignedInt Function( + ffi.Pointer env, JObjectPtr obj)>> GetObjectRefType; } typedef JniEnv1 = ffi.Pointer; -/// "cardinal indices and sizes" -typedef JSizeMarker = JIntMarker; -typedef JMethodIDPtr = ffi.Pointer; +/// JNI invocation interface. +final class JNIInvokeInterface extends ffi.Struct { + external ffi.Pointer reserved0; -final class jmethodID_ extends ffi.Opaque {} + external ffi.Pointer reserved1; -typedef JFieldIDPtr = ffi.Pointer; + external ffi.Pointer reserved2; -final class jfieldID_ extends ffi.Opaque {} + external ffi + .Pointer vm)>> + DestroyJavaVM; -typedef JArrayPtr = JObjectPtr; -typedef JObjectArrayPtr = JArrayPtr; -typedef JBooleanArrayPtr = JArrayPtr; -typedef JByteArrayPtr = JArrayPtr; -typedef JCharArrayPtr = JArrayPtr; -typedef JShortArrayPtr = JArrayPtr; -typedef JIntArrayPtr = JArrayPtr; -typedef JLongArrayPtr = JArrayPtr; -typedef JFloatArrayPtr = JArrayPtr; -typedef JDoubleArrayPtr = JArrayPtr; + external ffi.Pointer< + ffi.NativeFunction< + JIntMarker Function( + ffi.Pointer vm, + ffi.Pointer> p_env, + ffi.Pointer thr_args)>> AttachCurrentThread; -final class JNINativeMethod extends ffi.Struct { - external ffi.Pointer name; + external ffi + .Pointer vm)>> + DetachCurrentThread; - external ffi.Pointer signature; + external ffi.Pointer< + ffi.NativeFunction< + JIntMarker Function( + ffi.Pointer vm, + ffi.Pointer> p_env, + JIntMarker version)>> GetEnv; - external ffi.Pointer fnPtr; + external ffi.Pointer< + ffi.NativeFunction< + JIntMarker Function( + ffi.Pointer vm, + ffi.Pointer> p_env, + ffi.Pointer thr_args)>> AttachCurrentThreadAsDaemon; } -typedef JWeakPtr = JObjectPtr; +typedef JavaVM1 = ffi.Pointer; + +/// JNI 1.2+ initialization. (As of 1.6, the pre-1.2 structures are no +/// longer supported.) +final class JavaVMOption extends ffi.Struct { + external ffi.Pointer optionString; -abstract class JObjectRefType { - static const int JNIInvalidRefType = 0; - static const int JNILocalRefType = 1; - static const int JNIGlobalRefType = 2; - static const int JNIWeakGlobalRefType = 3; + external ffi.Pointer extraInfo; } final class JavaVMInitArgs extends ffi.Struct { @@ -1946,53 +2116,10 @@ final class JavaVMInitArgs extends ffi.Struct { external int ignoreUnrecognized; } -/// JNI 1.2+ initialization. (As of 1.6, the pre-1.2 structures are no -/// longer supported.) -final class JavaVMOption extends ffi.Struct { - external ffi.Pointer optionString; - - external ffi.Pointer extraInfo; -} - -final class CallbackResult extends ffi.Struct { - external MutexLock lock; - - external ConditionVariable cond; - - @ffi.Int() - external int ready; - - external JObjectPtr object; -} - -typedef MutexLock = pthread_mutex_t; -typedef pthread_mutex_t = __darwin_pthread_mutex_t; -typedef __darwin_pthread_mutex_t = _opaque_pthread_mutex_t; - -final class _opaque_pthread_mutex_t extends ffi.Struct { - @ffi.Long() - external int __sig; - - @ffi.Array.multi([56]) - external ffi.Array __opaque; -} - -typedef ConditionVariable = pthread_cond_t; -typedef pthread_cond_t = __darwin_pthread_cond_t; -typedef __darwin_pthread_cond_t = _opaque_pthread_cond_t; - -final class _opaque_pthread_cond_t extends ffi.Struct { - @ffi.Long() - external int __sig; - - @ffi.Array.multi([40]) - external ffi.Array __opaque; -} +final class _Dart_FinalizableHandle extends ffi.Opaque {} typedef Dart_FinalizableHandle = ffi.Pointer<_Dart_FinalizableHandle>; -final class _Dart_FinalizableHandle extends ffi.Opaque {} - final class GlobalJniEnvStruct extends ffi.Struct { external ffi.Pointer reserved0; @@ -3196,7 +3323,7 @@ final class GlobalJniEnvStruct extends ffi.Struct { external ffi.Pointer< ffi.NativeFunction< - JniResult Function(ffi.Pointer> vm)>> GetJavaVM; + JniResult Function(ffi.Pointer> vm)>> GetJavaVM; external ffi.Pointer< ffi.NativeFunction< @@ -3339,50 +3466,3 @@ final class GlobalJniEnvStruct extends ffi.Struct { JThrowablePtr Function(JDoubleArrayPtr array, JSizeMarker index, JDoubleMarker element)>> SetDoubleArrayElement; } - -/// This file re-exports some JNI constants as enum, because they are not -/// currently being included when they are in macro form. -abstract class JniBooleanValues { - static const int JNI_FALSE = 0; - static const int JNI_TRUE = 1; -} - -abstract class JniVersions { - static const int JNI_VERSION_1_1 = 65537; - static const int JNI_VERSION_1_2 = 65538; - static const int JNI_VERSION_1_4 = 65540; - static const int JNI_VERSION_1_6 = 65542; -} - -abstract class JniErrorCode { - /// no error - static const int JNI_OK = 0; - - /// generic error - static const int JNI_ERR = -1; - - /// thread detached from the VM - static const int JNI_EDETACHED = -2; - - /// JNI version error - static const int JNI_EVERSION = -3; - - /// Out of memory - static const int JNI_ENOMEM = -4; - - /// VM already created - static const int JNI_EEXIST = -5; - - /// Invalid argument - static const int JNI_EINVAL = -6; -} - -abstract class JniBufferWriteBack { - /// copy content, do not free buffer - static const int JNI_COMMIT = 1; - - /// free buffer w/o copying back - static const int JNI_ABORT = 2; -} - -const int DART_JNI_SINGLETON_EXISTS = -99; diff --git a/pkgs/jni/pubspec.yaml b/pkgs/jni/pubspec.yaml index dfabbfd1d..b85717c5e 100644 --- a/pkgs/jni/pubspec.yaml +++ b/pkgs/jni/pubspec.yaml @@ -4,7 +4,7 @@ name: jni description: A library to access JNI from Dart and Flutter that acts as a support library for package:jnigen. -version: 0.13.0 +version: 0.13.1 repository: https://github.com/dart-lang/native/tree/main/pkgs/jni issue_tracker: https://github.com/dart-lang/native/issues?q=is%3Aissue+is%3Aopen+label%3Apackage%3Ajni @@ -16,9 +16,10 @@ topics: - jni environment: - sdk: '>=3.3.0 <4.0.0' + sdk: ^3.6.0 flutter: '>=2.11.0' +resolution: workspace dependencies: args: ^2.5.0 ffi: ^2.1.3 @@ -30,7 +31,7 @@ dependencies: dev_dependencies: dart_flutter_team_lints: ^3.2.0 ## Pin ffigen version because we are depending on internal APIs. - ffigen: 8.0.2 + ffigen: ^17.0.0-wip logging: ^1.2.0 test: ^1.25.8 diff --git a/pkgs/jni/src/dartjni.c b/pkgs/jni/src/dartjni.c index 26b9cc351..b23dcba8a 100644 --- a/pkgs/jni/src/dartjni.c +++ b/pkgs/jni/src/dartjni.c @@ -201,16 +201,16 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, // handle to DLL module pthread_mutex_t spawnLock = PTHREAD_MUTEX_INITIALIZER; #endif FFI_PLUGIN_EXPORT -int SpawnJvm(JavaVMInitArgs* initArgs) { +JniErrorCode SpawnJvm(JavaVMInitArgs* initArgs) { if (jni_context.jvm != NULL) { - return DART_JNI_SINGLETON_EXISTS; + return SINGLETON_EXISTS; } acquire_lock(&spawnLock); // Init may have happened in the meanwhile. if (jni_context.jvm != NULL) { release_lock(&spawnLock); - return DART_JNI_SINGLETON_EXISTS; + return SINGLETON_EXISTS; } JavaVMOption jvmopt[1]; char class_path[] = "-Djava.class.path=."; diff --git a/pkgs/jni/src/dartjni.h b/pkgs/jni/src/dartjni.h index 5d182c13a..3139ee194 100644 --- a/pkgs/jni/src/dartjni.h +++ b/pkgs/jni/src/dartjni.h @@ -5,6 +5,7 @@ #pragma once #include "include/dart_api_dl.h" +#include "jni_constants.h" // Note: include appropriate system jni.h as found by CMake, not third_party/jni.h. #include @@ -139,9 +140,6 @@ typedef struct JniLocks { MutexLock classLoadingLock; } JniLocks; -/// Represents the error when dart-jni layer has already spawned singleton VM. -#define DART_JNI_SINGLETON_EXISTS (-99); - /// Stores the global state of the JNI. typedef struct JniContext { JavaVM* jvm; @@ -237,7 +235,7 @@ FFI_PLUGIN_EXPORT JNIEnv* GetJniEnv(void); /// Returns JNI_OK on success, and one of the documented JNI error codes on /// failure. It returns DART_JNI_SINGLETON_EXISTS if an attempt to spawn multiple /// JVMs is made, even if the underlying API potentially supports multiple VMs. -FFI_PLUGIN_EXPORT int SpawnJvm(JavaVMInitArgs* args); +FFI_PLUGIN_EXPORT JniErrorCode SpawnJvm(JavaVMInitArgs* args); /// Returns Application classLoader (on Android), /// which can be used to load application and platform classes. diff --git a/pkgs/jni/src/jni_constants.h b/pkgs/jni/src/jni_constants.h index 8423ca10d..fee011ace 100644 --- a/pkgs/jni/src/jni_constants.h +++ b/pkgs/jni/src/jni_constants.h @@ -4,28 +4,35 @@ // This file re-exports some JNI constants as enum, because they are not // currently being included when they are in macro form. +#pragma once -enum JniBooleanValues { JNI_FALSE = 0, JNI_TRUE = 1 }; +#include "jni.h" -enum JniVersions { - JNI_VERSION_1_1 = 0x00010001, - JNI_VERSION_1_2 = 0x00010002, - JNI_VERSION_1_4 = 0x00010004, - JNI_VERSION_1_6 = 0x00010006, -}; +typedef enum JniBooleanValues { + FALSE = JNI_FALSE, + TRUE = JNI_TRUE +} JniBooleanValues; -enum JniErrorCode { +typedef enum JniVersions { + VERSION_1_1 = JNI_VERSION_1_1, + VERSION_1_2 = JNI_VERSION_1_2, + VERSION_1_4 = JNI_VERSION_1_4, + VERSION_1_6 = JNI_VERSION_1_6, +} JniVersions; + +typedef enum JniErrorCode { // Error codes from JNI - JNI_OK = 0, /* no error */ - JNI_ERR = -1, /* generic error */ - JNI_EDETACHED = -2, /* thread detached from the VM */ - JNI_EVERSION = -3, /* JNI version error */ - JNI_ENOMEM = -4, /* Out of memory */ - JNI_EEXIST = -5, /* VM already created */ - JNI_EINVAL = -6, /* Invalid argument */ -}; + OK = JNI_OK, /* no error */ + ERR = JNI_ERR, /* generic error */ + EDETACHED = JNI_EDETACHED, /* thread detached from the VM */ + EVERSION = JNI_EVERSION, /* JNI version error */ + ENOMEM = JNI_ENOMEM, /* Out of memory */ + EEXIST = JNI_EEXIST, /* VM already created */ + EINVAL = JNI_EINVAL, /* Invalid argument */ + SINGLETON_EXISTS = -99, +} JniErrorCode; -enum JniBufferWriteBack { - JNI_COMMIT = 1, /* copy content, do not free buffer */ - JNI_ABORT = 2, /* free buffer w/o copying back */ -}; +typedef enum JniBufferWriteBack { + COMMIT = JNI_COMMIT, /* copy content, do not free buffer */ + ABORT = JNI_ABORT, /* free buffer w/o copying back */ +} JniBufferWriteBack; diff --git a/pkgs/jni/src/third_party/global_jni_env.c b/pkgs/jni/src/third_party/global_jni_env.c index 2e7e44829..76cbccf02 100644 --- a/pkgs/jni/src/third_party/global_jni_env.c +++ b/pkgs/jni/src/third_party/global_jni_env.c @@ -2421,11 +2421,7 @@ JniResult globalEnv_GetDirectBufferCapacity(jobject buf) { JniResult globalEnv_GetObjectRefType(jobject obj) { attach_thread(); - int32_t _result = (*jniEnv)->GetObjectRefType(jniEnv, obj); - jthrowable _exception = check_exception(); - if (_exception != NULL) { - return (JniResult){.value = {.j = 0}, .exception = _exception}; - } + jobjectRefType _result = (*jniEnv)->GetObjectRefType(jniEnv, obj); return (JniResult){.value = {.i = _result}, .exception = NULL}; } diff --git a/pkgs/jni/test/global_env_test.dart b/pkgs/jni/test/global_env_test.dart index 0ac6191ab..31dab9982 100644 --- a/pkgs/jni/test/global_env_test.dart +++ b/pkgs/jni/test/global_env_test.dart @@ -68,7 +68,7 @@ void run({required TestRunnerCallback testRunner}) { 'toHexString'.toNativeChars(arena), '(I)Ljava/lang/String;'.toNativeChars(arena)); - for (var i in [1, 80, 13, 76, 11344]) { + for (final i in [1, 80, 13, 76, 11344]) { // if your argument is int, bool, or JObject (`Pointer`) // it can be directly placed in the list. To convert into // different primitive types, use JValue wrappers. diff --git a/pkgs/jni/test/jobject_test.dart b/pkgs/jni/test/jobject_test.dart index 414f3df43..650d570ba 100644 --- a/pkgs/jni/test/jobject_test.dart +++ b/pkgs/jni/test/jobject_test.dart @@ -189,7 +189,7 @@ void run({required TestRunnerCallback testRunner}) { .add(constructor(randomClass, JObject.type, [])..releasedBy(arena)); } }); - for (var object in objects) { + for (final object in objects) { expect(object.isReleased, isTrue); } }); diff --git a/pkgs/jni/tool/generate_ffi_bindings.dart b/pkgs/jni/tool/generate_ffi_bindings.dart index c1a2b5e57..787df27fd 100644 --- a/pkgs/jni/tool/generate_ffi_bindings.dart +++ b/pkgs/jni/tool/generate_ffi_bindings.dart @@ -9,6 +9,7 @@ import 'dart:io'; import 'package:args/args.dart'; import 'package:ffigen/ffigen.dart' as ffigen; +import 'package:ffigen/src/header_parser.dart' as ffigen; import 'package:logging/logging.dart'; import 'wrapper_generators/generate_c_extensions.dart'; @@ -51,15 +52,15 @@ void main(List args) { }); logger.info('Generating C wrappers'); - final minimalConfig = ffigen.Config.fromFile(File('ffigen_exts.yaml')); + final minimalConfig = ffigen.YamlConfig.fromFile(File('ffigen_exts.yaml')); final minimalLibrary = ffigen.parse(minimalConfig); generateCWrappers(minimalLibrary); logger.info('Generating FFI bindings for package:jni'); - final config = ffigen.Config.fromFile(File('ffigen.yaml')); + final config = ffigen.YamlConfig.fromFile(File('ffigen.yaml')); final library = ffigen.parse(config); - final outputFile = File(config.output); + final outputFile = File(config.output.toFilePath()); library.generateFile(outputFile); logger.info('Generating Dart extensions'); diff --git a/pkgs/jni/tool/wrapper_generators/ffigen_util.dart b/pkgs/jni/tool/wrapper_generators/ffigen_util.dart index 975dc5f9d..2b65e7ccb 100644 --- a/pkgs/jni/tool/wrapper_generators/ffigen_util.dart +++ b/pkgs/jni/tool/wrapper_generators/ffigen_util.dart @@ -9,7 +9,11 @@ final dummyWriter = Writer( lookUpBindings: [], ffiNativeBindings: [], noLookUpBindings: [], + nativeEntryPoints: [], className: 'unused', + silenceEnumWarning: true, + generateForPackageObjectiveC: false, + nativeAssetId: null, ); /// Find compound having [name] in [library]. diff --git a/pkgs/jni/tool/wrapper_generators/generate_c_extensions.dart b/pkgs/jni/tool/wrapper_generators/generate_c_extensions.dart index a5ccef5d4..4fb0114a9 100644 --- a/pkgs/jni/tool/wrapper_generators/generate_c_extensions.dart +++ b/pkgs/jni/tool/wrapper_generators/generate_c_extensions.dart @@ -67,7 +67,7 @@ String getCType(Type type) { if (type is PointerType) { return '${getCType(type.child)}*'; } - final cType = type.getCType(dummyWriter); + final cType = type.toString(); const specialCaseMappings = { 'JNIEnv1': 'JNIEnv', 'ffi.Char': 'char', @@ -91,7 +91,7 @@ String getWrapperFuncName(String name) { } // Returns declaration of function field in GlobalJniEnv struct -String getFunctionFieldDecl(Member field, {required bool isField}) { +String getFunctionFieldDecl(CompoundMember field, {required bool isField}) { final fieldType = field.type; if (fieldType is PointerType && fieldType.child is NativeFunc) { final nativeFunc = fieldType.child as NativeFunc; @@ -180,6 +180,7 @@ ResultWrapper getResultWrapper(String returnType) { return ResultWrapper.unionType('JniPointerResult', 'NULL'); case 'jclass': return ResultWrapper.unionType('JniClassLookupResult', 'NULL'); + case 'jobjectRefType': case 'int32_t': return ResultWrapper.forJValueField('i'); default: @@ -224,9 +225,10 @@ const _noCheckException = { 'GetStringCritical', 'ExceptionClear', 'ExceptionDescribe', + 'GetObjectRefType', }; -String? getWrapperFunc(Member field) { +String? getWrapperFunc(CompoundMember field) { final fieldType = field.type; if (fieldType is PointerType && fieldType.child is NativeFunc) { final functionType = (fieldType.child as NativeFunc).type; diff --git a/pkgs/jni/tool/wrapper_generators/generate_dart_extensions.dart b/pkgs/jni/tool/wrapper_generators/generate_dart_extensions.dart index 740434148..b8061a63a 100644 --- a/pkgs/jni/tool/wrapper_generators/generate_dart_extensions.dart +++ b/pkgs/jni/tool/wrapper_generators/generate_dart_extensions.dart @@ -44,29 +44,31 @@ String getCheckedGetter(Type returnType) { final child = returnType.child.getCType(dummyWriter); return 'getPointer<$child>()'; } - final cType = returnType.getCType(dummyWriter); - if (cType.endsWith('ArrayPtr')) { + final cType = returnType.toString(); + if (cType.startsWith('j') && cType.endsWith('Array')) { return objectPointerGetter; } const mappings = { - 'JBooleanMarker': 'boolean', - 'JByteMarker': 'byte', - 'JShortMarker': 'short', - 'JCharMarker': 'char', - 'JIntMarker': 'integer', - 'JSizeMarker': 'integer', // jsize is aliased to jint - 'JLongMarker': 'long', - 'JFloatMarker': 'float', - 'JDoubleMarker': 'doubleFloat', - 'JObjectPtr': objectPointerGetter, - 'JThrowablePtr': objectPointerGetter, - 'JStringPtr': objectPointerGetter, - 'JClassPtr': 'value', - 'JFieldIDPtr': 'fieldID', - 'JMethodIDPtr': 'methodID', + 'jboolean': 'boolean', + 'jbyte': 'byte', + 'jshort': 'short', + 'jchar': 'char', + 'jint': 'integer', + 'jsize': 'integer', // jsize is aliased to jint + 'jlong': 'long', + 'jfloat': 'float', + 'jdouble': 'doubleFloat', + 'jobject': objectPointerGetter, + 'jobjectRefType': 'referenceType', + 'jthrowable': objectPointerGetter, + 'jstring': objectPointerGetter, + 'jclass': 'value', + 'jfieldID': 'fieldID', + 'jmethodID': 'methodID', 'ffi.Int32': 'integer', + 'ffi.UnsignedInt': 'integer', 'ffi.Void': 'check()', - 'JWeakPtr': objectPointerGetter, + 'jweak': objectPointerGetter, }; if (mappings.containsKey(cType)) { return mappings[cType]!; @@ -76,7 +78,7 @@ String getCheckedGetter(Type returnType) { } String? getGlobalEnvExtensionFunction( - Member field, + CompoundMember field, Type? checkedReturnType, { required bool isLeaf, }) { @@ -246,7 +248,7 @@ String getGlobalEnvExtension( final env = findCompound(library, localEnvType); final globalEnv = findCompound(library, globalEnvType); final checkedReturnTypes = {}; - for (var field in globalEnv.members) { + for (final field in globalEnv.members) { final fieldType = field.type; if (fieldType is PointerType && fieldType.child is NativeFunc) { checkedReturnTypes[field.name] = @@ -276,7 +278,7 @@ class GlobalJniEnv { } String? getFunctionPointerExtensionFunction( - Member field, { + CompoundMember field, { bool indirect = false, bool implicitThis = false, required bool isLeaf, diff --git a/pkgs/jnigen/CHANGELOG.md b/pkgs/jnigen/CHANGELOG.md index 402576803..1d31ebeee 100644 --- a/pkgs/jnigen/CHANGELOG.md +++ b/pkgs/jnigen/CHANGELOG.md @@ -1,3 +1,6 @@ +## 0.13.2-wip +- Require Dart 3.6.0 or greater + ## 0.13.1 - Fixed a bug where Kotlin wildcards would crash the code generation. @@ -5,7 +8,7 @@ fields instead of directly on the return type or field type. - Fixed a bug where enum values were generated as nullable. - Fixed a bug where type arguments could be nullable when the top type of their - paramater was non-nullable. + parameter was non-nullable. ## 0.13.0 diff --git a/pkgs/jnigen/analysis_options.yaml b/pkgs/jnigen/analysis_options.yaml deleted file mode 100644 index 87d0df012..000000000 --- a/pkgs/jnigen/analysis_options.yaml +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file -# for details. All rights reserved. Use of this source code is governed by a -# BSD-style license that can be found in the LICENSE file. - -include: package:dart_flutter_team_lints/analysis_options.yaml - -analyzer: - errors: - todo: ignore - exclude: [build/**, example/**] - language: - strict-casts: true - strict-inference: true - strict-raw-types: true - -linter: - rules: - dangling_library_doc_comments: true - prefer_final_locals: true - prefer_const_declarations: true diff --git a/pkgs/jnigen/lib/src/bindings/dart_generator.dart b/pkgs/jnigen/lib/src/bindings/dart_generator.dart index 26afb3236..66177ac7e 100644 --- a/pkgs/jnigen/lib/src/bindings/dart_generator.dart +++ b/pkgs/jnigen/lib/src/bindings/dart_generator.dart @@ -233,7 +233,7 @@ import 'package:jni/jni.dart' as $_jni; } log.info('Using dart root = $root'); - for (var fileClassName in files.keys) { + for (final fileClassName in files.keys) { final relativeFileName = '${fileClassName.replaceAll('.', '/')}.dart'; final dartFileUri = root.resolve(relativeFileName); final dartFile = await File.fromUri(dartFileUri).create(recursive: true); @@ -261,7 +261,7 @@ import 'package:jni/jni.dart' as $_jni; } // write _package.dart export files - for (var package in packages.keys) { + for (final package in packages.keys) { final dirUri = root.resolve('${package.replaceAll('.', '/')}/'); final exportFileUri = dirUri.resolve('_package.dart'); final exportFile = File.fromUri(exportFileUri); @@ -510,7 +510,7 @@ class $name$typeParamsDef extends $superName { s.write(''' ], ); - final \$a = \$p.sendPort.nativePort; + final \$a = \$p.sendPort.nativePort; _\$impls[\$a] = \$impl; } diff --git a/pkgs/jnigen/lib/src/config/config_types.dart b/pkgs/jnigen/lib/src/config/config_types.dart index bead7f371..e7e981f67 100644 --- a/pkgs/jnigen/lib/src/config/config_types.dart +++ b/pkgs/jnigen/lib/src/config/config_types.dart @@ -494,7 +494,7 @@ class Config { final exclusions = prov.getStringList(property); if (exclusions == null) return null; final filters = >[]; - for (var exclusion in exclusions) { + for (final exclusion in exclusions) { final split = exclusion.split('#'); if (split.length != 2) { throw ConfigException('Error parsing exclusion: "$exclusion": ' @@ -603,7 +603,7 @@ class Config { stderr.write('Following config values are required but not provided\n' 'Please provide these properties through YAML ' 'or use the command line switch -D=.\n'); - for (var missing in missingValues) { + for (final missing in missingValues) { stderr.writeln('* $missing'); } if (missingValues.contains(_Props.androidSdkRoot)) { diff --git a/pkgs/jnigen/lib/src/config/yaml_reader.dart b/pkgs/jnigen/lib/src/config/yaml_reader.dart index c9b77de1d..162b58560 100644 --- a/pkgs/jnigen/lib/src/config/yaml_reader.dart +++ b/pkgs/jnigen/lib/src/config/yaml_reader.dart @@ -57,7 +57,7 @@ class YamlReader { } final regex = RegExp('([a-z-_.]+)=(.+)'); final properties = {}; - for (var prop in results['override'] as List) { + for (final prop in results['override'] as List) { final match = regex.matchAsPrefix(prop); if (match != null && match.group(0) == prop) { final propertyName = match.group(1); diff --git a/pkgs/jnigen/lib/src/elements/j_elements.dart b/pkgs/jnigen/lib/src/elements/j_elements.dart index 883786aea..a8b7158a7 100644 --- a/pkgs/jnigen/lib/src/elements/j_elements.dart +++ b/pkgs/jnigen/lib/src/elements/j_elements.dart @@ -46,7 +46,7 @@ class ClassDecl implements Element { for (final method in _classDecl.methods) { Method(method).accept(visitor); } - for (var field in _classDecl.fields) { + for (final field in _classDecl.fields) { Field(field).accept(visitor); } } diff --git a/pkgs/jnigen/lib/src/tools/android_sdk_tools.dart b/pkgs/jnigen/lib/src/tools/android_sdk_tools.dart index a1016622e..43d8f217e 100644 --- a/pkgs/jnigen/lib/src/tools/android_sdk_tools.dart +++ b/pkgs/jnigen/lib/src/tools/android_sdk_tools.dart @@ -37,7 +37,7 @@ class AndroidSdkTools { static Future _getVersionDir( String relative, String sdkRoot, List versionOrder) async { final parent = join(sdkRoot, relative); - for (var version in versionOrder) { + for (final version in versionOrder) { final dir = Directory(join(parent, 'android-$version')); if (await dir.exists()) { return dir.path; diff --git a/pkgs/jnigen/lib/src/tools/maven_tools.dart b/pkgs/jnigen/lib/src/tools/maven_tools.dart index 25104bba4..f2f6c517f 100644 --- a/pkgs/jnigen/lib/src/tools/maven_tools.dart +++ b/pkgs/jnigen/lib/src/tools/maven_tools.dart @@ -80,9 +80,9 @@ class MavenTools { static String _getStubPom(List deps, {String javaVersion = '11'}) { final depDecls = []; - for (var dep in deps) { + for (final dep in deps) { final otherTags = StringBuffer(); - for (var entry in dep.otherTags.entries) { + for (final entry in dep.otherTags.entries) { otherTags.write(''' <${entry.key}> ${entry.value} diff --git a/pkgs/jnigen/pubspec.yaml b/pkgs/jnigen/pubspec.yaml index 0edf1e9e6..38e1cf787 100644 --- a/pkgs/jnigen/pubspec.yaml +++ b/pkgs/jnigen/pubspec.yaml @@ -4,12 +4,12 @@ name: jnigen description: A Dart bindings generator for Java and Kotlin that uses JNI under the hood to interop with Java virtual machine. -version: 0.13.1 +version: 0.13.2-wip repository: https://github.com/dart-lang/native/tree/main/pkgs/jnigen issue_tracker: https://github.com/dart-lang/native/issues?q=is%3Aissue+is%3Aopen+label%3Apackage%3Ajnigen environment: - sdk: '>=3.3.0 <4.0.0' + sdk: ^3.6.0 topics: - interop @@ -18,6 +18,7 @@ topics: - java - jni +resolution: workspace dependencies: args: ^2.5.0 cli_config: '>=0.1.0 <0.3.0' @@ -35,7 +36,3 @@ dev_dependencies: jni: ^0.13.0 json_serializable: ^6.8.0 test: ^1.25.8 - -dependency_overrides: - jni: - path: ../jni diff --git a/pkgs/jnigen/test/package_resolver_test.dart b/pkgs/jnigen/test/package_resolver_test.dart index 59595522e..004824005 100644 --- a/pkgs/jnigen/test/package_resolver_test.dart +++ b/pkgs/jnigen/test/package_resolver_test.dart @@ -63,7 +63,7 @@ void main() async { ResolverTest('a.m.n.P', '../m/n/P.dart', r'p$_.'), ]; - for (var testCase in tests) { + for (final testCase in tests) { final binaryName = testCase.binaryName; final packageName = Resolver.getFileClassName(binaryName); test( diff --git a/pkgs/jnigen/tool/command_runner.dart b/pkgs/jnigen/tool/command_runner.dart index ee3ef55c9..82eae5728 100644 --- a/pkgs/jnigen/tool/command_runner.dart +++ b/pkgs/jnigen/tool/command_runner.dart @@ -81,7 +81,7 @@ class Runner { Future run() async { stderr.writeln('started: $name'); var error = false; - for (var step in steps) { + for (final step in steps) { try { await step.run(); } on StepFailure catch (e) { @@ -92,7 +92,7 @@ class Runner { } } stderr.writeln('${error ? "failed" : "complete"}: $name'); - for (var step in cleanupSteps) { + for (final step in cleanupSteps) { try { await step.run(); } on Exception catch (e) { diff --git a/pkgs/jnigen/tool/regenerate_all_bindings.dart b/pkgs/jnigen/tool/regenerate_all_bindings.dart index a19c7a0f0..ccfa355b5 100644 --- a/pkgs/jnigen/tool/regenerate_all_bindings.dart +++ b/pkgs/jnigen/tool/regenerate_all_bindings.dart @@ -26,12 +26,12 @@ const yamlBasedExamples = [ void main() async { final runners = []; final current = Directory.current.uri; - for (var script in scripts) { + for (final script in scripts) { runners.add(Runner('Run generate script: $script', current) ..chainCommand('dart', ['run', script])); } - for (var yamlDir in yamlBasedExamples) { + for (final yamlDir in yamlBasedExamples) { runners.add( Runner('Regenerate bindings in $yamlDir', current.resolve(yamlDir)) ..chainCommand('dart', ['run', 'jnigen', '--config', 'jnigen.yaml'])); diff --git a/pkgs/native_assets_builder/CHANGELOG.md b/pkgs/native_assets_builder/CHANGELOG.md index 56f3ecf19..3d8d01a58 100644 --- a/pkgs/native_assets_builder/CHANGELOG.md +++ b/pkgs/native_assets_builder/CHANGELOG.md @@ -3,6 +3,7 @@ - **Breaking change** `runPackageName` is now required to properly support pub workspaces. - Bump `package:native_assets_cli` to 0.11.0. +- Require Dart 3.6.0 or greater ## 0.10.2 diff --git a/pkgs/native_assets_builder/analysis_options.yaml b/pkgs/native_assets_builder/analysis_options.yaml deleted file mode 100644 index 349b9d631..000000000 --- a/pkgs/native_assets_builder/analysis_options.yaml +++ /dev/null @@ -1,17 +0,0 @@ -include: package:dart_flutter_team_lints/analysis_options.yaml - -analyzer: - errors: - todo: ignore - language: - strict-casts: true - strict-inference: true - strict-raw-types: true - -linter: - rules: - - dangling_library_doc_comments - - prefer_const_declarations - - prefer_expression_function_bodies - - prefer_final_in_for_each - - prefer_final_locals diff --git a/pkgs/native_assets_builder/lib/src/model/kernel_assets.dart b/pkgs/native_assets_builder/lib/src/model/kernel_assets.dart index b430282ed..8d3377e16 100644 --- a/pkgs/native_assets_builder/lib/src/model/kernel_assets.dart +++ b/pkgs/native_assets_builder/lib/src/model/kernel_assets.dart @@ -12,7 +12,7 @@ /// /// The format should be consistent with `pkg/vm/lib/native_assets/` in the /// Dart SDK. -library kernel_native_assets; +library; import 'package:native_assets_cli/native_assets_cli_internal.dart'; diff --git a/pkgs/native_assets_builder/pubspec.yaml b/pkgs/native_assets_builder/pubspec.yaml index cce634a1b..4b7f87b61 100644 --- a/pkgs/native_assets_builder/pubspec.yaml +++ b/pkgs/native_assets_builder/pubspec.yaml @@ -7,22 +7,21 @@ repository: https://github.com/dart-lang/native/tree/main/pkgs/native_assets_bui publish_to: none environment: - sdk: '>=3.5.0 <4.0.0' + sdk: ^3.6.0 +resolution: workspace dependencies: collection: ^1.18.0 crypto: ^3.0.6 file: ^7.0.1 graphs: ^2.3.1 logging: ^1.2.0 - # native_assets_cli: ^0.10.0 - native_assets_cli: - path: ../native_assets_cli/ + native_assets_cli: ^0.11.0-wip package_config: ^2.1.0 yaml: ^3.1.2 yaml_edit: ^2.1.0 dev_dependencies: - dart_flutter_team_lints: ^2.1.1 + dart_flutter_team_lints: ^3.2.0 file_testing: ^3.0.0 test: ^1.24.3 diff --git a/pkgs/native_assets_builder/test/helpers.dart b/pkgs/native_assets_builder/test/helpers.dart index 8f782cb5c..c51291efe 100644 --- a/pkgs/native_assets_builder/test/helpers.dart +++ b/pkgs/native_assets_builder/test/helpers.dart @@ -264,13 +264,24 @@ Future copyTestProjects({ await targetFile.writeAsBytes(await sourceFile.readAsBytes()); } for (final pathToModify in filesToModify) { + const packagesToOverride = ['native_assets_cli', 'native_toolchain_c']; final sourceFile = File.fromUri(sourceUri.resolveUri(pathToModify)); final targetFileUri = targetUri.resolveUri(pathToModify); - final sourceString = await sourceFile.readAsString(); - final modifiedString = sourceString.replaceAll( - 'path: ../../', - 'path: ${pkgNativeAssetsBuilderUri.toFilePath().unescape()}', - ); + var sourceString = await sourceFile.readAsString(); + if (!pathToModify.path.contains('native_add_version_skew')) { + sourceString += '\ndependency_overrides:\n'; + for (final package in packagesToOverride) { + sourceString += ' $package:\n'; + sourceString += ' path: ../../../$package\n'; + } + } + + final modifiedString = sourceString + .replaceAll( + 'path: ../../', + 'path: ${pkgNativeAssetsBuilderUri.toFilePath().unescape()}', + ) + .replaceAll('resolution: workspace', ''); await File.fromUri(targetFileUri) .writeAsString(modifiedString, flush: true); } diff --git a/pkgs/native_assets_builder/test_data/add_asset_link/pubspec.yaml b/pkgs/native_assets_builder/test_data/add_asset_link/pubspec.yaml index 7351dd88d..ea43c6dd6 100644 --- a/pkgs/native_assets_builder/test_data/add_asset_link/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/add_asset_link/pubspec.yaml @@ -5,18 +5,18 @@ version: 1.0.0 publish_to: none environment: - sdk: ^3.0.0 + sdk: ^3.6.0 dependencies: logging: ^1.1.1 meta: ^1.12.0 - # native_assets_cli: ^0.10.0 native_assets_cli: - path: ../../../native_assets_cli/ + path: ../../../native_assets_cli # native_toolchain_c: ^0.7.0 native_toolchain_c: path: ../../../native_toolchain_c/ + dev_dependencies: - lints: ^3.0.0 test: ^1.24.0 +resolution: workspace diff --git a/pkgs/native_assets_builder/test_data/complex_link/pubspec.yaml b/pkgs/native_assets_builder/test_data/complex_link/pubspec.yaml index c6d1df1ff..d08e7b625 100644 --- a/pkgs/native_assets_builder/test_data/complex_link/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/complex_link/pubspec.yaml @@ -5,7 +5,7 @@ version: 0.1.0 publish_to: none environment: - sdk: '>=3.0.0 <4.0.0' + sdk: ^3.6.0 dependencies: cli_config: ^0.2.0 @@ -14,9 +14,9 @@ dependencies: logging: ^1.1.1 # native_assets_cli: ^0.10.0 native_assets_cli: - path: ../../../native_assets_cli/ + path: ../../../native_assets_cli dev_dependencies: - lints: ^3.0.0 path: ^1.9.0 test: ^1.23.1 +resolution: workspace diff --git a/pkgs/native_assets_builder/test_data/complex_link_helper/pubspec.yaml b/pkgs/native_assets_builder/test_data/complex_link_helper/pubspec.yaml index d2467cb39..b7d873558 100644 --- a/pkgs/native_assets_builder/test_data/complex_link_helper/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/complex_link_helper/pubspec.yaml @@ -5,16 +5,16 @@ version: 0.1.0 publish_to: none environment: - sdk: '>=3.0.0 <4.0.0' + sdk: ^3.6.0 dependencies: cli_config: ^0.2.0 logging: ^1.1.1 # native_assets_cli: ^0.10.0 native_assets_cli: - path: ../../../native_assets_cli/ + path: ../../../native_assets_cli dev_dependencies: - lints: ^3.0.0 path: ^1.9.0 test: ^1.23.1 +resolution: workspace diff --git a/pkgs/native_assets_builder/test_data/cyclic_package_1/pubspec.yaml b/pkgs/native_assets_builder/test_data/cyclic_package_1/pubspec.yaml index 1203f8e76..b7ed757f3 100644 --- a/pkgs/native_assets_builder/test_data/cyclic_package_1/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/cyclic_package_1/pubspec.yaml @@ -12,9 +12,8 @@ dependencies: path: ../cyclic_package_2 # native_assets_cli: ^0.10.0 native_assets_cli: - path: ../../../native_assets_cli/ + path: ../../../native_assets_cli yaml: ^3.1.1 yaml_edit: ^2.1.0 -dev_dependencies: - lints: ^3.0.0 +resolution: workspace diff --git a/pkgs/native_assets_builder/test_data/cyclic_package_2/pubspec.yaml b/pkgs/native_assets_builder/test_data/cyclic_package_2/pubspec.yaml index 1b1a573fe..855ff1f74 100644 --- a/pkgs/native_assets_builder/test_data/cyclic_package_2/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/cyclic_package_2/pubspec.yaml @@ -12,9 +12,8 @@ dependencies: path: ../cyclic_package_1 # native_assets_cli: ^0.10.0 native_assets_cli: - path: ../../../native_assets_cli/ + path: ../../../native_assets_cli yaml: ^3.1.1 yaml_edit: ^2.1.0 -dev_dependencies: - lints: ^3.0.0 +resolution: workspace diff --git a/pkgs/native_assets_builder/test_data/dart_app/pubspec.yaml b/pkgs/native_assets_builder/test_data/dart_app/pubspec.yaml index 9177503c5..db0d07ff4 100644 --- a/pkgs/native_assets_builder/test_data/dart_app/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/dart_app/pubspec.yaml @@ -10,3 +10,5 @@ dependencies: path: ../native_add native_subtract: path: ../native_subtract + +resolution: workspace diff --git a/pkgs/native_assets_builder/test_data/depend_on_fail_build/pubspec.yaml b/pkgs/native_assets_builder/test_data/depend_on_fail_build/pubspec.yaml index a1f5d05bb..0f2a8f034 100644 --- a/pkgs/native_assets_builder/test_data/depend_on_fail_build/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/depend_on_fail_build/pubspec.yaml @@ -5,16 +5,17 @@ version: 0.1.0 publish_to: none environment: - sdk: '>=3.3.0 <4.0.0' + sdk: ^3.6.0 dependencies: fail_build: path: ../fail_build/ # native_assets_cli: ^0.10.0 native_assets_cli: - path: ../../../native_assets_cli/ + path: ../../../native_assets_cli dev_dependencies: - ffigen: ^8.0.2 - lints: ^3.0.0 + ffigen: + path: ../../../ffigen test: ^1.23.1 +resolution: workspace diff --git a/pkgs/native_assets_builder/test_data/depend_on_fail_build_app/pubspec.yaml b/pkgs/native_assets_builder/test_data/depend_on_fail_build_app/pubspec.yaml index 2c7064e5b..af27b8b53 100644 --- a/pkgs/native_assets_builder/test_data/depend_on_fail_build_app/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/depend_on_fail_build_app/pubspec.yaml @@ -5,16 +5,17 @@ version: 0.1.0 publish_to: none environment: - sdk: '>=3.3.0 <4.0.0' + sdk: ^3.6.0 dependencies: depend_on_fail_build: path: ../depend_on_fail_build/ # native_assets_cli: ^0.10.0 native_assets_cli: - path: ../../../native_assets_cli/ + path: ../../../native_assets_cli dev_dependencies: - ffigen: ^8.0.2 - lints: ^3.0.0 + ffigen: + path: ../../../ffigen test: ^1.23.1 +resolution: workspace diff --git a/pkgs/native_assets_builder/test_data/drop_dylib_link/pubspec.yaml b/pkgs/native_assets_builder/test_data/drop_dylib_link/pubspec.yaml index 86d51a234..196d50c5c 100644 --- a/pkgs/native_assets_builder/test_data/drop_dylib_link/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/drop_dylib_link/pubspec.yaml @@ -5,17 +5,17 @@ version: 1.0.0 publish_to: none environment: - sdk: ^3.0.0 + sdk: ^3.6.0 dependencies: logging: ^1.1.1 - # native_assets_cli: ^0.10.0 native_assets_cli: - path: ../../../native_assets_cli/ + path: ../../../native_assets_cli # native_toolchain_c: ^0.7.0 native_toolchain_c: path: ../../../native_toolchain_c/ + dev_dependencies: - lints: ^3.0.0 test: ^1.24.0 +resolution: workspace diff --git a/pkgs/native_assets_builder/test_data/fail_build/pubspec.yaml b/pkgs/native_assets_builder/test_data/fail_build/pubspec.yaml index dbd3c9001..e7861316a 100644 --- a/pkgs/native_assets_builder/test_data/fail_build/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/fail_build/pubspec.yaml @@ -5,14 +5,15 @@ version: 0.1.0 publish_to: none environment: - sdk: '>=3.3.0 <4.0.0' + sdk: ^3.6.0 dependencies: # native_assets_cli: ^0.10.0 native_assets_cli: - path: ../../../native_assets_cli/ + path: ../../../native_assets_cli dev_dependencies: - ffigen: ^8.0.2 - lints: ^3.0.0 + ffigen: + path: ../../../ffigen test: ^1.23.1 +resolution: workspace diff --git a/pkgs/native_assets_builder/test_data/fail_on_os_sdk_version/pubspec.yaml b/pkgs/native_assets_builder/test_data/fail_on_os_sdk_version/pubspec.yaml index 408914d3b..815a60cc5 100644 --- a/pkgs/native_assets_builder/test_data/fail_on_os_sdk_version/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/fail_on_os_sdk_version/pubspec.yaml @@ -5,14 +5,15 @@ version: 0.1.0 publish_to: none environment: - sdk: '>=3.3.0 <4.0.0' + sdk: ^3.6.0 dependencies: # native_assets_cli: ^0.10.0 native_assets_cli: - path: ../../../native_assets_cli/ + path: ../../../native_assets_cli dev_dependencies: - ffigen: ^8.0.2 - lints: ^3.0.0 + ffigen: + path: ../../../ffigen test: ^1.23.1 +resolution: workspace diff --git a/pkgs/native_assets_builder/test_data/fail_on_os_sdk_version_link/pubspec.yaml b/pkgs/native_assets_builder/test_data/fail_on_os_sdk_version_link/pubspec.yaml index 1f8f60efa..89eb9dcf5 100644 --- a/pkgs/native_assets_builder/test_data/fail_on_os_sdk_version_link/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/fail_on_os_sdk_version_link/pubspec.yaml @@ -5,16 +5,17 @@ version: 0.1.0 publish_to: none environment: - sdk: '>=3.3.0 <4.0.0' + sdk: ^3.6.0 dependencies: fail_on_os_sdk_version_linker: path: ../fail_on_os_sdk_version_linker/ # native_assets_cli: ^0.10.0 native_assets_cli: - path: ../../../native_assets_cli/ + path: ../../../native_assets_cli dev_dependencies: - ffigen: ^8.0.2 - lints: ^3.0.0 + ffigen: + path: ../../../ffigen test: ^1.23.1 +resolution: workspace diff --git a/pkgs/native_assets_builder/test_data/fail_on_os_sdk_version_linker/pubspec.yaml b/pkgs/native_assets_builder/test_data/fail_on_os_sdk_version_linker/pubspec.yaml index 360680412..945ba0c06 100644 --- a/pkgs/native_assets_builder/test_data/fail_on_os_sdk_version_linker/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/fail_on_os_sdk_version_linker/pubspec.yaml @@ -5,14 +5,15 @@ version: 0.1.0 publish_to: none environment: - sdk: '>=3.3.0 <4.0.0' + sdk: ^3.6.0 dependencies: # native_assets_cli: ^0.10.0 native_assets_cli: - path: ../../../native_assets_cli/ + path: ../../../native_assets_cli dev_dependencies: - ffigen: ^8.0.2 - lints: ^3.0.0 + ffigen: + path: ../../../ffigen test: ^1.23.1 +resolution: workspace diff --git a/pkgs/native_assets_builder/test_data/native_add/pubspec.yaml b/pkgs/native_assets_builder/test_data/native_add/pubspec.yaml index d4192be56..8c53faf2f 100644 --- a/pkgs/native_assets_builder/test_data/native_add/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/native_add/pubspec.yaml @@ -9,16 +9,17 @@ environment: dependencies: logging: ^1.1.1 - # native_assets_cli: ^0.10.0 native_assets_cli: - path: ../../../native_assets_cli/ + path: ../../../native_assets_cli # native_toolchain_c: ^0.7.0 native_toolchain_c: path: ../../../native_toolchain_c/ + dev_dependencies: - ffigen: ^8.0.2 - lints: ^3.0.0 + ffigen: + path: ../../../ffigen some_dev_dep: path: ../some_dev_dep/ test: ^1.23.1 +resolution: workspace diff --git a/pkgs/native_assets_builder/test_data/native_add_add_source/pubspec.yaml b/pkgs/native_assets_builder/test_data/native_add_add_source/pubspec.yaml index 2419cff22..b3a99edb6 100644 --- a/pkgs/native_assets_builder/test_data/native_add_add_source/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/native_add_add_source/pubspec.yaml @@ -1,22 +1,23 @@ -name: native_add +name: native_add_source description: Sums two numbers with native code. version: 0.1.0 publish_to: none environment: - sdk: '>=3.3.0 <4.0.0' + sdk: ^3.6.0 dependencies: logging: ^1.1.1 - # native_assets_cli: ^0.10.0 native_assets_cli: - path: ../../../native_assets_cli/ + path: ../../../native_assets_cli # native_toolchain_c: ^0.7.0 native_toolchain_c: path: ../../../native_toolchain_c/ + dev_dependencies: - ffigen: ^8.0.2 - lints: ^3.0.0 + ffigen: + path: ../../../ffigen test: ^1.23.1 +resolution: workspace diff --git a/pkgs/native_assets_builder/test_data/native_add_duplicate/pubspec.yaml b/pkgs/native_assets_builder/test_data/native_add_duplicate/pubspec.yaml index a9329e9a0..4d2df0467 100644 --- a/pkgs/native_assets_builder/test_data/native_add_duplicate/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/native_add_duplicate/pubspec.yaml @@ -5,22 +5,23 @@ version: 0.1.0 publish_to: none environment: - sdk: '>=3.3.0 <4.0.0' + sdk: ^3.6.0 dependencies: logging: ^1.1.1 native_add: path: ../native_add/ - # native_assets_cli: ^0.10.0 native_assets_cli: - path: ../../../native_assets_cli/ + path: ../../../native_assets_cli # native_toolchain_c: ^0.7.0 native_toolchain_c: path: ../../../native_toolchain_c/ + dev_dependencies: - ffigen: ^8.0.2 - lints: ^3.0.0 + ffigen: + path: ../../../ffigen some_dev_dep: path: ../some_dev_dep/ test: ^1.23.1 +resolution: workspace diff --git a/pkgs/native_assets_builder/test_data/native_dynamic_linking/pubspec.yaml b/pkgs/native_assets_builder/test_data/native_dynamic_linking/pubspec.yaml index 8d7ad2c63..64db0488c 100644 --- a/pkgs/native_assets_builder/test_data/native_dynamic_linking/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/native_dynamic_linking/pubspec.yaml @@ -6,18 +6,19 @@ version: 0.1.0 repository: https://github.com/dart-lang/native/tree/main/pkgs/native_assets_cli/example/build/native_dynamic_linking environment: - sdk: '>=3.3.0 <4.0.0' + sdk: ^3.6.0 dependencies: logging: ^1.1.1 - # native_assets_cli: ^0.10.0 native_assets_cli: - path: ../../../native_assets_cli/ + path: ../../../native_assets_cli # native_toolchain_c: ^0.7.0 native_toolchain_c: path: ../../../native_toolchain_c/ + dev_dependencies: - ffigen: ^8.0.2 - lints: ^3.0.0 + ffigen: + path: ../../../ffigen test: ^1.21.0 +resolution: workspace diff --git a/pkgs/native_assets_builder/test_data/native_subtract/pubspec.yaml b/pkgs/native_assets_builder/test_data/native_subtract/pubspec.yaml index d28be456d..024216bc0 100644 --- a/pkgs/native_assets_builder/test_data/native_subtract/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/native_subtract/pubspec.yaml @@ -9,14 +9,15 @@ environment: dependencies: logging: ^1.1.1 - # native_assets_cli: ^0.10.0 native_assets_cli: - path: ../../../native_assets_cli/ + path: ../../../native_assets_cli # native_toolchain_c: ^0.7.0 native_toolchain_c: path: ../../../native_toolchain_c/ + dev_dependencies: - ffigen: ^8.0.2 - lints: ^3.0.0 + ffigen: + path: ../../../ffigen test: ^1.23.1 +resolution: workspace diff --git a/pkgs/native_assets_builder/test_data/no_asset_for_link/pubspec.yaml b/pkgs/native_assets_builder/test_data/no_asset_for_link/pubspec.yaml index 8d2ca6bf8..edb9e4f89 100644 --- a/pkgs/native_assets_builder/test_data/no_asset_for_link/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/no_asset_for_link/pubspec.yaml @@ -5,15 +5,15 @@ version: 1.0.0 publish_to: none environment: - sdk: ^3.0.0 + sdk: ^3.6.0 dependencies: logging: ^1.1.1 meta: ^1.12.0 # native_assets_cli: ^0.10.0 native_assets_cli: - path: ../../../native_assets_cli/ + path: ../../../native_assets_cli dev_dependencies: - lints: ^3.0.0 test: ^1.24.0 +resolution: workspace diff --git a/pkgs/native_assets_builder/test_data/package_reading_metadata/pubspec.yaml b/pkgs/native_assets_builder/test_data/package_reading_metadata/pubspec.yaml index 40af5d7df..8cdb21931 100644 --- a/pkgs/native_assets_builder/test_data/package_reading_metadata/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/package_reading_metadata/pubspec.yaml @@ -5,16 +5,15 @@ version: 0.1.0 publish_to: none environment: - sdk: '>=3.3.0 <4.0.0' + sdk: ^3.6.0 dependencies: # native_assets_cli: ^0.10.0 native_assets_cli: - path: ../../../native_assets_cli/ + path: ../../../native_assets_cli package_with_metadata: path: ../package_with_metadata/ yaml: ^3.1.1 yaml_edit: ^2.1.0 -dev_dependencies: - lints: ^3.0.0 +resolution: workspace diff --git a/pkgs/native_assets_builder/test_data/package_with_metadata/pubspec.yaml b/pkgs/native_assets_builder/test_data/package_with_metadata/pubspec.yaml index 20881d9bf..129b0deac 100644 --- a/pkgs/native_assets_builder/test_data/package_with_metadata/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/package_with_metadata/pubspec.yaml @@ -5,14 +5,13 @@ version: 0.1.0 publish_to: none environment: - sdk: '>=3.3.0 <4.0.0' + sdk: ^3.6.0 dependencies: # native_assets_cli: ^0.10.0 native_assets_cli: - path: ../../../native_assets_cli/ + path: ../../../native_assets_cli yaml: ^3.1.1 yaml_edit: ^2.1.0 -dev_dependencies: - lints: ^3.0.0 +resolution: workspace diff --git a/pkgs/native_assets_builder/test_data/simple_data_asset/pubspec.yaml b/pkgs/native_assets_builder/test_data/simple_data_asset/pubspec.yaml index f4d7c1869..58dd4d4e8 100644 --- a/pkgs/native_assets_builder/test_data/simple_data_asset/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/simple_data_asset/pubspec.yaml @@ -5,14 +5,14 @@ version: 1.0.0 publish_to: none environment: - sdk: ^3.0.0 + sdk: ^3.6.0 dependencies: logging: ^1.1.1 # native_assets_cli: ^0.10.0 native_assets_cli: - path: ../../../native_assets_cli/ + path: ../../../native_assets_cli dev_dependencies: - lints: ^3.0.0 test: ^1.24.0 +resolution: workspace diff --git a/pkgs/native_assets_builder/test_data/simple_link/pubspec.yaml b/pkgs/native_assets_builder/test_data/simple_link/pubspec.yaml index a594c7327..d7292fdb6 100644 --- a/pkgs/native_assets_builder/test_data/simple_link/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/simple_link/pubspec.yaml @@ -5,16 +5,16 @@ version: 0.1.0 publish_to: none environment: - sdk: '>=3.0.0 <4.0.0' + sdk: ^3.6.0 dependencies: cli_config: ^0.2.0 logging: ^1.1.1 # native_assets_cli: ^0.10.0 native_assets_cli: - path: ../../../native_assets_cli/ + path: ../../../native_assets_cli dev_dependencies: - lints: ^3.0.0 path: ^1.9.0 test: ^1.23.1 +resolution: workspace diff --git a/pkgs/native_assets_builder/test_data/some_dev_dep/pubspec.yaml b/pkgs/native_assets_builder/test_data/some_dev_dep/pubspec.yaml index f3fe7dc84..e20ffb1c2 100644 --- a/pkgs/native_assets_builder/test_data/some_dev_dep/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/some_dev_dep/pubspec.yaml @@ -5,4 +5,5 @@ version: 0.1.0 publish_to: none environment: - sdk: '>=3.3.0 <4.0.0' + sdk: ^3.6.0 +resolution: workspace diff --git a/pkgs/native_assets_builder/test_data/system_library/pubspec.yaml b/pkgs/native_assets_builder/test_data/system_library/pubspec.yaml index 747b28b25..4835e01b5 100644 --- a/pkgs/native_assets_builder/test_data/system_library/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/system_library/pubspec.yaml @@ -5,18 +5,19 @@ version: 0.1.0 publish_to: none environment: - sdk: '>=3.3.0 <4.0.0' + sdk: ^3.6.0 dependencies: logging: ^1.1.1 - # native_assets_cli: ^0.10.0 native_assets_cli: - path: ../../../native_assets_cli/ + path: ../../../native_assets_cli # native_toolchain_c: ^0.7.0 native_toolchain_c: path: ../../../native_toolchain_c/ + dev_dependencies: - ffigen: ^10.0.0 - lints: ^3.0.0 + ffigen: + path: ../../../ffigen test: ^1.23.1 +resolution: workspace diff --git a/pkgs/native_assets_builder/test_data/transformer/pubspec.yaml b/pkgs/native_assets_builder/test_data/transformer/pubspec.yaml index 23becbfbd..68317d688 100644 --- a/pkgs/native_assets_builder/test_data/transformer/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/transformer/pubspec.yaml @@ -5,13 +5,12 @@ version: 0.1.0 publish_to: none environment: - sdk: '>=3.3.0 <4.0.0' + sdk: ^3.6.0 dependencies: crypto: ^3.0.6 # native_assets_cli: ^0.10.0 native_assets_cli: - path: ../../../native_assets_cli/ + path: ../../../native_assets_cli -dev_dependencies: - lints: ^3.0.0 +resolution: workspace diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_libs/pubspec.yaml b/pkgs/native_assets_builder/test_data/treeshaking_native_libs/pubspec.yaml index ed8aed369..6865dde73 100644 --- a/pkgs/native_assets_builder/test_data/treeshaking_native_libs/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/treeshaking_native_libs/pubspec.yaml @@ -5,20 +5,21 @@ version: 0.1.0 publish_to: none environment: - sdk: '>=3.3.0 <4.0.0' + sdk: ^3.6.0 dependencies: logging: ^1.1.1 - # native_assets_cli: ^0.10.0 native_assets_cli: - path: ../../../native_assets_cli/ + path: ../../../native_assets_cli # native_toolchain_c: ^0.7.0 native_toolchain_c: path: ../../../native_toolchain_c/ + dev_dependencies: - ffigen: ^8.0.2 - lints: ^3.0.0 + ffigen: + path: ../../../ffigen some_dev_dep: path: ../some_dev_dep/ test: ^1.23.1 +resolution: workspace diff --git a/pkgs/native_assets_builder/test_data/use_all_api/pubspec.yaml b/pkgs/native_assets_builder/test_data/use_all_api/pubspec.yaml index 309548f41..66d8d2ba2 100644 --- a/pkgs/native_assets_builder/test_data/use_all_api/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/use_all_api/pubspec.yaml @@ -6,16 +6,16 @@ version: 0.1.0 publish_to: none environment: - sdk: '>=3.0.0 <4.0.0' + sdk: ^3.6.0 dependencies: cli_config: ^0.2.0 logging: ^1.1.1 # native_assets_cli: ^0.10.0 native_assets_cli: - path: ../../../native_assets_cli/ + path: ../../../native_assets_cli dev_dependencies: - lints: ^3.0.0 path: ^1.9.0 test: ^1.23.1 +resolution: workspace diff --git a/pkgs/native_assets_builder/test_data/wrong_build_output/pubspec.yaml b/pkgs/native_assets_builder/test_data/wrong_build_output/pubspec.yaml index bd6fea8d8..417f07754 100644 --- a/pkgs/native_assets_builder/test_data/wrong_build_output/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/wrong_build_output/pubspec.yaml @@ -5,14 +5,13 @@ version: 0.1.0 publish_to: none environment: - sdk: '>=3.3.0 <4.0.0' + sdk: ^3.6.0 dependencies: # native_assets_cli: ^0.10.0 native_assets_cli: - path: ../../../native_assets_cli/ + path: ../../../native_assets_cli yaml: ^3.1.1 yaml_edit: ^2.1.0 -dev_dependencies: - lints: ^3.0.0 +resolution: workspace diff --git a/pkgs/native_assets_builder/test_data/wrong_build_output_2/pubspec.yaml b/pkgs/native_assets_builder/test_data/wrong_build_output_2/pubspec.yaml index 15dc2fc18..25f5f0ab8 100644 --- a/pkgs/native_assets_builder/test_data/wrong_build_output_2/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/wrong_build_output_2/pubspec.yaml @@ -5,14 +5,13 @@ version: 0.1.0 publish_to: none environment: - sdk: '>=3.3.0 <4.0.0' + sdk: ^3.6.0 dependencies: # native_assets_cli: ^0.10.0 native_assets_cli: - path: ../../../native_assets_cli/ + path: ../../../native_assets_cli yaml: ^3.1.1 yaml_edit: ^2.1.0 -dev_dependencies: - lints: ^3.0.0 +resolution: workspace diff --git a/pkgs/native_assets_builder/test_data/wrong_build_output_3/pubspec.yaml b/pkgs/native_assets_builder/test_data/wrong_build_output_3/pubspec.yaml index 22d638b7c..e6331ca5d 100644 --- a/pkgs/native_assets_builder/test_data/wrong_build_output_3/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/wrong_build_output_3/pubspec.yaml @@ -5,14 +5,13 @@ version: 0.1.0 publish_to: none environment: - sdk: '>=3.3.0 <4.0.0' + sdk: ^3.6.0 dependencies: # native_assets_cli: ^0.10.0 native_assets_cli: - path: ../../../native_assets_cli/ + path: ../../../native_assets_cli yaml: ^3.1.1 yaml_edit: ^2.1.0 -dev_dependencies: - lints: ^3.0.0 +resolution: workspace diff --git a/pkgs/native_assets_builder/test_data/wrong_linker/pubspec.yaml b/pkgs/native_assets_builder/test_data/wrong_linker/pubspec.yaml index a292d2b6c..69a62be81 100644 --- a/pkgs/native_assets_builder/test_data/wrong_linker/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/wrong_linker/pubspec.yaml @@ -5,14 +5,13 @@ version: 0.1.0 publish_to: none environment: - sdk: '>=3.3.0 <4.0.0' + sdk: ^3.6.0 dependencies: # native_assets_cli: ^0.10.0 native_assets_cli: - path: ../../../native_assets_cli/ + path: ../../../native_assets_cli yaml: ^3.1.1 yaml_edit: ^2.1.0 -dev_dependencies: - lints: ^3.0.0 +resolution: workspace diff --git a/pkgs/native_assets_builder/test_data/wrong_namespace_asset/pubspec.yaml b/pkgs/native_assets_builder/test_data/wrong_namespace_asset/pubspec.yaml index 81cea455c..b8d64834e 100644 --- a/pkgs/native_assets_builder/test_data/wrong_namespace_asset/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/wrong_namespace_asset/pubspec.yaml @@ -5,14 +5,13 @@ version: 0.1.0 publish_to: none environment: - sdk: '>=3.3.0 <4.0.0' + sdk: ^3.6.0 dependencies: # native_assets_cli: ^0.10.0 native_assets_cli: - path: ../../../native_assets_cli/ + path: ../../../native_assets_cli yaml: ^3.1.1 yaml_edit: ^2.1.0 -dev_dependencies: - lints: ^3.0.0 +resolution: workspace diff --git a/pkgs/native_assets_cli/CHANGELOG.md b/pkgs/native_assets_cli/CHANGELOG.md index a77777ebf..ea1c66750 100644 --- a/pkgs/native_assets_cli/CHANGELOG.md +++ b/pkgs/native_assets_cli/CHANGELOG.md @@ -7,6 +7,7 @@ for the same target. The `outputDirectory` is the same if the config is the same. - **Breaking change** The `output.json` is now part of `BuildInput`. +- Require Dart 3.6.0 or greater ## 0.10.0 diff --git a/pkgs/native_assets_cli/analysis_options.yaml b/pkgs/native_assets_cli/analysis_options.yaml deleted file mode 100644 index 349b9d631..000000000 --- a/pkgs/native_assets_cli/analysis_options.yaml +++ /dev/null @@ -1,17 +0,0 @@ -include: package:dart_flutter_team_lints/analysis_options.yaml - -analyzer: - errors: - todo: ignore - language: - strict-casts: true - strict-inference: true - strict-raw-types: true - -linter: - rules: - - dangling_library_doc_comments - - prefer_const_declarations - - prefer_expression_function_bodies - - prefer_final_in_for_each - - prefer_final_locals diff --git a/pkgs/native_assets_cli/example/build/download_asset/pubspec.yaml b/pkgs/native_assets_cli/example/build/download_asset/pubspec.yaml index 924cd0bc2..a14f2c769 100644 --- a/pkgs/native_assets_cli/example/build/download_asset/pubspec.yaml +++ b/pkgs/native_assets_cli/example/build/download_asset/pubspec.yaml @@ -6,20 +6,17 @@ version: 0.1.0 repository: https://github.com/dart-lang/native/tree/main/pkgs/native_assets_cli/example/build/download_asset environment: - sdk: '>=3.3.0 <4.0.0' + sdk: ^3.6.0 +resolution: workspace dependencies: crypto: ^3.0.3 logging: ^1.1.1 - # native_assets_cli: ^0.10.0 - native_assets_cli: - path: ../../../../native_assets_cli/ - # native_toolchain_c: ^0.7.0 - native_toolchain_c: - path: ../../../../native_toolchain_c/ + native_assets_cli: ^0.11.0-wip + native_toolchain_c: ^0.8.0-wip dev_dependencies: args: ^2.6.0 - ffigen: ^8.0.2 - lints: ^3.0.0 + ffigen: ^17.0.0-wip + lints: ^5.0.0 test: ^1.21.0 diff --git a/pkgs/native_assets_cli/example/build/local_asset/pubspec.yaml b/pkgs/native_assets_cli/example/build/local_asset/pubspec.yaml index 6153ca5f4..463716080 100644 --- a/pkgs/native_assets_cli/example/build/local_asset/pubspec.yaml +++ b/pkgs/native_assets_cli/example/build/local_asset/pubspec.yaml @@ -6,15 +6,14 @@ version: 0.1.0 repository: https://github.com/dart-lang/native/tree/main/pkgs/native_assets_cli/example/build/native_add_library environment: - sdk: '>=3.3.0 <4.0.0' + sdk: ^3.6.0 +resolution: workspace dependencies: logging: ^1.1.1 - # native_assets_cli: ^0.10.0 - native_assets_cli: - path: ../../../../native_assets_cli/ + native_assets_cli: ^0.11.0-wip dev_dependencies: - ffigen: ^8.0.2 - lints: ^3.0.0 + ffigen: ^17.0.0-wip + lints: ^5.0.0 test: ^1.21.0 diff --git a/pkgs/native_assets_cli/example/build/native_add_app/pubspec.yaml b/pkgs/native_assets_cli/example/build/native_add_app/pubspec.yaml index 86e03409f..cdd0ff930 100644 --- a/pkgs/native_assets_cli/example/build/native_add_app/pubspec.yaml +++ b/pkgs/native_assets_cli/example/build/native_add_app/pubspec.yaml @@ -6,12 +6,13 @@ version: 0.1.0 repository: https://github.com/dart-lang/native/tree/main/pkgs/native_assets_cli/example/build/native_add_app environment: - sdk: '>=3.3.0 <4.0.0' + sdk: ^3.6.0 +resolution: workspace dependencies: native_add_library: path: ../native_add_library/ dev_dependencies: - lints: ^3.0.0 + lints: ^5.0.0 test: ^1.21.0 diff --git a/pkgs/native_assets_cli/example/build/native_add_library/pubspec.yaml b/pkgs/native_assets_cli/example/build/native_add_library/pubspec.yaml index 259060f9a..7b3859042 100644 --- a/pkgs/native_assets_cli/example/build/native_add_library/pubspec.yaml +++ b/pkgs/native_assets_cli/example/build/native_add_library/pubspec.yaml @@ -6,18 +6,14 @@ version: 0.1.0 repository: https://github.com/dart-lang/native/tree/main/pkgs/native_assets_cli/example/build/native_add_library environment: - sdk: '>=3.3.0 <4.0.0' + sdk: ^3.6.0 +resolution: workspace dependencies: logging: ^1.1.1 - # native_assets_cli: ^0.10.0 - native_assets_cli: - path: ../../../../native_assets_cli/ - # native_toolchain_c: ^0.7.0 - native_toolchain_c: - path: ../../../../native_toolchain_c/ + native_assets_cli: ^0.11.0-wip + native_toolchain_c: ^0.8.0-wip dev_dependencies: - ffigen: ^8.0.2 - lints: ^3.0.0 + ffigen: ^17.0.0-wip test: ^1.21.0 diff --git a/pkgs/native_assets_cli/example/build/native_dynamic_linking/pubspec.yaml b/pkgs/native_assets_cli/example/build/native_dynamic_linking/pubspec.yaml index b2d14ec0c..99267d248 100644 --- a/pkgs/native_assets_cli/example/build/native_dynamic_linking/pubspec.yaml +++ b/pkgs/native_assets_cli/example/build/native_dynamic_linking/pubspec.yaml @@ -1,23 +1,19 @@ publish_to: none -name: native_dynamic_linking +name: native_dynamic_linking_example description: Dynamically link native libraries to each other. version: 0.1.0 repository: https://github.com/dart-lang/native/tree/main/pkgs/native_assets_cli/example/build/native_dynamic_linking environment: - sdk: '>=3.3.0 <4.0.0' + sdk: ^3.6.0 +resolution: workspace dependencies: logging: ^1.1.1 - # native_assets_cli: ^0.10.0 - native_assets_cli: - path: ../../../../native_assets_cli/ - # native_toolchain_c: ^0.7.0 - native_toolchain_c: - path: ../../../../native_toolchain_c/ + native_assets_cli: ^0.11.0-wip + native_toolchain_c: ^0.8.0-wip dev_dependencies: - ffigen: ^8.0.2 - lints: ^3.0.0 + ffigen: ^17.0.0-wip test: ^1.21.0 diff --git a/pkgs/native_assets_cli/example/build/native_dynamic_linking/test/add_test.dart b/pkgs/native_assets_cli/example/build/native_dynamic_linking/test/add_test.dart index 906e3a8f2..0702154b9 100644 --- a/pkgs/native_assets_cli/example/build/native_dynamic_linking/test/add_test.dart +++ b/pkgs/native_assets_cli/example/build/native_dynamic_linking/test/add_test.dart @@ -2,7 +2,7 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'package:native_dynamic_linking/add.dart'; +import 'package:native_dynamic_linking_example/add.dart'; import 'package:test/test.dart'; void main() { diff --git a/pkgs/native_assets_cli/example/build/system_library/pubspec.yaml b/pkgs/native_assets_cli/example/build/system_library/pubspec.yaml index 52d8e7778..05a53ef94 100644 --- a/pkgs/native_assets_cli/example/build/system_library/pubspec.yaml +++ b/pkgs/native_assets_cli/example/build/system_library/pubspec.yaml @@ -1,22 +1,18 @@ -name: system_library +name: system_library_example description: Uses some functions from system lirbaries. version: 0.1.0 publish_to: none environment: - sdk: '>=3.3.0 <4.0.0' + sdk: ^3.6.0 +resolution: workspace dependencies: logging: ^1.1.1 - # native_assets_cli: ^0.10.0 - native_assets_cli: - path: ../../../../native_assets_cli/ - # native_toolchain_c: ^0.7.0 - native_toolchain_c: - path: ../../../../native_toolchain_c/ + native_assets_cli: ^0.11.0-wip + native_toolchain_c: ^0.8.0-wip dev_dependencies: - ffigen: ^10.0.0 - lints: ^3.0.0 + ffigen: ^17.0.0-wip test: ^1.23.1 diff --git a/pkgs/native_assets_cli/example/build/system_library/test/memory_test.dart b/pkgs/native_assets_cli/example/build/system_library/test/memory_test.dart index 988cf7a60..ba282b724 100644 --- a/pkgs/native_assets_cli/example/build/system_library/test/memory_test.dart +++ b/pkgs/native_assets_cli/example/build/system_library/test/memory_test.dart @@ -5,7 +5,7 @@ import 'dart:ffi'; import 'dart:io'; -import 'package:system_library/memory.dart'; +import 'package:system_library_example/memory.dart'; import 'package:test/test.dart'; void main() { diff --git a/pkgs/native_assets_cli/example/build/use_dart_api/pubspec.yaml b/pkgs/native_assets_cli/example/build/use_dart_api/pubspec.yaml index c2ccd57a2..6a5660499 100644 --- a/pkgs/native_assets_cli/example/build/use_dart_api/pubspec.yaml +++ b/pkgs/native_assets_cli/example/build/use_dart_api/pubspec.yaml @@ -5,18 +5,14 @@ version: 0.1.0 publish_to: none environment: - sdk: '>=3.3.0 <4.0.0' + sdk: ^3.6.0 +resolution: workspace dependencies: logging: ^1.1.1 - # native_assets_cli: ^0.10.0 - native_assets_cli: - path: ../../../../native_assets_cli/ - # native_toolchain_c: ^0.7.0 - native_toolchain_c: - path: ../../../../native_toolchain_c/ + native_assets_cli: ^0.11.0-wip + native_toolchain_c: ^0.8.0-wip dev_dependencies: - ffigen: ^10.0.0 - lints: ^3.0.0 + ffigen: ^17.0.0-wip test: ^1.23.1 diff --git a/pkgs/native_assets_cli/example/link/app_with_asset_treeshaking/pubspec.yaml b/pkgs/native_assets_cli/example/link/app_with_asset_treeshaking/pubspec.yaml index 0fc93b81d..04c679f66 100644 --- a/pkgs/native_assets_cli/example/link/app_with_asset_treeshaking/pubspec.yaml +++ b/pkgs/native_assets_cli/example/link/app_with_asset_treeshaking/pubspec.yaml @@ -5,13 +5,14 @@ description: A sample command-line application. version: 1.0.0 environment: - sdk: ^3.0.0 + sdk: ^3.6.0 +resolution: workspace dependencies: logging: ^1.1.1 package_with_assets: path: ../package_with_assets/ dev_dependencies: - lints: ^3.0.0 + lints: ^5.0.0 test: ^1.24.0 diff --git a/pkgs/native_assets_cli/example/link/package_with_assets/pubspec.yaml b/pkgs/native_assets_cli/example/link/package_with_assets/pubspec.yaml index 0cc7dccd3..97c20520f 100644 --- a/pkgs/native_assets_cli/example/link/package_with_assets/pubspec.yaml +++ b/pkgs/native_assets_cli/example/link/package_with_assets/pubspec.yaml @@ -6,16 +6,17 @@ version: 1.0.0 # repository: https://github.com/my_org/my_repo environment: - sdk: ^3.0.0 + sdk: ^3.6.0 +resolution: workspace dependencies: logging: ^1.1.1 - meta: ^1.12.0 - # native_assets_cli: ^0.10.0 - native_assets_cli: - path: ../../../../native_assets_cli/ + meta: ^1.15.0 + native_assets_cli: ^0.11.0-wip record_use: ^0.3.0 dev_dependencies: - lints: ^3.0.0 test: ^1.24.0 + +dependency_overrides: + meta: ^1.16.0 diff --git a/pkgs/native_assets_cli/pubspec.yaml b/pkgs/native_assets_cli/pubspec.yaml index 73f9f171c..e594a19c0 100644 --- a/pkgs/native_assets_cli/pubspec.yaml +++ b/pkgs/native_assets_cli/pubspec.yaml @@ -15,8 +15,9 @@ topics: - native-assets environment: - sdk: '>=3.5.0 <4.0.0' + sdk: ^3.6.0 +resolution: workspace dependencies: collection: ^1.17.1 crypto: ^3.0.3 @@ -26,7 +27,7 @@ dependencies: yaml: ^3.1.2 # Used for reading pubspec.yaml to obtain the package name dev_dependencies: - dart_flutter_team_lints: ^2.1.1 + dart_flutter_team_lints: ^3.2.0 file_testing: ^3.0.0 glob: any test: ^1.25.7 diff --git a/pkgs/native_toolchain_c/CHANGELOG.md b/pkgs/native_toolchain_c/CHANGELOG.md index aa9bd3d35..d766d8b04 100644 --- a/pkgs/native_toolchain_c/CHANGELOG.md +++ b/pkgs/native_toolchain_c/CHANGELOG.md @@ -1,6 +1,7 @@ ## 0.8.0-wip - Bump `package:native_assets_cli` to 0.11.0. +- Require Dart 3.6.0 or greater ## 0.7.0 diff --git a/pkgs/native_toolchain_c/analysis_options.yaml b/pkgs/native_toolchain_c/analysis_options.yaml deleted file mode 100644 index 349b9d631..000000000 --- a/pkgs/native_toolchain_c/analysis_options.yaml +++ /dev/null @@ -1,17 +0,0 @@ -include: package:dart_flutter_team_lints/analysis_options.yaml - -analyzer: - errors: - todo: ignore - language: - strict-casts: true - strict-inference: true - strict-raw-types: true - -linter: - rules: - - dangling_library_doc_comments - - prefer_const_declarations - - prefer_expression_function_bodies - - prefer_final_in_for_each - - prefer_final_locals diff --git a/pkgs/native_toolchain_c/pubspec.yaml b/pkgs/native_toolchain_c/pubspec.yaml index 47bed04e9..1cba21ec1 100644 --- a/pkgs/native_toolchain_c/pubspec.yaml +++ b/pkgs/native_toolchain_c/pubspec.yaml @@ -14,18 +14,17 @@ topics: - native-toolchain environment: - sdk: '>=3.1.0 <4.0.0' + sdk: ^3.6.0 +resolution: workspace dependencies: glob: ^2.1.1 logging: ^1.1.1 meta: ^1.9.1 - # native_assets_cli: ^0.10.0 - native_assets_cli: - path: ../native_assets_cli/ + native_assets_cli: ^0.11.0-wip pub_semver: ^2.1.3 dev_dependencies: collection: ^1.17.1 - dart_flutter_team_lints: ^2.1.1 + dart_flutter_team_lints: ^3.2.0 test: ^1.21.0 diff --git a/pkgs/objective_c/CHANGELOG.md b/pkgs/objective_c/CHANGELOG.md index f73fc2bd8..1994346d1 100644 --- a/pkgs/objective_c/CHANGELOG.md +++ b/pkgs/objective_c/CHANGELOG.md @@ -3,6 +3,7 @@ - __Breaking change__: Rename the `NSString` to `String` conversion method from `toString()` to `toDartString()`. - Add various ObjC categories (extension methods) to the built in classes. +- Require Dart 3.6.0 or greater - Make all visible API types public. ## 4.1.0 diff --git a/pkgs/objective_c/analysis_options.yaml b/pkgs/objective_c/analysis_options.yaml deleted file mode 100644 index 2d9d01f3c..000000000 --- a/pkgs/objective_c/analysis_options.yaml +++ /dev/null @@ -1,11 +0,0 @@ -include: package:dart_flutter_team_lints/analysis_options.yaml - -analyzer: - errors: - todo: ignore - exclude: - - tool/data/extra_methods.dart - language: - strict-casts: true - strict-inference: true - strict-raw-types: true diff --git a/pkgs/objective_c/lib/src/internal.dart b/pkgs/objective_c/lib/src/internal.dart index 43489c48e..cbe2d6743 100644 --- a/pkgs/objective_c/lib/src/internal.dart +++ b/pkgs/objective_c/lib/src/internal.dart @@ -417,7 +417,7 @@ VoidPtr _registerBlockClosure(Function closure) { /// Only for use by ffigen bindings. Function getBlockClosure(BlockPtr block) { - var id = block.ref.target.address; + final id = block.ref.target.address; assert(_blockClosureRegistry.containsKey(id)); return _blockClosureRegistry[id]!; } diff --git a/pkgs/objective_c/pubspec.yaml b/pkgs/objective_c/pubspec.yaml index 191d8e6c4..53bfbf39c 100644 --- a/pkgs/objective_c/pubspec.yaml +++ b/pkgs/objective_c/pubspec.yaml @@ -15,9 +15,10 @@ topics: - codegen environment: - sdk: '>=3.4.0 <4.0.0' + sdk: ^3.6.0 flutter: '>=3.22.0' +resolution: workspace dependencies: ffi: ^2.1.0 flutter: @@ -26,18 +27,13 @@ dependencies: dev_dependencies: args: ^2.6.0 coverage: ^1.11.0 - dart_flutter_team_lints: ^2.0.0 - ffigen: ^17.0.0 - flutter_lints: ^3.0.0 + dart_flutter_team_lints: ^3.2.0 + ffigen: ^17.0.0-wip flutter_test: sdk: flutter test: ^1.21.1 yaml: ^3.1.0 -dependency_overrides: - ffigen: - path: ../ffigen/ - flutter: plugin: platforms: diff --git a/pkgs/swift2objc/analysis_options.yaml b/pkgs/swift2objc/analysis_options.yaml deleted file mode 100644 index eb67f883b..000000000 --- a/pkgs/swift2objc/analysis_options.yaml +++ /dev/null @@ -1,7 +0,0 @@ -include: package:dart_flutter_team_lints/analysis_options.yaml - -analyzer: - language: - strict-casts: true - strict-inference: true - strict-raw-types: true diff --git a/pkgs/swift2objc/lib/src/generator/_core/utils.dart b/pkgs/swift2objc/lib/src/generator/_core/utils.dart index 83dc01a3b..ccd0b08da 100644 --- a/pkgs/swift2objc/lib/src/generator/_core/utils.dart +++ b/pkgs/swift2objc/lib/src/generator/_core/utils.dart @@ -5,18 +5,16 @@ import '../../ast/_core/interfaces/can_throw.dart'; import '../../ast/_core/interfaces/declaration.dart'; import '../../ast/_core/shared/parameter.dart'; -String generateParameters(List params) { - return params.map((param) { - final String labels; - if (param.internalName != null) { - labels = '${param.name} ${param.internalName}'; - } else { - labels = param.name; - } +String generateParameters(List params) => params.map((param) { + final String labels; + if (param.internalName != null) { + labels = '${param.name} ${param.internalName}'; + } else { + labels = param.name; + } - return '$labels: ${param.type.swiftType}'; - }).join(', '); -} + return '$labels: ${param.type.swiftType}'; + }).join(', '); extension Indentation on Iterable { Iterable indent([int count = 1]) { diff --git a/pkgs/swift2objc/lib/src/generator/generator.dart b/pkgs/swift2objc/lib/src/generator/generator.dart index 86f6a5454..c33c83d1a 100644 --- a/pkgs/swift2objc/lib/src/generator/generator.dart +++ b/pkgs/swift2objc/lib/src/generator/generator.dart @@ -6,21 +6,19 @@ String generate( List declarations, { String? moduleName, String? preamble, -}) { - return '${[ - preamble, - '', - if (moduleName != null) 'import $moduleName', - 'import Foundation\n', - ...declarations.map((decl) => generateDeclaration(decl).join('\n')), - ].nonNulls.join('\n')}\n'; -} +}) => + '${[ + preamble, + '', + if (moduleName != null) 'import $moduleName', + 'import Foundation\n', + ...declarations.map((decl) => generateDeclaration(decl).join('\n')), + ].nonNulls.join('\n')}\n'; -List generateDeclaration(Declaration declaration) { - return switch (declaration) { - ClassDeclaration() => generateClass(declaration), - _ => throw UnimplementedError( - "$declaration generation isn't implemented yet", - ), - }; -} +List generateDeclaration(Declaration declaration) => + switch (declaration) { + ClassDeclaration() => generateClass(declaration), + _ => throw UnimplementedError( + "$declaration generation isn't implemented yet", + ), + }; diff --git a/pkgs/swift2objc/lib/src/generator/generators/class_generator.dart b/pkgs/swift2objc/lib/src/generator/generators/class_generator.dart index b5161bfb2..ee0bef03c 100644 --- a/pkgs/swift2objc/lib/src/generator/generators/class_generator.dart +++ b/pkgs/swift2objc/lib/src/generator/generators/class_generator.dart @@ -11,19 +11,17 @@ import '../../ast/declarations/compounds/members/property_declaration.dart'; import '../_core/utils.dart'; import '../generator.dart'; -List generateClass(ClassDeclaration declaration) { - return [ - '${_generateClassHeader(declaration)} {', - ...[ - _generateClassWrappedInstance(declaration), - ..._generateClassProperties(declaration), - ..._generateInitializers(declaration), - ..._generateClassMethods(declaration), - ..._generateNestedDeclarations(declaration), - ].nonNulls.indent(), - '}\n', - ]; -} +List generateClass(ClassDeclaration declaration) => [ + '${_generateClassHeader(declaration)} {', + ...[ + _generateClassWrappedInstance(declaration), + ..._generateClassProperties(declaration), + ..._generateInitializers(declaration), + ..._generateClassMethods(declaration), + ..._generateNestedDeclarations(declaration), + ].nonNulls.indent(), + '}\n', + ]; String _generateClassHeader(ClassDeclaration declaration) { final header = StringBuffer(); diff --git a/pkgs/swift2objc/lib/src/parser/_core/json.dart b/pkgs/swift2objc/lib/src/parser/_core/json.dart index aa0d1a0f5..c62c21ae0 100644 --- a/pkgs/swift2objc/lib/src/parser/_core/json.dart +++ b/pkgs/swift2objc/lib/src/parser/_core/json.dart @@ -75,32 +75,28 @@ class Json extends Iterable { @override Iterator get iterator => _JsonIterator(this); - bool jsonWithKeyExists(String key, [dynamic value]) { - return any((json) { - if (!json[key].exists) return false; - - if (value == null) { - return true; - } else { - return json[key].get() == value; - } - }); - } + bool jsonWithKeyExists(String key, [dynamic value]) => any((json) { + if (!json[key].exists) return false; - Json firstJsonWhereKey(String key, dynamic value) { - return firstWhere( - (json) { - try { + if (value == null) { + return true; + } else { return json[key].get() == value; - } catch (_) { - return false; } - }, - orElse: () => throw Exception( - 'No map with key "$key" and value "$value" was found at $path', - ), - ); - } + }); + + Json firstJsonWhereKey(String key, dynamic value) => firstWhere( + (json) { + try { + return json[key].get() == value; + } catch (_) { + return false; + } + }, + orElse: () => throw Exception( + 'No map with key "$key" and value "$value" was found at $path', + ), + ); @override String toString() => jsonEncode(_json); diff --git a/pkgs/swift2objc/lib/src/parser/_core/utils.dart b/pkgs/swift2objc/lib/src/parser/_core/utils.dart index 7c42046f0..3326cd502 100644 --- a/pkgs/swift2objc/lib/src/parser/_core/utils.dart +++ b/pkgs/swift2objc/lib/src/parser/_core/utils.dart @@ -61,21 +61,16 @@ String parseSymbolId(Json symbolJson) { return id; } -String parseSymbolName(Json symbolJson) { - return symbolJson['declarationFragments'] - .firstJsonWhereKey('kind', 'identifier')['spelling'] - .get(); -} +String parseSymbolName(Json symbolJson) => symbolJson['declarationFragments'] + .firstJsonWhereKey('kind', 'identifier')['spelling'] + .get(); -bool parseSymbolHasObjcAnnotation(Json symbolJson) { - return symbolJson['declarationFragments'] - .any((json) => matchFragment(json, 'attribute', '@objc')); -} +bool parseSymbolHasObjcAnnotation(Json symbolJson) => + symbolJson['declarationFragments'] + .any((json) => matchFragment(json, 'attribute', '@objc')); -bool parseIsOverriding(Json symbolJson) { - return symbolJson['declarationFragments'] - .any((json) => matchFragment(json, 'keyword', 'override')); -} +bool parseIsOverriding(Json symbolJson) => symbolJson['declarationFragments'] + .any((json) => matchFragment(json, 'keyword', 'override')); final class ObsoleteException implements Exception { final String symbol; diff --git a/pkgs/swift2objc/lib/src/parser/parsers/declaration_parsers/parse_compound_declaration.dart b/pkgs/swift2objc/lib/src/parser/parsers/declaration_parsers/parse_compound_declaration.dart index cf3e9a27a..2850dbce0 100644 --- a/pkgs/swift2objc/lib/src/parser/parsers/declaration_parsers/parse_compound_declaration.dart +++ b/pkgs/swift2objc/lib/src/parser/parsers/declaration_parsers/parse_compound_declaration.dart @@ -89,21 +89,19 @@ T _parseCompoundDeclaration( ClassDeclaration parseClassDeclaration( ParsedSymbol classSymbol, ParsedSymbolgraph symbolgraph, -) { - return _parseCompoundDeclaration( - classSymbol, - ClassDeclaration.new, - symbolgraph, - ); -} +) => + _parseCompoundDeclaration( + classSymbol, + ClassDeclaration.new, + symbolgraph, + ); StructDeclaration parseStructDeclaration( ParsedSymbol classSymbol, ParsedSymbolgraph symbolgraph, -) { - return _parseCompoundDeclaration( - classSymbol, - StructDeclaration.new, - symbolgraph, - ); -} +) => + _parseCompoundDeclaration( + classSymbol, + StructDeclaration.new, + symbolgraph, + ); diff --git a/pkgs/swift2objc/lib/src/parser/parsers/parse_type.dart b/pkgs/swift2objc/lib/src/parser/parsers/parse_type.dart index 6e7a4231f..8bca8ccae 100644 --- a/pkgs/swift2objc/lib/src/parser/parsers/parse_type.dart +++ b/pkgs/swift2objc/lib/src/parser/parsers/parse_type.dart @@ -108,13 +108,16 @@ typedef SuffixParselet = (ReferredType, TokenList) Function( ReferredType prefixType, Json token, TokenList fragments) => (OptionalType(prefixType), fragments); -(ReferredType, TokenList) _nestedTypeParselet(ParsedSymbolgraph symbolgraph, - ReferredType prefixType, Json token, TokenList fragments) { - // Parsing Foo.Bar. Foo is in prefixType, and the token is ".". Bar's ID - // is a globally uniquely identifier. We don't need to use Foo as a namespace. - // So we can actually completely discard Foo and just parse Bar. - return parseType(symbolgraph, fragments); -} +(ReferredType, TokenList) _nestedTypeParselet( + ParsedSymbolgraph symbolgraph, + ReferredType prefixType, + Json token, + TokenList fragments, +) => + // Parsing Foo.Bar. Foo is in prefixType, and the token is ".". Bar's ID + // is a globally uniquely identifier. We don't need to use Foo as a + // namespace. So we can actually completely discard Foo and just parse Bar. + parseType(symbolgraph, fragments); Map _suffixParsets = { 'text: ?': _optionalParselet, diff --git a/pkgs/swift2objc/lib/src/transformer/transformers/transform_compound.dart b/pkgs/swift2objc/lib/src/transformer/transformers/transform_compound.dart index 3e079f0f2..534c48337 100644 --- a/pkgs/swift2objc/lib/src/transformer/transformers/transform_compound.dart +++ b/pkgs/swift2objc/lib/src/transformer/transformers/transform_compound.dart @@ -88,21 +88,20 @@ ClassDeclaration transformCompound( InitializerDeclaration _buildWrapperInitializer( PropertyDeclaration wrappedClassInstance, -) { - return InitializerDeclaration( - id: '', - params: [ - Parameter( - name: '_', - internalName: 'wrappedInstance', - type: wrappedClassInstance.type, - ) - ], - isOverriding: false, - isFailable: false, - throws: false, - async: false, - statements: ['self.${wrappedClassInstance.name} = wrappedInstance'], - hasObjCAnnotation: wrappedClassInstance.hasObjCAnnotation, - ); -} +) => + InitializerDeclaration( + id: '', + params: [ + Parameter( + name: '_', + internalName: 'wrappedInstance', + type: wrappedClassInstance.type, + ) + ], + isOverriding: false, + isFailable: false, + throws: false, + async: false, + statements: ['self.${wrappedClassInstance.name} = wrappedInstance'], + hasObjCAnnotation: wrappedClassInstance.hasObjCAnnotation, + ); diff --git a/pkgs/swift2objc/lib/src/transformer/transformers/transform_function.dart b/pkgs/swift2objc/lib/src/transformer/transformers/transform_function.dart index c5e375282..a4483a79d 100644 --- a/pkgs/swift2objc/lib/src/transformer/transformers/transform_function.dart +++ b/pkgs/swift2objc/lib/src/transformer/transformers/transform_function.dart @@ -48,18 +48,17 @@ MethodDeclaration transformGlobalFunction( GlobalFunctionDeclaration globalFunction, UniqueNamer globalNamer, TransformationMap transformationMap, -) { - return _transformFunction( - globalFunction, - globalNamer, - transformationMap, - wrapperMethodName: globalNamer.makeUnique( - '${globalFunction.name}Wrapper', - ), - originalCallStatementGenerator: (arguments) => - '${globalFunction.name}($arguments)', - ); -} +) => + _transformFunction( + globalFunction, + globalNamer, + transformationMap, + wrapperMethodName: globalNamer.makeUnique( + '${globalFunction.name}Wrapper', + ), + originalCallStatementGenerator: (arguments) => + '${globalFunction.name}($arguments)', + ); // -------------------------- Core Implementation -------------------------- diff --git a/pkgs/swift2objc/lib/src/transformer/transformers/transform_variable.dart b/pkgs/swift2objc/lib/src/transformer/transformers/transform_variable.dart index c18e02a50..71c3feec0 100644 --- a/pkgs/swift2objc/lib/src/transformer/transformers/transform_variable.dart +++ b/pkgs/swift2objc/lib/src/transformer/transformers/transform_variable.dart @@ -40,17 +40,16 @@ PropertyDeclaration transformGlobalVariable( GlobalVariableDeclaration globalVariable, UniqueNamer globalNamer, TransformationMap transformationMap, -) { - return _transformVariable( - globalVariable, - globalNamer, - transformationMap, - wrapperPropertyName: globalNamer.makeUnique( - '${globalVariable.name}Wrapper', - ), - variableReferenceExpression: globalVariable.name, - ); -} +) => + _transformVariable( + globalVariable, + globalNamer, + transformationMap, + wrapperPropertyName: globalNamer.makeUnique( + '${globalVariable.name}Wrapper', + ), + variableReferenceExpression: globalVariable.name, + ); // -------------------------- Core Implementation -------------------------- diff --git a/pkgs/swift2objc/pubspec.yaml b/pkgs/swift2objc/pubspec.yaml index f49adf983..e8f3ea522 100644 --- a/pkgs/swift2objc/pubspec.yaml +++ b/pkgs/swift2objc/pubspec.yaml @@ -14,15 +14,16 @@ topics: - swift - codegen +resolution: workspace dependencies: logging: ^1.3.0 - meta: ^1.16.0 + meta: ^1.15.0 path: ^1.9.0 environment: - sdk: '>=3.3.0 <4.0.0' + sdk: ^3.6.0 dev_dependencies: args: ^2.6.0 - dart_flutter_team_lints: ^2.0.0 + dart_flutter_team_lints: ^3.2.0 test: ^1.21.1 diff --git a/pkgs/swiftgen/analysis_options.yaml b/pkgs/swiftgen/analysis_options.yaml deleted file mode 100644 index eb67f883b..000000000 --- a/pkgs/swiftgen/analysis_options.yaml +++ /dev/null @@ -1,7 +0,0 @@ -include: package:dart_flutter_team_lints/analysis_options.yaml - -analyzer: - language: - strict-casts: true - strict-inference: true - strict-raw-types: true diff --git a/pkgs/swiftgen/pubspec.yaml b/pkgs/swiftgen/pubspec.yaml index 664fd220c..97838d78e 100644 --- a/pkgs/swiftgen/pubspec.yaml +++ b/pkgs/swiftgen/pubspec.yaml @@ -15,16 +15,13 @@ topics: - codegen environment: - sdk: '>=3.3.0 <4.0.0' + sdk: ^3.6.0 +resolution: workspace dependencies: ffi: ^2.1.0 dev_dependencies: - dart_flutter_team_lints: ^2.0.0 - ffigen: ^11.0.0 + dart_flutter_team_lints: ^3.2.0 + ffigen: ^17.0.0-wip test: ^1.21.1 - -dependency_overrides: - ffigen: - path: ../ffigen/ diff --git a/pubspec.yaml b/pubspec.yaml new file mode 100644 index 000000000..c2040c6f7 --- /dev/null +++ b/pubspec.yaml @@ -0,0 +1,68 @@ +name: dart_lang_native_workspace + +environment: + sdk: ^3.6.0 + +workspace: + - pkgs/ffi + - pkgs/ffigen + - pkgs/ffigen/example/c_json + - pkgs/ffigen/example/ffinative + - pkgs/ffigen/example/libclang-example + - pkgs/ffigen/example/objective_c + - pkgs/ffigen/example/shared_bindings + - pkgs/ffigen/example/simple + - pkgs/ffigen/example/swift + - pkgs/jni + - pkgs/jnigen + - pkgs/native_assets_builder + - pkgs/native_assets_builder/test_data/add_asset_link + - pkgs/native_assets_builder/test_data/complex_link + - pkgs/native_assets_builder/test_data/complex_link_helper + - pkgs/native_assets_builder/test_data/cyclic_package_1 + - pkgs/native_assets_builder/test_data/cyclic_package_2 + - pkgs/native_assets_builder/test_data/dart_app + - pkgs/native_assets_builder/test_data/depend_on_fail_build + - pkgs/native_assets_builder/test_data/depend_on_fail_build_app + - pkgs/native_assets_builder/test_data/drop_dylib_link + - pkgs/native_assets_builder/test_data/fail_build + - pkgs/native_assets_builder/test_data/fail_on_os_sdk_version + - pkgs/native_assets_builder/test_data/fail_on_os_sdk_version_link + - pkgs/native_assets_builder/test_data/fail_on_os_sdk_version_linker + - pkgs/native_assets_builder/test_data/native_add + - pkgs/native_assets_builder/test_data/native_add_add_source + - pkgs/native_assets_builder/test_data/native_add_duplicate + - pkgs/native_assets_builder/test_data/native_dynamic_linking + - pkgs/native_assets_builder/test_data/native_subtract + - pkgs/native_assets_builder/test_data/no_asset_for_link + - pkgs/native_assets_builder/test_data/package_reading_metadata + - pkgs/native_assets_builder/test_data/package_with_metadata + - pkgs/native_assets_builder/test_data/simple_data_asset + - pkgs/native_assets_builder/test_data/simple_link + - pkgs/native_assets_builder/test_data/some_dev_dep + - pkgs/native_assets_builder/test_data/system_library + - pkgs/native_assets_builder/test_data/transformer + - pkgs/native_assets_builder/test_data/treeshaking_native_libs + - pkgs/native_assets_builder/test_data/use_all_api + - pkgs/native_assets_builder/test_data/wrong_build_output + - pkgs/native_assets_builder/test_data/wrong_build_output_2 + - pkgs/native_assets_builder/test_data/wrong_build_output_3 + - pkgs/native_assets_builder/test_data/wrong_linker + - pkgs/native_assets_builder/test_data/wrong_namespace_asset + - pkgs/native_assets_cli + - pkgs/native_assets_cli/example/build/download_asset + - pkgs/native_assets_cli/example/build/local_asset + - pkgs/native_assets_cli/example/build/native_add_app + - pkgs/native_assets_cli/example/build/native_add_library + - pkgs/native_assets_cli/example/build/native_dynamic_linking + - pkgs/native_assets_cli/example/build/system_library + - pkgs/native_assets_cli/example/build/use_dart_api + - pkgs/native_assets_cli/example/link/app_with_asset_treeshaking + - pkgs/native_assets_cli/example/link/package_with_assets + - pkgs/native_toolchain_c + - pkgs/objective_c + - pkgs/swift2objc + - pkgs/swiftgen + +dev_dependencies: + dart_flutter_team_lints: ^3.2.1