Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[jnigen] JObject is now composed of JReference instead of inheriting it. #982

Merged
merged 2 commits into from
Mar 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions pkgs/jni/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
## 0.8.0-wip

- **Breaking Change**: `JObject.reference` now returns a `JReference` instead of
`Pointer<Void>`.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe point to umbrella issue so that users know where to look for a rationale.

- **Breaking Change** ([#548](https://github.com/dart-lang/native/issues/548)):
Converted various `Exception`s into `Error`s:
- `UseAfterReleaseException` -> `UseAfterReleaseError`
Expand Down
50 changes: 29 additions & 21 deletions pkgs/jni/example/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,18 @@ packages:
dependency: transitive
description:
name: _fe_analyzer_shared
sha256: ae92f5d747aee634b87f89d9946000c2de774be1d6ac3e58268224348cd0101a
sha256: "0b2f2bd91ba804e53a61d757b986f89f1f9eaed5b11e4b2f5a2468d86d6c9fc7"
url: "https://pub.dev"
source: hosted
version: "61.0.0"
version: "67.0.0"
analyzer:
dependency: transitive
description:
name: analyzer
sha256: ea3d8652bda62982addfd92fdc2d0214e5f82e43325104990d4f4c4a2a313562
sha256: "37577842a27e4338429a1cbc32679d508836510b056f1eedf0c8d20e39c1383d"
url: "https://pub.dev"
source: hosted
version: "5.13.0"
version: "6.4.1"
args:
dependency: transitive
description:
Expand Down Expand Up @@ -93,10 +93,10 @@ packages:
dependency: "direct main"
description:
name: cupertino_icons
sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be
sha256: d57953e10f9f8327ce64a508a355f0b1ec902193f66288e8cb5070e7c47eeb2d
url: "https://pub.dev"
source: hosted
version: "1.0.5"
version: "1.0.6"
fake_async:
dependency: transitive
description:
Expand All @@ -109,10 +109,10 @@ packages:
dependency: "direct main"
description:
name: ffi
sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878"
sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21"
url: "https://pub.dev"
source: hosted
version: "2.1.0"
version: "2.1.2"
file:
dependency: transitive
description:
Expand All @@ -135,10 +135,10 @@ packages:
dependency: "direct dev"
description:
name: flutter_lints
sha256: "2118df84ef0c3ca93f96123a616ae8540879991b8b57af2f81b76a7ada49b2a4"
sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04
url: "https://pub.dev"
source: hosted
version: "2.0.2"
version: "2.0.3"
flutter_test:
dependency: "direct dev"
description: flutter
Expand Down Expand Up @@ -205,10 +205,10 @@ packages:
dependency: transitive
description:
name: js
sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3
sha256: c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf
url: "https://pub.dev"
source: hosted
version: "0.6.7"
version: "0.7.1"
leak_tracker:
dependency: transitive
description:
Expand Down Expand Up @@ -277,10 +277,10 @@ packages:
dependency: transitive
description:
name: mime
sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e
sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2"
url: "https://pub.dev"
source: hosted
version: "1.0.4"
version: "1.0.5"
node_preamble:
dependency: transitive
description:
Expand Down Expand Up @@ -317,10 +317,10 @@ packages:
dependency: transitive
description:
name: plugin_platform_interface
sha256: "43798d895c929056255600343db8f049921cbec94d31ec87f1dc5c16c01935dd"
sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
url: "https://pub.dev"
source: hosted
version: "2.1.5"
version: "2.1.8"
pool:
dependency: transitive
description:
Expand Down Expand Up @@ -502,14 +502,22 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.1.0"
web:
dependency: transitive
description:
name: web
sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27"
url: "https://pub.dev"
source: hosted
version: "0.5.1"
web_socket_channel:
dependency: transitive
description:
name: web_socket_channel
sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b
sha256: "1d8e795e2a8b3730c41b8a98a2dff2e0fb57ae6f0764a1c46ec5915387d257b2"
url: "https://pub.dev"
source: hosted
version: "2.4.0"
version: "2.4.4"
webdriver:
dependency: transitive
description:
Expand All @@ -522,10 +530,10 @@ packages:
dependency: transitive
description:
name: webkit_inspection_protocol
sha256: "67d3a8b6c79e1987d19d848b0892e582dbb0c66c57cc1fef58a177dd2aa2823d"
sha256: "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572"
url: "https://pub.dev"
source: hosted
version: "1.2.0"
version: "1.2.1"
yaml:
dependency: transitive
description:
Expand All @@ -535,5 +543,5 @@ packages:
source: hosted
version: "3.1.2"
sdks:
dart: ">=3.2.0 <4.0.0"
dart: ">=3.3.0 <4.0.0"
flutter: ">=3.18.0-18.0.pre.54"
1 change: 0 additions & 1 deletion pkgs/jni/lib/jni.dart
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,6 @@ export 'src/jvalues.dart' hide JValueArgs, toJValues;
export 'src/types.dart';
export 'src/jarray.dart';
export 'src/jobject.dart';
export 'src/jreference.dart' show JReferenceUseExtension;

export 'src/lang/lang.dart';
export 'src/nio/nio.dart';
Expand Down
46 changes: 25 additions & 21 deletions pkgs/jni/lib/src/jarray.dart
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,9 @@ class JArray<E> extends JObject {
final clazz = (type as JObjType).getClass();
final array = JArray<E>.fromRef(
type,
Jni.accessors.newObjectArray(length, clazz.reference, nullptr).object,
Jni.accessors
.newObjectArray(length, clazz.reference.pointer, nullptr)
.object,
);
clazz.release();
return array;
Expand All @@ -97,7 +99,8 @@ class JArray<E> extends JObject {
final array = JArray<E>.fromRef(
fill.$type as JObjType<E>,
Jni.accessors
.newObjectArray(length, clazz.reference, fill.reference)
.newObjectArray(
length, clazz.reference.pointer, fill.reference.pointer)
.object,
);
clazz.release();
Expand All @@ -108,12 +111,12 @@ class JArray<E> extends JObject {

JniResult elementAt(int index, int type) {
RangeError.checkValidIndex(index, this);
return Jni.accessors.getArrayElement(reference, index, type);
return Jni.accessors.getArrayElement(reference.pointer, index, type);
}

/// The number of elements in this array.
int get length {
return _length ??= Jni.env.GetArrayLength(reference);
return _length ??= Jni.env.GetArrayLength(reference.pointer);
}
}

Expand All @@ -138,7 +141,7 @@ extension BoolArray on JArray<jboolean> {
RangeError.checkValidIndex(index, this);
_allocate<JBooleanMarker>(sizeOf<JBooleanMarker>(), (ptr) {
ptr.value = value ? 1 : 0;
Jni.env.SetBooleanArrayRegion(reference, index, 1, ptr);
Jni.env.SetBooleanArrayRegion(reference.pointer, index, 1, ptr);
});
}

Expand All @@ -151,7 +154,7 @@ extension BoolArray on JArray<jboolean> {
it.forEachIndexed((index, element) {
ptr[index] = element ? 1 : 0;
});
Jni.env.SetBooleanArrayRegion(reference, start, size, ptr);
Jni.env.SetBooleanArrayRegion(reference.pointer, start, size, ptr);
});
}
}
Expand All @@ -165,7 +168,7 @@ extension ByteArray on JArray<jbyte> {
RangeError.checkValidIndex(index, this);
_allocate<JByteMarker>(sizeOf<JByteMarker>(), (ptr) {
ptr.value = value;
Jni.env.SetByteArrayRegion(reference, index, 1, ptr);
Jni.env.SetByteArrayRegion(reference.pointer, index, 1, ptr);
});
}

Expand All @@ -178,7 +181,7 @@ extension ByteArray on JArray<jbyte> {
it.forEachIndexed((index, element) {
ptr[index] = element;
});
Jni.env.SetByteArrayRegion(reference, start, size, ptr);
Jni.env.SetByteArrayRegion(reference.pointer, start, size, ptr);
});
}
}
Expand All @@ -194,7 +197,7 @@ extension CharArray on JArray<jchar> {
RangeError.checkValidIndex(index, this);
_allocate<JCharMarker>(sizeOf<JCharMarker>(), (ptr) {
ptr.value = value.codeUnits.first;
Jni.env.SetCharArrayRegion(reference, index, 1, ptr);
Jni.env.SetCharArrayRegion(reference.pointer, index, 1, ptr);
});
}

