/* 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();