/
niceSOFT
/
swig
Обзор
Документация
Войти
/
niceSOFT
/
swig
Код
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Examples/javascript/native/example.i
62 строки
2 KB
Momtchil Momtchev
Javascript Node-API support added
28 июн 2023, 09:24
28 июн 2023, 09:24
ceed547
Код
Авторство
О чём код?
/* File : example.i */ %module example // placeholder() used to help SWIG generate "SWIG_From_int" call %{ int placeholder(); %} int placeholder() { return 0; } // actual demo code %wrapper %{ #if defined(SWIG_V8_VERSION) /* Engine: Node || V8 */ static SwigV8ReturnValue JavaScript_do_work(const SwigV8Arguments &args) { SWIGV8_HANDLESCOPE(); const int MY_MAGIC_NUMBER = 5; SWIGV8_VALUE jsresult = SWIG_From_int(static_cast< int >(MY_MAGIC_NUMBER)); if (args.Length() != 0) SWIG_exception_fail(SWIG_ERROR, "Illegal number of arguments."); SWIGV8_RETURN(jsresult); fail: SWIGV8_RETURN(SWIGV8_UNDEFINED()); } #elif defined(NAPI_VERSION) /* Engine: NAPI */ static Napi::Value JavaScript_do_work(const Napi::CallbackInfo &args) { Napi::Env env = args.Env(); Napi::EscapableHandleScope scope(env); const int MY_MAGIC_NUMBER = 5; Napi::Value jsresult = SWIG_From_int(env, static_cast< int >(MY_MAGIC_NUMBER)); if (args.Length() != 0) SWIG_exception_fail(SWIG_ERROR, "Illegal number of arguments."); return scope.Escape(jsresult); fail: return Napi::Value(); } #else /* Engine: JavaScriptCore */ static JSValueRef JavaScript_do_work(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argc, const JSValueRef argv[], JSValueRef* exception) { const int MY_MAGIC_NUMBER = 5; JSValueRef jsresult = SWIG_From_int SWIG_JSC_FROM_CALL_ARGS( static_cast< int >(MY_MAGIC_NUMBER)); if (argc != 0) SWIG_exception_fail(SWIG_ERROR, "Illegal number of arguments."); return jsresult; fail: return JSValueMakeUndefined(context); } #endif %} %native(magicNumber) void JavaScript_do_work();