fix msvc build

This commit is contained in:
ekibun
2020-09-24 13:43:35 +08:00
parent 71bb456140
commit fc27d0f2db
2 changed files with 51 additions and 53 deletions

101
cxx/ffi.h
View File

@@ -9,104 +9,103 @@
extern "C" extern "C"
{ {
typedef void *JSChannel(JSContext *ctx, const char *method, void *argv); typedef void *JSChannel(JSContext *ctx, const char *method, void *argv);
JSValue *jsThrowInternalError(JSContext *ctx, char *message); DLLEXPORT JSValue *jsThrowInternalError(JSContext *ctx, char *message);
JSValue *jsEXCEPTION(); DLLEXPORT JSValue *jsEXCEPTION();
JSValue *jsUNDEFINED(); DLLEXPORT JSValue *jsUNDEFINED();
JSValue *jsNULL(); DLLEXPORT JSValue *jsNULL();
JSRuntime *jsNewRuntime(JSChannel channel); DLLEXPORT JSRuntime *jsNewRuntime(JSChannel channel);
void jsFreeRuntime(JSRuntime *rt); DLLEXPORT void jsFreeRuntime(JSRuntime *rt);
JSContext *jsNewContext(JSRuntime *rt); DLLEXPORT JSContext *jsNewContext(JSRuntime *rt);
void jsFreeContext(JSContext *ctx); DLLEXPORT void jsFreeContext(JSContext *ctx);
JSRuntime *jsGetRuntime(JSContext *ctx); DLLEXPORT JSRuntime *jsGetRuntime(JSContext *ctx);
JSValue *jsEval(JSContext *ctx, const char *input, size_t input_len, const char *filename, int32_t eval_flags); DLLEXPORT JSValue *jsEval(JSContext *ctx, const char *input, size_t input_len, const char *filename, int32_t eval_flags);
int32_t jsValueGetTag(JSValue *val); DLLEXPORT int32_t jsValueGetTag(JSValue *val);
void *jsValueGetPtr(JSValue *val); DLLEXPORT void *jsValueGetPtr(JSValue *val);
int32_t jsTagIsFloat64(int32_t tag); DLLEXPORT int32_t jsTagIsFloat64(int32_t tag);
JSValue *jsNewBool(JSContext *ctx, int32_t val); DLLEXPORT JSValue *jsNewBool(JSContext *ctx, int32_t val);
JSValue *jsNewInt64(JSContext *ctx, int64_t val); DLLEXPORT JSValue *jsNewInt64(JSContext *ctx, int64_t val);
JSValue *jsNewFloat64(JSContext *ctx, double val); DLLEXPORT JSValue *jsNewFloat64(JSContext *ctx, double val);
JSValue *jsNewString(JSContext *ctx, const char *str); DLLEXPORT JSValue *jsNewString(JSContext *ctx, const char *str);
JSValue *jsNewArrayBufferCopy(JSContext *ctx, const uint8_t *buf, size_t len); DLLEXPORT JSValue *jsNewArrayBufferCopy(JSContext *ctx, const uint8_t *buf, size_t len);
JSValue *jsNewArray(JSContext *ctx); DLLEXPORT JSValue *jsNewArray(JSContext *ctx);
JSValue *jsNewObject(JSContext *ctx); DLLEXPORT JSValue *jsNewObject(JSContext *ctx);
void jsFreeValue(JSContext *ctx, JSValue *v); DLLEXPORT void jsFreeValue(JSContext *ctx, JSValue *v);
void jsFreeValueRT(JSRuntime *rt, JSValue *v); DLLEXPORT void jsFreeValueRT(JSRuntime *rt, JSValue *v);
JSValue *jsDupValue(JSContext *ctx, JSValueConst *v); DLLEXPORT JSValue *jsDupValue(JSContext *ctx, JSValueConst *v);
JSValue *jsDupValueRT(JSRuntime *rt, JSValue *v); DLLEXPORT JSValue *jsDupValueRT(JSRuntime *rt, JSValue *v);
int32_t jsToBool(JSContext *ctx, JSValueConst *val); DLLEXPORT int32_t jsToBool(JSContext *ctx, JSValueConst *val);
int64_t jsToInt64(JSContext *ctx, JSValueConst *val); DLLEXPORT int64_t jsToInt64(JSContext *ctx, JSValueConst *val);
double jsToFloat64(JSContext *ctx, JSValueConst *val); DLLEXPORT double jsToFloat64(JSContext *ctx, JSValueConst *val);
const char *jsToCString(JSContext *ctx, JSValueConst *val); DLLEXPORT const char *jsToCString(JSContext *ctx, JSValueConst *val);
void jsFreeCString(JSContext *ctx, const char *ptr); DLLEXPORT void jsFreeCString(JSContext *ctx, const char *ptr);
uint8_t *jsGetArrayBuffer(JSContext *ctx, size_t *psize, JSValueConst *obj); DLLEXPORT uint8_t *jsGetArrayBuffer(JSContext *ctx, size_t *psize, JSValueConst *obj);
int32_t jsIsFunction(JSContext *ctx, JSValueConst *val); DLLEXPORT int32_t jsIsFunction(JSContext *ctx, JSValueConst *val);
int32_t jsIsArray(JSContext *ctx, JSValueConst *val); DLLEXPORT int32_t jsIsArray(JSContext *ctx, JSValueConst *val);
void deleteJSValue(JSValueConst *val); DLLEXPORT void deleteJSValue(JSValueConst *val);
JSValue *jsGetProperty(JSContext *ctx, JSValueConst *this_obj, DLLEXPORT JSValue *jsGetProperty(JSContext *ctx, JSValueConst *this_obj,
JSAtom prop); JSAtom prop);
int32_t jsDefinePropertyValue(JSContext *ctx, JSValueConst *this_obj, DLLEXPORT int32_t jsDefinePropertyValue(JSContext *ctx, JSValueConst *this_obj,
JSAtom prop, JSValue *val, int32_t flags); JSAtom prop, JSValue *val, int32_t flags);
void jsFreeAtom(JSContext *ctx, JSAtom v); DLLEXPORT void jsFreeAtom(JSContext *ctx, JSAtom v);
JSAtom jsValueToAtom(JSContext *ctx, JSValueConst *val); DLLEXPORT JSAtom jsValueToAtom(JSContext *ctx, JSValueConst *val);
JSValue *jsAtomToValue(JSContext *ctx, JSAtom val); DLLEXPORT JSValue *jsAtomToValue(JSContext *ctx, JSAtom val);
int32_t jsGetOwnPropertyNames(JSContext *ctx, JSPropertyEnum **ptab, DLLEXPORT int32_t jsGetOwnPropertyNames(JSContext *ctx, JSPropertyEnum **ptab,
uint32_t *plen, JSValueConst *obj, int32_t flags); uint32_t *plen, JSValueConst *obj, int32_t flags);
JSAtom jsPropertyEnumGetAtom(JSPropertyEnum *ptab, int32_t i); DLLEXPORT JSAtom jsPropertyEnumGetAtom(JSPropertyEnum *ptab, int32_t i);
uint32_t sizeOfJSValue(); DLLEXPORT uint32_t sizeOfJSValue();
void setJSValueList(JSValue *list, uint32_t i, JSValue *val); DLLEXPORT void setJSValueList(JSValue *list, uint32_t i, JSValue *val);
JSValue *jsCall(JSContext *ctx, JSValueConst *func_obj, JSValueConst *this_obj, DLLEXPORT JSValue *jsCall(JSContext *ctx, JSValueConst *func_obj, JSValueConst *this_obj,
int32_t argc, JSValueConst *argv); int32_t argc, JSValueConst *argv);
int32_t jsIsException(JSValueConst *val); DLLEXPORT int32_t jsIsException(JSValueConst *val);
JSValue *jsGetException(JSContext *ctx); DLLEXPORT JSValue *jsGetException(JSContext *ctx);
int32_t jsExecutePendingJob(JSRuntime *rt); DLLEXPORT int32_t jsExecutePendingJob(JSRuntime *rt);
JSValue *jsNewPromiseCapability(JSContext *ctx, JSValue *resolving_funcs);
DLLEXPORT JSValue *jsNewPromiseCapability(JSContext *ctx, JSValue *resolving_funcs);
} }

View File

@@ -3,14 +3,13 @@
* @Author: ekibun * @Author: ekibun
* @Date: 2020-09-19 22:07:47 * @Date: 2020-09-19 22:07:47
* @LastEditors: ekibun * @LastEditors: ekibun
* @LastEditTime: 2020-09-22 00:27:54 * @LastEditTime: 2020-09-24 13:38:08
*/ */
import 'dart:async'; import 'dart:async';
import 'dart:ffi'; import 'dart:ffi';
import 'dart:typed_data'; import 'dart:typed_data';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:flutter/cupertino.dart';
import 'ffi.dart'; import 'ffi.dart';