Expand All @@ -207,7 +210,7 @@ extension CharArray on JArray<jchar> {
it.forEachIndexed((index, element) {
ptr[index] = element.codeUnits.first;
});
Jni.env.SetCharArrayRegion(reference, start, size, ptr);
Jni.env.SetCharArrayRegion(reference.pointer, start, size, ptr);
});
}
}
Expand All @@ -221,7 +224,7 @@ extension ShortArray on JArray<jshort> {
RangeError.checkValidIndex(index, this);
_allocate<JShortMarker>(sizeOf<JShortMarker>(), (ptr) {
ptr.value = value;
Jni.env.SetShortArrayRegion(reference, index, 1, ptr);
Jni.env.SetShortArrayRegion(reference.pointer, index, 1, ptr);
});
}

Expand All @@ -234,7 +237,7 @@ extension ShortArray on JArray<jshort> {
it.forEachIndexed((index, element) {
ptr[index] = element;
});
Jni.env.SetShortArrayRegion(reference, start, size, ptr);
Jni.env.SetShortArrayRegion(reference.pointer, start, size, ptr);
});
}
}
Expand All @@ -248,7 +251,7 @@ extension IntArray on JArray<jint> {
RangeError.checkValidIndex(index, this);
_allocate<JIntMarker>(sizeOf<JIntMarker>(), (ptr) {
ptr.value = value;
Jni.env.SetIntArrayRegion(reference, index, 1, ptr);
Jni.env.SetIntArrayRegion(reference.pointer, index, 1, ptr);
});
}

