summaryrefslogtreecommitdiff
path: root/Lib/javascript/jsc/javascriptinit.swg
blob: b0138b39a46cd2c0f47acd1c75af0c1e26981ed4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
%insert(init) %{
SWIGRUNTIME void
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(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(clientdata)
#define SWIG_SetModule(clientdata, pointer)       SWIG_JSC_SetModule(clientdata, pointer)
#define SWIG_INIT_CLIENT_DATA_TYPE                JSGlobalContextRef
%}

%insert(init) "swiginit.swg"

%fragment ("js_initializer_define", "templates") %{
#define SWIGJSC_INIT $jsname_initialize
%}

// Open the initializer function
%insert(init)
%{

#ifdef __cplusplus
extern "C" {
#endif

bool SWIGJSC_INIT (JSGlobalContextRef context, JSObjectRef *exports) {
    SWIG_InitializeModule(context);
%}

/* -----------------------------------------------------------------------------
 * js_initializer:  template for the module initializer function
 *   - $jsname:                   module name
 *   - $jscreatenamespaces:       part with code for creating namespace objects
 *   - $jscreateclasses:          part with code for creating classes
 *   - $jsregisternamespaces:     part with code for registration of namespaces
 * ----------------------------------------------------------------------------- */
%fragment ("js_initializer", "templates") %{
    /* Initialize the base swig type object */
    _SwigObject_objectDefinition.staticFunctions = _SwigObject_functions;
    _SwigObject_objectDefinition.staticValues = _SwigObject_values;
    _SwigObject_classRef = JSClassCreate(&_SwigObject_objectDefinition);

    /* Initialize the PackedData class */
    _SwigPackedData_objectDefinition.staticFunctions = _SwigPackedData_functions;
    _SwigPackedData_objectDefinition.staticValues = _SwigPackedData_values;
    _SwigPackedData_objectDefinition.finalize = _wrap_SwigPackedData_delete;
    _SwigPackedData_classRef = JSClassCreate(&_SwigPackedData_objectDefinition);

    /* Create objects for namespaces */
    $jscreatenamespaces

    /* Register classes */
    $jsregisterclasses

    /* Register namespaces */
    $jsregisternamespaces

    *exports = exports_object;

    return true;
}
#ifdef __cplusplus
}
#endif
%}