mirror of
https://github.com/wgh136/flutter_qjs.git
synced 2025-09-27 05:27:23 +00:00
dart format
This commit is contained in:
62
lib/ffi.dart
62
lib/ffi.dart
@@ -3,7 +3,7 @@
|
||||
* @Author: ekibun
|
||||
* @Date: 2020-09-19 10:29:04
|
||||
* @LastEditors: ekibun
|
||||
* @LastEditTime: 2020-09-24 23:25:32
|
||||
* @LastEditTime: 2020-09-27 01:12:16
|
||||
*/
|
||||
import 'dart:ffi';
|
||||
import 'dart:io';
|
||||
@@ -84,16 +84,20 @@ Pointer jsThrowInternalError(Pointer ctx, String message) {
|
||||
}
|
||||
|
||||
/// JSValue *jsEXCEPTION()
|
||||
final Pointer Function() jsEXCEPTION =
|
||||
qjsLib.lookup<NativeFunction<Pointer Function()>>("jsEXCEPTION").asFunction();
|
||||
final Pointer Function() jsEXCEPTION = qjsLib
|
||||
.lookup<NativeFunction<Pointer Function()>>("jsEXCEPTION")
|
||||
.asFunction();
|
||||
|
||||
/// JSValue *jsUNDEFINED()
|
||||
final Pointer Function() jsUNDEFINED =
|
||||
qjsLib.lookup<NativeFunction<Pointer Function()>>("jsUNDEFINED").asFunction();
|
||||
final Pointer Function() jsUNDEFINED = qjsLib
|
||||
.lookup<NativeFunction<Pointer Function()>>("jsUNDEFINED")
|
||||
.asFunction();
|
||||
|
||||
/// JSRuntime *jsNewRuntime(JSChannel channel)
|
||||
final Pointer Function(
|
||||
Pointer<NativeFunction<Pointer Function(Pointer ctx, Pointer method, Pointer argv)>>,
|
||||
Pointer<
|
||||
NativeFunction<
|
||||
Pointer Function(Pointer ctx, Pointer method, Pointer argv)>>,
|
||||
) _jsNewRuntime = qjsLib
|
||||
.lookup<
|
||||
NativeFunction<
|
||||
@@ -209,7 +213,13 @@ Pointer jsEval(
|
||||
) {
|
||||
var utf8input = Utf8.toUtf8(input);
|
||||
var utf8filename = Utf8.toUtf8(filename);
|
||||
var val = _jsEval(ctx, utf8input, Utf8.strlen(utf8input), utf8filename, evalFlags);
|
||||
var val = _jsEval(
|
||||
ctx,
|
||||
utf8input,
|
||||
Utf8.strlen(utf8input),
|
||||
utf8filename,
|
||||
evalFlags,
|
||||
);
|
||||
free(utf8input);
|
||||
free(utf8filename);
|
||||
runtimeOpaques[jsGetRuntime(ctx)].port.sendPort.send('eval');
|
||||
@@ -532,18 +542,23 @@ final Pointer Function(
|
||||
|
||||
/// int jsDefinePropertyValue(JSContext *ctx, JSValueConst *this_obj,
|
||||
/// JSAtom prop, JSValue *val, int flags)
|
||||
final int Function(Pointer ctx, Pointer thisObj, int prop, Pointer val, int flag)
|
||||
jsDefinePropertyValue = qjsLib
|
||||
.lookup<
|
||||
NativeFunction<
|
||||
Int32 Function(
|
||||
Pointer,
|
||||
Pointer,
|
||||
Uint32,
|
||||
Pointer,
|
||||
Int32,
|
||||
)>>("jsDefinePropertyValue")
|
||||
.asFunction();
|
||||
final int Function(
|
||||
Pointer ctx,
|
||||
Pointer thisObj,
|
||||
int prop,
|
||||
Pointer val,
|
||||
int flag,
|
||||
) jsDefinePropertyValue = qjsLib
|
||||
.lookup<
|
||||
NativeFunction<
|
||||
Int32 Function(
|
||||
Pointer,
|
||||
Pointer,
|
||||
Uint32,
|
||||
Pointer,
|
||||
Int32,
|
||||
)>>("jsDefinePropertyValue")
|
||||
.asFunction();
|
||||
|
||||
/// void jsFreeAtom(JSContext *ctx, JSAtom v)
|
||||
final Pointer Function(
|
||||
@@ -618,8 +633,9 @@ final int Function(
|
||||
.asFunction();
|
||||
|
||||
/// uint32_t sizeOfJSValue()
|
||||
final int Function() _sizeOfJSValue =
|
||||
qjsLib.lookup<NativeFunction<Uint32 Function()>>("sizeOfJSValue").asFunction();
|
||||
final int Function() _sizeOfJSValue = qjsLib
|
||||
.lookup<NativeFunction<Uint32 Function()>>("sizeOfJSValue")
|
||||
.asFunction();
|
||||
|
||||
final sizeOfJSValue = _sizeOfJSValue();
|
||||
|
||||
@@ -664,7 +680,9 @@ Pointer jsCall(
|
||||
Pointer thisObj,
|
||||
List<Pointer> argv,
|
||||
) {
|
||||
Pointer jsArgs = allocate<Uint8>(count: argv.length > 0 ? sizeOfJSValue * argv.length : 1);
|
||||
Pointer jsArgs = allocate<Uint8>(
|
||||
count: argv.length > 0 ? sizeOfJSValue * argv.length : 1,
|
||||
);
|
||||
for (int i = 0; i < argv.length; ++i) {
|
||||
Pointer jsArg = argv[i];
|
||||
setJSValueList(jsArgs, i, jsArg);
|
||||
|
@@ -3,7 +3,7 @@
|
||||
* @Author: ekibun
|
||||
* @Date: 2020-08-08 08:29:09
|
||||
* @LastEditors: ekibun
|
||||
* @LastEditTime: 2020-09-21 23:59:40
|
||||
* @LastEditTime: 2020-09-27 01:08:14
|
||||
*/
|
||||
import 'dart:async';
|
||||
import 'dart:ffi';
|
||||
@@ -33,7 +33,12 @@ class FlutterQjs {
|
||||
if (method.address != 0) {
|
||||
if (methodHandler == null) throw Exception("No MethodHandler");
|
||||
var argvs = jsToDart(ctx, argv);
|
||||
return dartToJs(ctx, methodHandler(Utf8.fromUtf8(method.cast<Utf8>()), argvs));
|
||||
return dartToJs(
|
||||
ctx,
|
||||
methodHandler(
|
||||
Utf8.fromUtf8(method.cast<Utf8>()),
|
||||
argvs,
|
||||
));
|
||||
}
|
||||
if (moduleHandler == null) throw Exception("No ModuleHandler");
|
||||
var ret = Utf8.toUtf8(moduleHandler(Utf8.fromUtf8(argv.cast<Utf8>())));
|
||||
@@ -42,7 +47,10 @@ class FlutterQjs {
|
||||
});
|
||||
return ret;
|
||||
} catch (e, stack) {
|
||||
var err = jsThrowInternalError(ctx, e.toString() + "\n" + stack.toString());
|
||||
var err = jsThrowInternalError(
|
||||
ctx,
|
||||
e.toString() + "\n" + stack.toString(),
|
||||
);
|
||||
if (method.address == 0) {
|
||||
jsFreeValue(ctx, err);
|
||||
return Pointer.fromAddress(0);
|
||||
@@ -92,7 +100,12 @@ class FlutterQjs {
|
||||
break;
|
||||
}
|
||||
}
|
||||
List jsPromises = runtimeOpaques[_rt].ref.where((v) => v is JSPromise).toList();
|
||||
List jsPromises = runtimeOpaques[_rt]
|
||||
.ref
|
||||
.where(
|
||||
(v) => v is JSPromise,
|
||||
)
|
||||
.toList();
|
||||
for (JSPromise jsPromise in jsPromises) {
|
||||
if (jsPromise.checkResolveReject()) {
|
||||
jsPromise.release();
|
||||
|
@@ -68,7 +68,11 @@ class JSFunction extends JSRefValue {
|
||||
@override
|
||||
noSuchMethod(Invocation invocation) {
|
||||
if (val == null) return;
|
||||
List<Pointer> args = invocation.positionalArguments.map((e) => dartToJs(ctx, e)).toList();
|
||||
List<Pointer> args = invocation.positionalArguments
|
||||
.map(
|
||||
(e) => dartToJs(ctx, e),
|
||||
)
|
||||
.toList();
|
||||
Pointer jsRet = jsCall(ctx, val, null, args);
|
||||
for (Pointer jsArg in args) {
|
||||
jsFreeValue(ctx, jsArg);
|
||||
@@ -109,7 +113,8 @@ String parseJSException(Pointer ctx, {Pointer e}) {
|
||||
Pointer dartToJs(Pointer ctx, dynamic val, {Map<dynamic, dynamic> cache}) {
|
||||
if (val is Future) {
|
||||
var resolvingFunc = allocate<Uint8>(count: sizeOfJSValue * 2);
|
||||
var resolvingFunc2 = Pointer.fromAddress(resolvingFunc.address + sizeOfJSValue);
|
||||
var resolvingFunc2 =
|
||||
Pointer.fromAddress(resolvingFunc.address + sizeOfJSValue);
|
||||
var ret = jsNewPromiseCapability(ctx, resolvingFunc);
|
||||
var res = jsToDart(ctx, resolvingFunc);
|
||||
var rej = jsToDart(ctx, resolvingFunc2);
|
||||
@@ -235,7 +240,8 @@ dynamic jsToDart(Pointer ctx, Pointer val, {Map<int, dynamic> cache}) {
|
||||
var jsAtom = jsPropertyEnumGetAtom(ptab.value, i);
|
||||
var jsAtomValue = jsAtomToValue(ctx, jsAtom);
|
||||
var jsProp = jsGetProperty(ctx, val, jsAtom);
|
||||
ret[jsToDart(ctx, jsAtomValue, cache: cache)] = jsToDart(ctx, jsProp, cache: cache);
|
||||
ret[jsToDart(ctx, jsAtomValue, cache: cache)] =
|
||||
jsToDart(ctx, jsProp, cache: cache);
|
||||
jsFreeValue(ctx, jsAtomValue);
|
||||
jsFreeValue(ctx, jsProp);
|
||||
jsFreeAtom(ctx, jsAtom);
|
||||
@@ -273,7 +279,8 @@ Pointer jsNewContextWithPromsieWrapper(Pointer rt) {
|
||||
runtimeOpaques[rt].promsieToFuture = (promise) {
|
||||
var completer = Completer();
|
||||
var wrapper = promiseWrapper.val;
|
||||
if (wrapper == null) completer.completeError(Exception("Runtime has been released!"));
|
||||
if (wrapper == null)
|
||||
completer.completeError(Exception("Runtime has been released!"));
|
||||
var jsPromise = jsCall(ctx, wrapper, null, [promise]);
|
||||
runtimeOpaques[rt].ref.add(JSPromise(ctx, jsPromise, completer));
|
||||
jsFreeValue(ctx, jsPromise);
|
||||
|
Reference in New Issue
Block a user