Skip to content

Commit 3555b62

Browse files
[jnigen] JObject is now composed of JReference instead of inheriting it. (#982)
1 parent 001910c commit 3555b62

File tree

44 files changed

+2807
-2225
lines changed

Some content is hidden

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

44 files changed

+2807
-2225
lines changed

pkgs/jni/CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
## 0.8.0-wip
22

3+
- **Breaking Change**: `JObject.reference` now returns a `JReference` instead of
4+
`Pointer<Void>`.
35
- **Breaking Change** ([#548](https://github.com/dart-lang/native/issues/548)):
46
Converted various `Exception`s into `Error`s:
57
- `UseAfterReleaseException` -> `UseAfterReleaseError`

pkgs/jni/example/pubspec.lock

+29-21
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,18 @@ packages:
55
dependency: transitive
66
description:
77
name: _fe_analyzer_shared
8-
sha256: ae92f5d747aee634b87f89d9946000c2de774be1d6ac3e58268224348cd0101a
8+
sha256: "0b2f2bd91ba804e53a61d757b986f89f1f9eaed5b11e4b2f5a2468d86d6c9fc7"
99
url: "https://pub.dev"
1010
source: hosted
11-
version: "61.0.0"
11+
version: "67.0.0"
1212
analyzer:
1313
dependency: transitive
1414
description:
1515
name: analyzer
16-
sha256: ea3d8652bda62982addfd92fdc2d0214e5f82e43325104990d4f4c4a2a313562
16+
sha256: "37577842a27e4338429a1cbc32679d508836510b056f1eedf0c8d20e39c1383d"
1717
url: "https://pub.dev"
1818
source: hosted
19-
version: "5.13.0"
19+
version: "6.4.1"
2020
args:
2121
dependency: transitive
2222
description:
@@ -93,10 +93,10 @@ packages:
9393
dependency: "direct main"
9494
description:
9595
name: cupertino_icons
96-
sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be
96+
sha256: d57953e10f9f8327ce64a508a355f0b1ec902193f66288e8cb5070e7c47eeb2d
9797
url: "https://pub.dev"
9898
source: hosted
99-
version: "1.0.5"
99+
version: "1.0.6"
100100
fake_async:
101101
dependency: transitive
102102
description:
@@ -109,10 +109,10 @@ packages:
109109
dependency: "direct main"
110110
description:
111111
name: ffi
112-
sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878"
112+
sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21"
113113
url: "https://pub.dev"
114114
source: hosted
115-
version: "2.1.0"
115+
version: "2.1.2"
116116
file:
117117
dependency: transitive
118118
description:
@@ -135,10 +135,10 @@ packages:
135135
dependency: "direct dev"
136136
description:
137137
name: flutter_lints
138-
sha256: "2118df84ef0c3ca93f96123a616ae8540879991b8b57af2f81b76a7ada49b2a4"
138+
sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04
139139
url: "https://pub.dev"
140140
source: hosted
141-
version: "2.0.2"
141+
version: "2.0.3"
142142
flutter_test:
143143
dependency: "direct dev"
144144
description: flutter
@@ -205,10 +205,10 @@ packages:
205205
dependency: transitive
206206
description:
207207
name: js
208-
sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3
208+
sha256: c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf
209209
url: "https://pub.dev"
210210
source: hosted
211-
version: "0.6.7"
211+
version: "0.7.1"
212212
leak_tracker:
213213
dependency: transitive
214214
description:
@@ -277,10 +277,10 @@ packages:
277277
dependency: transitive
278278
description:
279279
name: mime
280-
sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e
280+
sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2"
281281
url: "https://pub.dev"
282282
source: hosted
283-
version: "1.0.4"
283+
version: "1.0.5"
284284
node_preamble:
285285
dependency: transitive
286286
description:
@@ -317,10 +317,10 @@ packages:
317317
dependency: transitive
318318
description:
319319
name: plugin_platform_interface
320-
sha256: "43798d895c929056255600343db8f049921cbec94d31ec87f1dc5c16c01935dd"
320+
sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
321321
url: "https://pub.dev"
322322
source: hosted
323-
version: "2.1.5"
323+
version: "2.1.8"
324324
pool:
325325
dependency: transitive
326326
description:
@@ -502,14 +502,22 @@ packages:
502502
url: "https://pub.dev"
503503
source: hosted
504504
version: "1.1.0"
505+
web:
506+
dependency: transitive
507+
description:
508+
name: web
509+
sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27"
510+
url: "https://pub.dev"
511+
source: hosted
512+
version: "0.5.1"
505513
web_socket_channel:
506514
dependency: transitive
507515
description:
508516
name: web_socket_channel
509-
sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b
517+
sha256: "1d8e795e2a8b3730c41b8a98a2dff2e0fb57ae6f0764a1c46ec5915387d257b2"
510518
url: "https://pub.dev"
511519
source: hosted
512-
version: "2.4.0"
520+
version: "2.4.4"
513521
webdriver:
514522
dependency: transitive
515523
description:
@@ -522,10 +530,10 @@ packages:
522530
dependency: transitive
523531
description:
524532
name: webkit_inspection_protocol
525-
sha256: "67d3a8b6c79e1987d19d848b0892e582dbb0c66c57cc1fef58a177dd2aa2823d"
533+
sha256: "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572"
526534
url: "https://pub.dev"
527535
source: hosted
528-
version: "1.2.0"
536+
version: "1.2.1"
529537
yaml:
530538
dependency: transitive
531539
description:
@@ -535,5 +543,5 @@ packages:
535543
source: hosted
536544
version: "3.1.2"
537545
sdks:
538-
dart: ">=3.2.0 <4.0.0"
546+
dart: ">=3.3.0 <4.0.0"
539547
flutter: ">=3.18.0-18.0.pre.54"

pkgs/jni/lib/jni.dart

-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ export 'src/jvalues.dart' hide JValueArgs, toJValues;
6666
export 'src/types.dart';
6767
export 'src/jarray.dart';
6868
export 'src/jobject.dart';
69-
export 'src/jreference.dart' show JReferenceUseExtension;
7069

7170
export 'src/lang/lang.dart';
7271
export 'src/nio/nio.dart';

pkgs/jni/lib/src/jarray.dart

+25-21
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,9 @@ class JArray<E> extends JObject {
7575
final clazz = (type as JObjType).getClass();
7676
final array = JArray<E>.fromRef(
7777
type,
78-
Jni.accessors.newObjectArray(length, clazz.reference, nullptr).object,
78+
Jni.accessors
79+
.newObjectArray(length, clazz.reference.pointer, nullptr)
80+
.object,
7981
);
8082
clazz.release();
8183
return array;
@@ -97,7 +99,8 @@ class JArray<E> extends JObject {
9799
final array = JArray<E>.fromRef(
98100
fill.$type as JObjType<E>,
99101
Jni.accessors
100-
.newObjectArray(length, clazz.reference, fill.reference)
102+
.newObjectArray(
103+
length, clazz.reference.pointer, fill.reference.pointer)
101104
.object,
102105
);
103106
clazz.release();
@@ -108,12 +111,12 @@ class JArray<E> extends JObject {
108111

109112
JniResult elementAt(int index, int type) {
110113
RangeError.checkValidIndex(index, this);
111-
return Jni.accessors.getArrayElement(reference, index, type);
114+
return Jni.accessors.getArrayElement(reference.pointer, index, type);
112115
}
113116

114117
/// The number of elements in this array.
115118
int get length {
116-
return _length ??= Jni.env.GetArrayLength(reference);
119+
return _length ??= Jni.env.GetArrayLength(reference.pointer);
117120
}
118121
}
119122

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

@@ -151,7 +154,7 @@ extension BoolArray on JArray<jboolean> {
151154
it.forEachIndexed((index, element) {
152155
ptr[index] = element ? 1 : 0;
153156
});
154-
Jni.env.SetBooleanArrayRegion(reference, start, size, ptr);
157+
Jni.env.SetBooleanArrayRegion(reference.pointer, start, size, ptr);
155158
});
156159
}
157160
}
@@ -165,7 +168,7 @@ extension ByteArray on JArray<jbyte> {
165168
RangeError.checkValidIndex(index, this);
166169
_allocate<JByteMarker>(sizeOf<JByteMarker>(), (ptr) {
167170
ptr.value = value;
168-
Jni.env.SetByteArrayRegion(reference, index, 1, ptr);
171+
Jni.env.SetByteArrayRegion(reference.pointer, index, 1, ptr);
169172
});
170173
}
171174

@@ -178,7 +181,7 @@ extension ByteArray on JArray<jbyte> {
178181
it.forEachIndexed((index, element) {
179182
ptr[index] = element;
180183
});
181-
Jni.env.SetByteArrayRegion(reference, start, size, ptr);
184+
Jni.env.SetByteArrayRegion(reference.pointer, start, size, ptr);
182185
});
183186
}
184187
}
@@ -194,7 +197,7 @@ extension CharArray on JArray<jchar> {
194197
RangeError.checkValidIndex(index, this);
195198
_allocate<JCharMarker>(sizeOf<JCharMarker>(), (ptr) {
196199
ptr.value = value.codeUnits.first;
197-
Jni.env.SetCharArrayRegion(reference, index, 1, ptr);
200+
Jni.env.SetCharArrayRegion(reference.pointer, index, 1, ptr);
198201
});
199202
}
200203

