Rearrange generation of init block to have custom init code within the initializer body.
This commit is contained in:
parent
80ce36c445
commit
1f07195812
5 changed files with 137 additions and 125 deletions
|
|
@ -22,7 +22,7 @@ SWIG_V8_GetModule(void *) {
|
|||
}
|
||||
|
||||
v8::Local<v8::External> moduleinfo_extern = v8::Local<v8::External>::Cast(moduleinfo);
|
||||
|
||||
|
||||
if (moduleinfo_extern.IsEmpty())
|
||||
{
|
||||
// Something's not right
|
||||
|
|
@ -41,6 +41,78 @@ SWIG_V8_GetModule(void *) {
|
|||
|
||||
%}
|
||||
|
||||
%insert(init) %{/************ BEGIN: "swiginit.swg" *******************/ %}
|
||||
%insert(init) "swiginit.swg"
|
||||
%insert(init) %{/************ END: "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));
|
||||
|
||||
v8::HandleScope scope;
|
||||
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
|
||||
#if (SWIG_V8_VERSION < 0x031900)
|
||||
SWIGV8_SWIGTYPE_Proxy_class_templ = v8::Persistent<v8::FunctionTemplate>::New(SWIGV8_CreateClassTemplate("SwigProxy"));
|
||||
#else
|
||||
SWIGV8_SWIGTYPE_Proxy_class_templ.Reset(v8::Isolate::GetCurrent(), SWIGV8_CreateClassTemplate("SwigProxy"));
|
||||
#endif
|
||||
|
||||
/* 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
|
||||
%}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue