dart-lang / native

Dart packages related to FFI and native assets bundling.
BSD 3-Clause "New" or "Revised" License
82 stars 27 forks source link

[jnigen] Use varargs for dartonly method calls #1090

Closed HosseinYousefi closed 1 month ago

HosseinYousefi commented 1 month ago

This is part one of #660.

Ignore the numerous if (!isCBased)s, I didn't separate the concerns much, since I wanted to remove C based bindings anyways.

For now I'm using the larger types like Int64 and Double, for this to work on my machine. Once the fix for https://github.com/dart-lang/sdk/issues/55471 lands in stable, we can change this. Not sure if this workaround works everywhere, will wait for CI run. – Seems to be working!

I will add to the changelog in the second PR when removing the C based bindings completely.

github-actions[bot] commented 1 month ago

PR Health

Changelog Entry :exclamation:

Details | Package | Changed Files | | :--- | :--- | | package:jni | pkgs/jni/lib/src/jni.dart | | package:jnigen | pkgs/jnigen/lib/src/bindings/dart_generator.dart | Changes to files need to be [accounted for](https://github.com/dart-lang/ecosystem/wiki/Changelog) in their respective changelogs. This check can be disabled by tagging the PR with `skip-changelog-check`.

Coverage :warning:

Details | File | Coverage | | :--- | :--- | |pkgs/jni/lib/src/jni.dart| :broken_heart: Not covered | |pkgs/jni/tool/wrapper_generators/generate_c_extensions.dart| :broken_heart: Not covered | |pkgs/jnigen/example/in_app_java/lib/android_utils.dart| :broken_heart: Not covered | |pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/PDDocument.dart| :broken_heart: Not covered | |pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/PDDocumentInformation.dart| :broken_heart: Not covered | |pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/text/PDFTextStripper.dart| :broken_heart: Not covered | |pkgs/jnigen/lib/src/bindings/dart_generator.dart| :broken_heart: Not covered | This check for [test coverage](https://github.com/dart-lang/ecosystem/wiki/Test-Coverage) is informational (issues shown here will not fail the PR). This check can be disabled by tagging the PR with `skip-coverage-check`.

License Headers :warning:

Details ``` // Copyright (c) 2024, 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. ``` | Files | | :--- | |pkgs/jnigen/example/in_app_java/lib/android_utils.dart| |pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/PDDocument.dart| |pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/PDDocumentInformation.dart| |pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/text/PDFTextStripper.dart| All source files should start with a [license header](https://github.com/dart-lang/ecosystem/wiki/License-Header).
Unrelated files missing license headers | Files | | :--- | |pkgs/ffi/example/main.dart| |pkgs/ffigen/example/libclang-example/generated_bindings.dart| |pkgs/ffigen/example/shared_bindings/generate.dart| |pkgs/ffigen/example/shared_bindings/lib/generated/a_gen.dart| |pkgs/ffigen/example/shared_bindings/lib/generated/a_shared_b_gen.dart| |pkgs/ffigen/example/shared_bindings/lib/generated/base_gen.dart| |pkgs/ffigen/example/simple/generated_bindings.dart| |pkgs/ffigen/lib/src/config_provider/config_spec.dart| |pkgs/ffigen/lib/src/header_parser/clang_bindings/clang_bindings.dart| |pkgs/ffigen/test/collision_tests/expected_bindings/_expected_decl_decl_collision_bindings.dart| |pkgs/ffigen/test/collision_tests/expected_bindings/_expected_decl_symbol_address_collision_bindings.dart| |pkgs/ffigen/test/collision_tests/expected_bindings/_expected_decl_type_name_collision_bindings.dart| |pkgs/ffigen/test/collision_tests/expected_bindings/_expected_reserved_keyword_collision_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_comment_markup_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_dart_handle_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_forward_decl_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_functions_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_imported_types_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_native_func_typedef_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_opaque_dependencies_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_packed_structs_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_regress_384_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_struct_fptr_fields_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_typedef_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_unions_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_varargs_bindings.dart| |pkgs/ffigen/test/large_integration_tests/_expected_cjson_bindings.dart| |pkgs/ffigen/test/large_integration_tests/_expected_libclang_bindings.dart| |pkgs/ffigen/test/large_integration_tests/_expected_sqlite_bindings.dart| |pkgs/ffigen/test/native_test/_expected_native_test_bindings.dart| |pkgs/jni/lib/src/lang/jcharacter.dart| |pkgs/jni/lib/src/third_party/generated_bindings.dart| |pkgs/jni/lib/src/third_party/global_env_extensions.dart| |pkgs/jni/lib/src/third_party/jni_bindings_generated.dart| |pkgs/jnigen/android_test_runner/lib/main.dart| |pkgs/jnigen/example/kotlin_plugin/example/lib/main.dart| |pkgs/jnigen/example/kotlin_plugin/lib/kotlin_bindings.dart| |pkgs/jnigen/example/kotlin_plugin/lib/kotlin_plugin.dart| |pkgs/jnigen/example/pdfbox_plugin/lib/pdfbox_plugin.dart| |pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/_init.dart| |pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/_package.dart| |pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/text/_package.dart| |pkgs/jnigen/lib/src/bindings/descriptor.dart| |pkgs/jnigen/lib/src/elements/elements.g.dart| |pkgs/jnigen/test/jackson_core_test/third_party/c_based/dart_bindings/com/fasterxml/jackson/core/_package.dart| |pkgs/jnigen/test/jackson_core_test/third_party/dart_only/dart_bindings/com/fasterxml/jackson/core/_package.dart| |pkgs/jnigen/tool/command_runner.dart|
This check can be disabled by tagging the PR with `skip-license-check`.

Package publish validation :heavy_check_mark:

Details | Package | Version | Status | | :--- | ---: | :--- | | package:ffi | 2.1.2 | already published at pub.dev | | package:ffigen | 12.0.0-wip | WIP (no publish necessary) | | package:jni | 0.8.0 | already published at pub.dev | | package:jnigen | 0.8.1-wip | WIP (no publish necessary) | | package:native_assets_builder | 0.6.1 | already published at pub.dev | | package:native_assets_cli | 0.5.4 | already published at pub.dev | | package:native_toolchain_c | 0.4.1 | already published at pub.dev | | package:objective_c | 0.0.1-wip | WIP (no publish necessary) | Documentation at https://github.com/dart-lang/ecosystem/wiki/Publishing-automation.
coveralls commented 1 month ago

Coverage Status

coverage: 91.859% (-0.005%) from 91.864% when pulling 5181bd6fe4df6352fcab513d242632ae8144224e on varargs into ffc493da2e357887922a5f5ff887f0f2e1e3d2c7 on main.

HosseinYousefi commented 1 month ago

https://github.com/dart-lang/sdk/issues/55483