@@ -207,7 +210,7 @@ extension CharArray on JArray<jchar> {
207210
it.forEachIndexed((index, element) {
208211
ptr[index] = element.codeUnits.first;
209212
});
210-
Jni.env.SetCharArrayRegion(reference, start, size, ptr);
213+
Jni.env.SetCharArrayRegion(reference.pointer, start, size, ptr);
211214
});
212215
}
213216
}
@@ -221,7 +224,7 @@ extension ShortArray on JArray<jshort> {
221224
RangeError.checkValidIndex(index, this);
222225
_allocate<JShortMarker>(sizeOf<JShortMarker>(), (ptr) {
223226
ptr.value = value;
224-
Jni.env.SetShortArrayRegion(reference, index, 1, ptr);
227+
Jni.env.SetShortArrayRegion(reference.pointer, index, 1, ptr);
225228
});
226229
}
227230

@@ -234,7 +237,7 @@ extension ShortArray on JArray<jshort> {
234237
it.forEachIndexed((index, element) {
235238
ptr[index] = element;
236239
});
237-
Jni.env.SetShortArrayRegion(reference, start, size, ptr);
240+
Jni.env.SetShortArrayRegion(reference.pointer, start, size, ptr);
238241
});
239242
}
240243
}
@@ -248,7 +251,7 @@ extension IntArray on JArray<jint> {
248251
RangeError.checkValidIndex(index, this);
249252
_allocate<JIntMarker>(sizeOf<JIntMarker>(), (ptr) {
250253
ptr.value = value;
251-
Jni.env.SetIntArrayRegion(reference, index, 1, ptr);
254+
Jni.env.SetIntArrayRegion(reference.pointer, index, 1, ptr);
252255
});
253256
}
254257

