123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- %insert(init) %{
- #include <assert.h>
- SWIGRUNTIME void
- SWIG_V8_SetModule(void *, swig_module_info *swig_module) {
- v8::Local<v8::Object> global_obj = SWIGV8_CURRENT_CONTEXT()->Global();
- v8::Local<v8::External> mod = SWIGV8_EXTERNAL_NEW(swig_module);
- assert(!mod.IsEmpty());
- global_obj->SetHiddenValue(SWIGV8_STRING_NEW("swig_module_info_data"), mod);
- }
- SWIGRUNTIME swig_module_info *
- SWIG_V8_GetModule(void *) {
- v8::Local<v8::Object> global_obj = SWIGV8_CURRENT_CONTEXT()->Global();
- v8::Local<v8::Value> moduleinfo = global_obj->GetHiddenValue(SWIGV8_STRING_NEW("swig_module_info_data"));
- if (moduleinfo.IsEmpty())
- {
- // It's not yet loaded
- return 0;
- }
- v8::Local<v8::External> moduleinfo_extern = v8::Local<v8::External>::Cast(moduleinfo);
- if (moduleinfo_extern.IsEmpty())
- {
- // Something's not right
- return 0;
- }
- void *ptr = moduleinfo_extern->Value();
- assert(ptr);
- swig_module_info *retptr = static_cast<swig_module_info *>(ptr);
- assert(retptr);
- return retptr;
- }
- #define SWIG_GetModule(clientdata) SWIG_V8_GetModule(clientdata)
- #define SWIG_SetModule(clientdata, pointer) SWIG_V8_SetModule(clientdata, pointer)
- %}
- %insert(init) "swiginit.swg"
- // Open the initializer function definition here
- %fragment ("js_initializer_define", "templates") %{
- #define SWIGV8_INIT $jsname_initialize
- %}
- %insert(init) %{
- // Note: 'extern "C"'' disables name mangling which makes it easier to load the symbol manually
- // TODO: is it ok to do that?
- extern "C"
- #if (NODE_MODULE_VERSION < 0x000C)
- void SWIGV8_INIT (v8::Handle<v8::Object> exports)
- #else
- void SWIGV8_INIT (v8::Handle<v8::Object> exports, v8::Handle<v8::Object> /*module*/)
- #endif
- {
- SWIG_InitializeModule(static_cast<void *>(&exports));
- SWIGV8_HANDLESCOPE();
-
- v8::Handle<v8::Object> exports_obj = exports;
- %}
- /* -----------------------------------------------------------------------------
- * js_initializer: template for the module initializer function
- * - $jsname: module name
- * - $jsv8nspaces: part with code creating namespace objects
- * - $jsv8classtemplates: part with code creating class templates
- * - $jsv8wrappers: part with code that registers wrapper functions
- * - $jsv8inheritance: part with inherit statements
- * - $jsv8classinstances: part with code creating class objects
- * - $jsv8staticwrappers: part with code adding static functions to class objects
- * - $jsv8registerclasses: part with code that registers class objects in namespaces
- * - $jsv8registernspaces: part with code that registers namespaces in parent namespaces
- * ----------------------------------------------------------------------------- */
- %fragment("js_initializer", "templates")
- %{
- // a class template for creating proxies of undefined types
- SWIGV8_SET_CLASS_TEMPL(SWIGV8_SWIGTYPE_Proxy_class_templ, SWIGV8_CreateClassTemplate("SwigProxy"));
- /* create objects for namespaces */
- $jsv8nspaces
- /* create class templates */
- $jsv8classtemplates
- /* register wrapper functions */
- $jsv8wrappers
- /* setup inheritances */
- $jsv8inheritance
- /* class instances */
- $jsv8classinstances
- /* add static class functions and variables */
- $jsv8staticwrappers
- /* register classes */
- $jsv8registerclasses
- /* create and register namespace objects */
- $jsv8registernspaces
- }
- #if defined(BUILDING_NODE_EXTENSION)
- NODE_MODULE($jsname, $jsname_initialize)
- #endif
- %}
|