diff options
Diffstat (limited to 'Lib/javascript/jsc/javascriptinit.swg')
-rw-r--r-- | Lib/javascript/jsc/javascriptinit.swg | 57 |
1 files changed, 51 insertions, 6 deletions
diff --git a/Lib/javascript/jsc/javascriptinit.swg b/Lib/javascript/jsc/javascriptinit.swg index a32ba336c..b0138b39a 100644 --- a/Lib/javascript/jsc/javascriptinit.swg +++ b/Lib/javascript/jsc/javascriptinit.swg @@ -1,14 +1,59 @@ %insert(init) %{ SWIGRUNTIME void -SWIG_JSC_SetModule(swig_module_info *swig_module) {} +SWIG_JSC_SetModule(JSGlobalContextRef context, swig_module_info *swig_module) { + JSObjectRef globalObject; + JSStringRef moduleName; + JSClassDefinition classDef; + JSClassRef classRef; + JSObjectRef object; + if(context == 0){ + return; + } + + globalObject = JSContextGetGlobalObject(context); + moduleName = JSStringCreateWithUTF8CString("swig_module_info_data"); + + classDef = kJSClassDefinitionEmpty; + classRef = JSClassCreate(&classDef); + + object = JSObjectMake(context, classRef, NULL); + JSObjectSetPrivate(object, (void*)swig_module); + + JSObjectSetProperty(context, globalObject, moduleName, object, kJSPropertyAttributeNone, NULL); + + JSClassRelease(classRef); + JSStringRelease(moduleName); +} SWIGRUNTIME swig_module_info * -SWIG_JSC_GetModule(void) { - return 0; +SWIG_JSC_GetModule(JSGlobalContextRef context) { + JSObjectRef globalObject; + JSStringRef moduleName; + JSValueRef value; + JSObjectRef object; + + if(context == 0){ + return 0; + } + + globalObject = JSContextGetGlobalObject(context); + moduleName = JSStringCreateWithUTF8CString("swig_module_info_data"); + + if(JSObjectHasProperty(context, globalObject, moduleName) == false) { + JSStringRelease(moduleName); + return 0; + } + + value = JSObjectGetProperty(context, globalObject, moduleName, NULL); + object = JSValueToObject(context, value, NULL); + JSStringRelease(moduleName); + + return (swig_module_info*)JSObjectGetPrivate(object); } -#define SWIG_GetModule(clientdata) SWIG_JSC_GetModule() -#define SWIG_SetModule(clientdata, pointer) SWIG_JSC_SetModule(pointer) +#define SWIG_GetModule(clientdata) SWIG_JSC_GetModule(clientdata) +#define SWIG_SetModule(clientdata, pointer) SWIG_JSC_SetModule(clientdata, pointer) +#define SWIG_INIT_CLIENT_DATA_TYPE JSGlobalContextRef %} %insert(init) "swiginit.swg" @@ -26,7 +71,7 @@ extern "C" { #endif bool SWIGJSC_INIT (JSGlobalContextRef context, JSObjectRef *exports) { - SWIG_InitializeModule(0); + SWIG_InitializeModule(context); %} /* ----------------------------------------------------------------------------- |