@@ -17,9 +17,9 @@ using namespace v8;
1717using namespace node ;
1818
1919{%if cType%}
20- {{ cppClassName }}::{{ cppClassName }}({{ cType }} *raw) {
20+ {{ cppClassName }}::{{ cppClassName }}({{ cType }} *raw, bool selfFreeing ) {
2121 this ->raw = raw;
22- this ->selfFreeing = true ;
22+ this ->selfFreeing = selfFreeing ;
2323}
2424
2525{{ cppClassName }}::~{{ cppClassName }}() {
@@ -65,16 +65,17 @@ NAN_METHOD({{ cppClassName }}::New) {
6565 if (args.Length () == 0 || !args[0 ]->IsExternal ()) {
6666 return NanThrowError (" {{ cType }} is required." );
6767 }
68- {{ cppClassName }}* object = new {{ cppClassName }}(static_cast <{{ cType }} *>(Handle<External>::Cast (args[0 ])->Value ()));
68+
69+ {{ cppClassName }}* object = new {{ cppClassName }}(static_cast <{{ cType }} *>(Handle<External>::Cast (args[0 ])->Value ()), args[1 ]->BooleanValue ());
6970 object->Wrap (args.This ());
7071
7172 NanReturnValue (args.This ());
7273}
7374
74- Handle<Value> {{ cppClassName }}::New(void *raw) {
75+ Handle<Value> {{ cppClassName }}::New(void *raw, bool selfFreeing ) {
7576 NanEscapableScope ();
76- Handle<Value> argv[1 ] = { NanNew<External>((void *)raw) };
77- return NanEscapeScope (NanNew<Function>({{ cppClassName }}::constructor_template)->NewInstance (1 , argv));
77+ Handle<Value> argv[2 ] = { NanNew<External>((void *)raw), Boolean::New (selfFreeing ) };
78+ return NanEscapeScope (NanNew<Function>({{ cppClassName }}::constructor_template)->NewInstance (2 , argv));
7879}
7980
8081{{ cType }} *{{ cppClassName }}::GetValue() {
0 commit comments