@@ -261,7 +264,7 @@ extension IntArray on JArray<jint> {
261264
it.forEachIndexed((index, element) {
262265
ptr[index] = element;
263266
});
264-
Jni.env.SetIntArrayRegion(reference, start, size, ptr);
267+
Jni.env.SetIntArrayRegion(reference.pointer, start, size, ptr);
265268
});
266269
}
267270
}
@@ -275,7 +278,7 @@ extension LongArray on JArray<jlong> {
275278
RangeError.checkValidIndex(index, this);
276279
_allocate<JLongMarker>(sizeOf<JLongMarker>(), (ptr) {
277280
ptr.value = value;
278-
Jni.env.SetLongArrayRegion(reference, index, 1, ptr);
281+
Jni.env.SetLongArrayRegion(reference.pointer, index, 1, ptr);
279282
});
280283
}
281284

@@ -288,7 +291,7 @@ extension LongArray on JArray<jlong> {
288291
it.forEachIndexed((index, element) {
289292
ptr[index] = element;
290293
});
291-
Jni.env.SetLongArrayRegion(reference, start, size, ptr);
294+
Jni.env.SetLongArrayRegion(reference.pointer, start, size, ptr);
292295
});
293296
}
294297
}
@@ -302,7 +305,7 @@ extension FloatArray on JArray<jfloat> {
302305
RangeError.checkValidIndex(index, this);
303306
_allocate<JFloatMarker>(sizeOf<JFloatMarker>(), (ptr) {
304307
ptr.value = value;
305-
Jni.env.SetFloatArrayRegion(reference, index, 1, ptr);
308+
Jni.env.SetFloatArrayRegion(reference.pointer, index, 1, ptr);
306309
});
307310
}
308311

@@ -315,7 +318,7 @@ extension FloatArray on JArray<jfloat> {
315318
it.forEachIndexed((index, element) {
316319
ptr[index] = element;
317320
});
318-
Jni.env.SetFloatArrayRegion(reference, start, size, ptr);
321+
Jni.env.SetFloatArrayRegion(reference.pointer, start, size, ptr);
319322
});
320323
}
321324
}
@@ -329,7 +332,7 @@ extension DoubleArray on JArray<jdouble> {
329332
RangeError.checkValidIndex(index, this);
330333
_allocate<JDoubleMarker>(sizeOf<JDoubleMarker>(), (ptr) {
331334
ptr.value = value;
332-
Jni.env.SetDoubleArrayRegion(reference, index, 1, ptr);
335+
Jni.env.SetDoubleArrayRegion(reference.pointer, index, 1, ptr);
333336
});
334337
}
335338

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

356359
void operator []=(int index, T value) {
357360
RangeError.checkValidIndex(index, this);
358-
Jni.env.SetObjectArrayElement(reference, index, value.reference);
361+
Jni.env.SetObjectArrayElement(
362+
reference.pointer, index, value.reference.pointer);
359363
}
360364

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

0 commit comments

Comments
 (0)