Expand All @@ -261,7 +264,7 @@ extension IntArray on JArray<jint> {
it.forEachIndexed((index, element) {
ptr[index] = element;
});
Jni.env.SetIntArrayRegion(reference, start, size, ptr);
Jni.env.SetIntArrayRegion(reference.pointer, start, size, ptr);
});
}
}
Expand All @@ -275,7 +278,7 @@ extension LongArray on JArray<jlong> {
RangeError.checkValidIndex(index, this);
_allocate<JLongMarker>(sizeOf<JLongMarker>(), (ptr) {
ptr.value = value;
Jni.env.SetLongArrayRegion(reference, index, 1, ptr);
Jni.env.SetLongArrayRegion(reference.pointer, index, 1, ptr);
});
}

Expand All @@ -288,7 +291,7 @@ extension LongArray on JArray<jlong> {
it.forEachIndexed((index, element) {
ptr[index] = element;
});
Jni.env.SetLongArrayRegion(reference, start, size, ptr);
Jni.env.SetLongArrayRegion(reference.pointer, start, size, ptr);
});
}
}
Expand All @@ -302,7 +305,7 @@ extension FloatArray on JArray<jfloat> {
RangeError.checkValidIndex(index, this);
_allocate<JFloatMarker>(sizeOf<JFloatMarker>(), (ptr) {
ptr.value = value;
Jni.env.SetFloatArrayRegion(reference, index, 1, ptr);
Jni.env.SetFloatArrayRegion(reference.pointer, index, 1, ptr);
});
}

Expand All @@ -315,7 +318,7 @@ extension FloatArray on JArray<jfloat> {
it.forEachIndexed((index, element) {
ptr[index] = element;
});
Jni.env.SetFloatArrayRegion(reference, start, size, ptr);
Jni.env.SetFloatArrayRegion(reference.pointer, start, size, ptr);
});
}
}
Expand All @@ -329,7 +332,7 @@ extension DoubleArray on JArray<jdouble> {
RangeError.checkValidIndex(index, this);
_allocate<JDoubleMarker>(sizeOf<JDoubleMarker>(), (ptr) {
ptr.value = value;
Jni.env.SetDoubleArrayRegion(reference, index, 1, ptr);
Jni.env.SetDoubleArrayRegion(reference.pointer, index, 1, ptr);
});
}

Expand All @@ -342,7 +345,7 @@ extension DoubleArray on JArray<jdouble> {
it.forEachIndexed((index, element) {
ptr[index] = element;
});
Jni.env.SetDoubleArrayRegion(reference, start, size, ptr);
Jni.env.SetDoubleArrayRegion(reference.pointer, start, size, ptr);
});
}
}
Expand All @@ -355,7 +358,8 @@ extension ObjectArray<T extends JObject> on JArray<T> {

void operator []=(int index, T value) {
RangeError.checkValidIndex(index, this);
Jni.env.SetObjectArrayElement(reference, index, value.reference);
Jni.env.SetObjectArrayElement(
reference.pointer, index, value.reference.pointer);
}

void setRange(int start, int end, Iterable<T> iterable, [int skipCount = 0]) {
Expand Down
Loading
Loading