dart format

This commit is contained in:
ekibun
2020-09-27 01:28:02 +08:00
parent ec7c7fd7cf
commit 097e118e5d
5 changed files with 71 additions and 33 deletions

View File

@@ -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);

View File

@@ -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();

View File

@@ -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);