Skip to content

Commit

Permalink
[jnigen] JObject is now composed of JReference instead of inheriting …
Browse files Browse the repository at this point in the history
…it. (#982)
  • Loading branch information
HosseinYousefi committed Mar 8, 2024
1 parent 001910c commit 3555b62
Show file tree
Hide file tree
Showing 44 changed files with 2,807 additions and 2,225 deletions.
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>`.
- **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

0 comments on commit 3555b62

Please sign in to comment.