diff --git a/1_hello_world/node_0.10/binding.gyp b/1_hello_world/node_0.10/binding.gyp deleted file mode 100644 index 39b171f3..00000000 --- a/1_hello_world/node_0.10/binding.gyp +++ /dev/null @@ -1,8 +0,0 @@ -{ - "targets": [ - { - "target_name": "hello", - "sources": [ "hello.cc" ] - } - ] -} diff --git a/1_hello_world/node_0.10/hello.cc b/1_hello_world/node_0.10/hello.cc deleted file mode 100644 index 815606b5..00000000 --- a/1_hello_world/node_0.10/hello.cc +++ /dev/null @@ -1,16 +0,0 @@ -#include -#include - -using namespace v8; - -Handle Method(const Arguments& args) { - HandleScope scope; - return scope.Close(String::New("world")); -} - -void Init(Handle exports) { - exports->Set(String::NewSymbol("hello"), - FunctionTemplate::New(Method)->GetFunction()); -} - -NODE_MODULE(hello, Init) diff --git a/1_hello_world/node_0.10/hello.js b/1_hello_world/node_0.10/hello.js deleted file mode 100644 index 45cff083..00000000 --- a/1_hello_world/node_0.10/hello.js +++ /dev/null @@ -1,3 +0,0 @@ -var addon = require('bindings')('hello'); - -console.log(addon.hello()); // 'world' \ No newline at end of file diff --git a/1_hello_world/node_0.10/package.json b/1_hello_world/node_0.10/package.json deleted file mode 100644 index be588dd4..00000000 --- a/1_hello_world/node_0.10/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "hello_world", - "version": "0.0.0", - "description": "Node.js Addons Example #1", - "main": "hello.js", - "private": true, - "scripts": { - "test": "node hello.js" - }, - "gypfile": true, - "dependencies": { - "bindings": "~1.2.1" - } -} diff --git a/1_hello_world/node_0.12/binding.gyp b/1_hello_world/node_0.12/binding.gyp deleted file mode 100644 index 39b171f3..00000000 --- a/1_hello_world/node_0.12/binding.gyp +++ /dev/null @@ -1,8 +0,0 @@ -{ - "targets": [ - { - "target_name": "hello", - "sources": [ "hello.cc" ] - } - ] -} diff --git a/1_hello_world/node_0.12/hello.cc b/1_hello_world/node_0.12/hello.cc deleted file mode 100644 index dbb22e77..00000000 --- a/1_hello_world/node_0.12/hello.cc +++ /dev/null @@ -1,18 +0,0 @@ -#include -#include - -using namespace v8; - -void Method(const v8::FunctionCallbackInfo& args) { - Isolate* isolate = Isolate::GetCurrent(); - HandleScope scope(isolate); - args.GetReturnValue().Set(String::NewFromUtf8(isolate, "world")); -} - -void Init(Handle exports) { - Isolate* isolate = Isolate::GetCurrent(); - exports->Set(String::NewFromUtf8(isolate, "hello"), - FunctionTemplate::New(isolate, Method)->GetFunction()); -} - -NODE_MODULE(hello, Init) diff --git a/1_hello_world/node_0.12/hello.js b/1_hello_world/node_0.12/hello.js deleted file mode 100644 index 45cff083..00000000 --- a/1_hello_world/node_0.12/hello.js +++ /dev/null @@ -1,3 +0,0 @@ -var addon = require('bindings')('hello'); - -console.log(addon.hello()); // 'world' \ No newline at end of file diff --git a/1_hello_world/node_0.12/package.json b/1_hello_world/node_0.12/package.json deleted file mode 100644 index be588dd4..00000000 --- a/1_hello_world/node_0.12/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "hello_world", - "version": "0.0.0", - "description": "Node.js Addons Example #1", - "main": "hello.js", - "private": true, - "scripts": { - "test": "node hello.js" - }, - "gypfile": true, - "dependencies": { - "bindings": "~1.2.1" - } -} diff --git a/2_function_arguments/node_0.10/addon.cc b/2_function_arguments/node_0.10/addon.cc deleted file mode 100644 index fd791cbb..00000000 --- a/2_function_arguments/node_0.10/addon.cc +++ /dev/null @@ -1,30 +0,0 @@ -#include - -using namespace v8; - -Handle Add(const Arguments& args) { - HandleScope scope; - - if (args.Length() < 2) { - ThrowException(Exception::TypeError(String::New("Wrong number of arguments"))); - return scope.Close(Undefined()); - } - - if (!args[0]->IsNumber() || !args[1]->IsNumber()) { - ThrowException(Exception::TypeError(String::New("Wrong arguments"))); - return scope.Close(Undefined()); - } - - double arg0 = args[0]->NumberValue(); - double arg1 = args[1]->NumberValue(); - Local num = Number::New(arg0 + arg1); - - return scope.Close(num); -} - -void Init(Handle exports) { - exports->Set(String::NewSymbol("add"), - FunctionTemplate::New(Add)->GetFunction()); -} - -NODE_MODULE(addon, Init) diff --git a/2_function_arguments/node_0.10/addon.js b/2_function_arguments/node_0.10/addon.js deleted file mode 100644 index 14fc6dd8..00000000 --- a/2_function_arguments/node_0.10/addon.js +++ /dev/null @@ -1,3 +0,0 @@ -var addon = require('bindings')('addon.node') - -console.log('This should be eight:', addon.add(3, 5)) \ No newline at end of file diff --git a/2_function_arguments/node_0.10/binding.gyp b/2_function_arguments/node_0.10/binding.gyp deleted file mode 100644 index 3c79ca84..00000000 --- a/2_function_arguments/node_0.10/binding.gyp +++ /dev/null @@ -1,8 +0,0 @@ -{ - "targets": [ - { - "target_name": "addon", - "sources": [ "addon.cc" ] - } - ] -} diff --git a/2_function_arguments/node_0.10/package.json b/2_function_arguments/node_0.10/package.json deleted file mode 100644 index 8d7c0769..00000000 --- a/2_function_arguments/node_0.10/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "function_arguments", - "version": "0.0.0", - "description": "Node.js Addons Example #2", - "main": "addon.js", - "private": true, - "dependencies": { - "bindings": "~1.2.1" - }, - "scripts": { - "test": "node addon.js" - }, - "gypfile": true -} \ No newline at end of file diff --git a/2_function_arguments/node_0.12/addon.cc b/2_function_arguments/node_0.12/addon.cc deleted file mode 100644 index 368598db..00000000 --- a/2_function_arguments/node_0.12/addon.cc +++ /dev/null @@ -1,31 +0,0 @@ -#include - -using namespace v8; - -void Add(const FunctionCallbackInfo& args) { - Isolate* isolate = Isolate::GetCurrent(); - HandleScope scope(isolate); - - if (args.Length() < 2) { - isolate->ThrowException(Exception::TypeError( - String::NewFromUtf8(isolate, "Wrong number of arguments"))); - return; - } - - if (!args[0]->IsNumber() || !args[1]->IsNumber()) { - isolate->ThrowException(Exception::TypeError( - String::NewFromUtf8(isolate, "Wrong arguments"))); - return; - } - - double value = args[0]->NumberValue() + args[1]->NumberValue(); - Local num = Number::New(isolate, value); - - args.GetReturnValue().Set(num); -} - -void Init(Handle exports) { - NODE_SET_METHOD(exports, "add", Add); -} - -NODE_MODULE(addon, Init) diff --git a/2_function_arguments/node_0.12/addon.js b/2_function_arguments/node_0.12/addon.js deleted file mode 100644 index 14fc6dd8..00000000 --- a/2_function_arguments/node_0.12/addon.js +++ /dev/null @@ -1,3 +0,0 @@ -var addon = require('bindings')('addon.node') - -console.log('This should be eight:', addon.add(3, 5)) \ No newline at end of file diff --git a/2_function_arguments/node_0.12/binding.gyp b/2_function_arguments/node_0.12/binding.gyp deleted file mode 100644 index 3c79ca84..00000000 --- a/2_function_arguments/node_0.12/binding.gyp +++ /dev/null @@ -1,8 +0,0 @@ -{ - "targets": [ - { - "target_name": "addon", - "sources": [ "addon.cc" ] - } - ] -} diff --git a/2_function_arguments/node_0.12/package.json b/2_function_arguments/node_0.12/package.json deleted file mode 100644 index 4ca65df5..00000000 --- a/2_function_arguments/node_0.12/package.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "function_arguments", - "version": "0.0.0", - "description": "Node.js Addons Example #2", - "main": "addon.js", - "private": true, - "dependencies": { - "bindings": "~1.2.1", - "nan": "~1.3.0" - }, - "scripts": { - "test": "node addon.js" - }, - "gypfile": true -} diff --git a/3_callbacks/node_0.10/addon.cc b/3_callbacks/node_0.10/addon.cc deleted file mode 100644 index 58e05793..00000000 --- a/3_callbacks/node_0.10/addon.cc +++ /dev/null @@ -1,21 +0,0 @@ -#include - -using namespace v8; - -Handle RunCallback(const Arguments& args) { - HandleScope scope; - - Local cb = Local::Cast(args[0]); - const unsigned argc = 1; - Local argv[argc] = { Local::New(String::New("hello world")) }; - cb->Call(Context::GetCurrent()->Global(), argc, argv); - - return scope.Close(Undefined()); -} - -void Init(Handle exports, Handle module) { - module->Set(String::NewSymbol("exports"), - FunctionTemplate::New(RunCallback)->GetFunction()); -} - -NODE_MODULE(addon, Init) diff --git a/3_callbacks/node_0.10/addon.js b/3_callbacks/node_0.10/addon.js deleted file mode 100644 index 1839c204..00000000 --- a/3_callbacks/node_0.10/addon.js +++ /dev/null @@ -1,5 +0,0 @@ -var addon = require('bindings')('addon'); - -addon(function(msg){ - console.log(msg); // 'hello world' -}); \ No newline at end of file diff --git a/3_callbacks/node_0.10/binding.gyp b/3_callbacks/node_0.10/binding.gyp deleted file mode 100644 index 3c79ca84..00000000 --- a/3_callbacks/node_0.10/binding.gyp +++ /dev/null @@ -1,8 +0,0 @@ -{ - "targets": [ - { - "target_name": "addon", - "sources": [ "addon.cc" ] - } - ] -} diff --git a/3_callbacks/node_0.10/package.json b/3_callbacks/node_0.10/package.json deleted file mode 100644 index 18250d5d..00000000 --- a/3_callbacks/node_0.10/package.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "callbacks", - "version": "0.0.0", - "description": "Node.js Addons Example #3", - "main": "addon.js", - "private": true, - "gypfile": true, - "dependencies": { - "bindings": "~1.2.1", - "nan": "~1.3.0" - } -} diff --git a/3_callbacks/node_0.12/addon.cc b/3_callbacks/node_0.12/addon.cc deleted file mode 100644 index bb714b80..00000000 --- a/3_callbacks/node_0.12/addon.cc +++ /dev/null @@ -1,19 +0,0 @@ -#include - -using namespace v8; - -void RunCallback(const FunctionCallbackInfo& args) { - Isolate* isolate = Isolate::GetCurrent(); - HandleScope scope(isolate); - - Local cb = Local::Cast(args[0]); - const unsigned argc = 1; - Local argv[argc] = { String::NewFromUtf8(isolate, "hello world") }; - cb->Call(isolate->GetCurrentContext()->Global(), argc, argv); -} - -void Init(Handle exports, Handle module) { - NODE_SET_METHOD(module, "exports", RunCallback); -} - -NODE_MODULE(addon, Init) diff --git a/3_callbacks/node_0.12/addon.js b/3_callbacks/node_0.12/addon.js deleted file mode 100644 index 1839c204..00000000 --- a/3_callbacks/node_0.12/addon.js +++ /dev/null @@ -1,5 +0,0 @@ -var addon = require('bindings')('addon'); - -addon(function(msg){ - console.log(msg); // 'hello world' -}); \ No newline at end of file diff --git a/3_callbacks/node_0.12/binding.gyp b/3_callbacks/node_0.12/binding.gyp deleted file mode 100644 index 3c79ca84..00000000 --- a/3_callbacks/node_0.12/binding.gyp +++ /dev/null @@ -1,8 +0,0 @@ -{ - "targets": [ - { - "target_name": "addon", - "sources": [ "addon.cc" ] - } - ] -} diff --git a/3_callbacks/node_0.12/package.json b/3_callbacks/node_0.12/package.json deleted file mode 100644 index 4de7ece7..00000000 --- a/3_callbacks/node_0.12/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "callbacks", - "version": "0.0.0", - "description": "Node.js Addons Example #3", - "main": "addon.js", - "private": true, - "gypfile": true, - "dependencies": { - "bindings": "~1.2.1" - } -} diff --git a/4_object_factory/node_0.10/addon.cc b/4_object_factory/node_0.10/addon.cc deleted file mode 100644 index 93bc44b1..00000000 --- a/4_object_factory/node_0.10/addon.cc +++ /dev/null @@ -1,19 +0,0 @@ -#include - -using namespace v8; - -Handle CreateObject(const Arguments& args) { - HandleScope scope; - - Local obj = Object::New(); - obj->Set(String::NewSymbol("msg"), args[0]->ToString()); - - return scope.Close(obj); -} - -void Init(Handle exports, Handle module) { - module->Set(String::NewSymbol("exports"), - FunctionTemplate::New(CreateObject)->GetFunction()); -} - -NODE_MODULE(addon, Init) diff --git a/4_object_factory/node_0.10/addon.js b/4_object_factory/node_0.10/addon.js deleted file mode 100644 index b6c4dafc..00000000 --- a/4_object_factory/node_0.10/addon.js +++ /dev/null @@ -1,5 +0,0 @@ -var addon = require('bindings')('addon'); - -var obj1 = addon('hello'); -var obj2 = addon('world'); -console.log(obj1.msg+' '+obj2.msg); // 'hello world' \ No newline at end of file diff --git a/4_object_factory/node_0.10/binding.gyp b/4_object_factory/node_0.10/binding.gyp deleted file mode 100644 index 3c79ca84..00000000 --- a/4_object_factory/node_0.10/binding.gyp +++ /dev/null @@ -1,8 +0,0 @@ -{ - "targets": [ - { - "target_name": "addon", - "sources": [ "addon.cc" ] - } - ] -} diff --git a/4_object_factory/node_0.10/package.json b/4_object_factory/node_0.10/package.json deleted file mode 100644 index ce8cfceb..00000000 --- a/4_object_factory/node_0.10/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "object_factory", - "version": "0.0.0", - "description": "Node.js Addons Example #4", - "main": "addon.js", - "private": true, - "gypfile": true, - "dependencies": { - "bindings": "~1.2.1" - } -} diff --git a/4_object_factory/node_0.12/addon.cc b/4_object_factory/node_0.12/addon.cc deleted file mode 100644 index 413b8ac6..00000000 --- a/4_object_factory/node_0.12/addon.cc +++ /dev/null @@ -1,20 +0,0 @@ -#include - -using namespace v8; - -void CreateObject(const FunctionCallbackInfo& args) { - Isolate* isolate = Isolate::GetCurrent(); - HandleScope scope(isolate); - - Local obj = Object::New(isolate); - obj->Set(String::NewFromUtf8(isolate, "msg"), args[0]->ToString()); - - args.GetReturnValue().Set(obj); -} - -void Init(Handle exports, Handle module) { - NODE_SET_METHOD(module, "exports", CreateObject); -} - -NODE_MODULE(addon, Init) - \ No newline at end of file diff --git a/4_object_factory/node_0.12/addon.js b/4_object_factory/node_0.12/addon.js deleted file mode 100644 index b6c4dafc..00000000 --- a/4_object_factory/node_0.12/addon.js +++ /dev/null @@ -1,5 +0,0 @@ -var addon = require('bindings')('addon'); - -var obj1 = addon('hello'); -var obj2 = addon('world'); -console.log(obj1.msg+' '+obj2.msg); // 'hello world' \ No newline at end of file diff --git a/4_object_factory/node_0.12/binding.gyp b/4_object_factory/node_0.12/binding.gyp deleted file mode 100644 index 3c79ca84..00000000 --- a/4_object_factory/node_0.12/binding.gyp +++ /dev/null @@ -1,8 +0,0 @@ -{ - "targets": [ - { - "target_name": "addon", - "sources": [ "addon.cc" ] - } - ] -} diff --git a/4_object_factory/node_0.12/package.json b/4_object_factory/node_0.12/package.json deleted file mode 100644 index ce8cfceb..00000000 --- a/4_object_factory/node_0.12/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "object_factory", - "version": "0.0.0", - "description": "Node.js Addons Example #4", - "main": "addon.js", - "private": true, - "gypfile": true, - "dependencies": { - "bindings": "~1.2.1" - } -} diff --git a/5_function_factory/node_0.10/addon.cc b/5_function_factory/node_0.10/addon.cc deleted file mode 100644 index 8bc40679..00000000 --- a/5_function_factory/node_0.10/addon.cc +++ /dev/null @@ -1,25 +0,0 @@ -#include - -using namespace v8; - -Handle MyFunction(const Arguments& args) { - HandleScope scope; - return scope.Close(String::New("hello world")); -} - -Handle CreateFunction(const Arguments& args) { - HandleScope scope; - - Local tpl = FunctionTemplate::New(MyFunction); - Local fn = tpl->GetFunction(); - fn->SetName(String::NewSymbol("theFunction")); // omit this to make it anonymous - - return scope.Close(fn); -} - -void Init(Handle exports, Handle module) { - module->Set(String::NewSymbol("exports"), - FunctionTemplate::New(CreateFunction)->GetFunction()); -} - -NODE_MODULE(addon, Init) diff --git a/5_function_factory/node_0.10/addon.js b/5_function_factory/node_0.10/addon.js deleted file mode 100644 index f5a7f96c..00000000 --- a/5_function_factory/node_0.10/addon.js +++ /dev/null @@ -1,4 +0,0 @@ -var addon = require('bindings')('addon'); - -var fn = addon(); -console.log(fn()); // 'hello world' \ No newline at end of file diff --git a/5_function_factory/node_0.10/binding.gyp b/5_function_factory/node_0.10/binding.gyp deleted file mode 100644 index 3c79ca84..00000000 --- a/5_function_factory/node_0.10/binding.gyp +++ /dev/null @@ -1,8 +0,0 @@ -{ - "targets": [ - { - "target_name": "addon", - "sources": [ "addon.cc" ] - } - ] -} diff --git a/5_function_factory/node_0.10/package.json b/5_function_factory/node_0.10/package.json deleted file mode 100644 index 22f06fb0..00000000 --- a/5_function_factory/node_0.10/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "function_factory", - "version": "0.0.0", - "description": "Node.js Addons Example #5", - "main": "addon.js", - "private": true, - "gypfile": true, - "dependencies": { - "bindings": "~1.2.1" - } -} diff --git a/5_function_factory/node_0.12/addon.cc b/5_function_factory/node_0.12/addon.cc deleted file mode 100644 index f4756022..00000000 --- a/5_function_factory/node_0.12/addon.cc +++ /dev/null @@ -1,28 +0,0 @@ -#include - -using namespace v8; - -void MyFunction(const FunctionCallbackInfo& args) { - Isolate* isolate = Isolate::GetCurrent(); - HandleScope scope(isolate); - args.GetReturnValue().Set(String::NewFromUtf8(isolate, "hello world")); -} - -void CreateFunction(const FunctionCallbackInfo& args) { - Isolate* isolate = Isolate::GetCurrent(); - HandleScope scope(isolate); - - Local tpl = FunctionTemplate::New(isolate, MyFunction); - Local fn = tpl->GetFunction(); - - // omit this to make it anonymous - fn->SetName(String::NewFromUtf8(isolate, "theFunction")); - - args.GetReturnValue().Set(fn); -} - -void Init(Handle exports, Handle module) { - NODE_SET_METHOD(module, "exports", CreateFunction); -} - -NODE_MODULE(addon, Init) diff --git a/5_function_factory/node_0.12/addon.js b/5_function_factory/node_0.12/addon.js deleted file mode 100644 index f5a7f96c..00000000 --- a/5_function_factory/node_0.12/addon.js +++ /dev/null @@ -1,4 +0,0 @@ -var addon = require('bindings')('addon'); - -var fn = addon(); -console.log(fn()); // 'hello world' \ No newline at end of file diff --git a/5_function_factory/node_0.12/binding.gyp b/5_function_factory/node_0.12/binding.gyp deleted file mode 100644 index 3c79ca84..00000000 --- a/5_function_factory/node_0.12/binding.gyp +++ /dev/null @@ -1,8 +0,0 @@ -{ - "targets": [ - { - "target_name": "addon", - "sources": [ "addon.cc" ] - } - ] -} diff --git a/5_function_factory/node_0.12/package.json b/5_function_factory/node_0.12/package.json deleted file mode 100644 index 22f06fb0..00000000 --- a/5_function_factory/node_0.12/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "function_factory", - "version": "0.0.0", - "description": "Node.js Addons Example #5", - "main": "addon.js", - "private": true, - "gypfile": true, - "dependencies": { - "bindings": "~1.2.1" - } -} diff --git a/6_object_wrap/node_0.10/addon.cc b/6_object_wrap/node_0.10/addon.cc deleted file mode 100644 index 7da0bf0a..00000000 --- a/6_object_wrap/node_0.10/addon.cc +++ /dev/null @@ -1,10 +0,0 @@ -#include -#include "myobject.h" - -using namespace v8; - -void InitAll(Handle exports) { - MyObject::Init(exports); -} - -NODE_MODULE(addon, InitAll) diff --git a/6_object_wrap/node_0.10/addon.js b/6_object_wrap/node_0.10/addon.js deleted file mode 100644 index d7dd6e0a..00000000 --- a/6_object_wrap/node_0.10/addon.js +++ /dev/null @@ -1,13 +0,0 @@ -var addon = require('bindings')('addon'); - -var obj = new addon.MyObject(10); -console.log( obj.plusOne() ); // 11 -console.log( obj.plusOne() ); // 12 -console.log( obj.plusOne() ); // 13 - -console.log( obj.multiply().value() ); // 13 -console.log( obj.multiply(10).value() ); // 130 - -var newobj = obj.multiply(-1); -console.log( newobj.value() ); // -13 -console.log( obj === newobj ); // false diff --git a/6_object_wrap/node_0.10/binding.gyp b/6_object_wrap/node_0.10/binding.gyp deleted file mode 100644 index b05e7abc..00000000 --- a/6_object_wrap/node_0.10/binding.gyp +++ /dev/null @@ -1,8 +0,0 @@ -{ - "targets": [ - { - "target_name": "addon", - "sources": [ "addon.cc", "myobject.cc" ] - } - ] -} diff --git a/6_object_wrap/node_0.10/myobject.cc b/6_object_wrap/node_0.10/myobject.cc deleted file mode 100644 index da52ea4a..00000000 --- a/6_object_wrap/node_0.10/myobject.cc +++ /dev/null @@ -1,62 +0,0 @@ -#include -#include "myobject.h" - -using namespace v8; - -Persistent MyObject::constructor; - -MyObject::MyObject() {}; -MyObject::~MyObject() {}; - -void MyObject::Init(Handle target) { - // Prepare constructor template - Local tpl = FunctionTemplate::New(New); - tpl->SetClassName(String::NewSymbol("MyObject")); - tpl->InstanceTemplate()->SetInternalFieldCount(1); - // Prototype - NODE_SET_PROTOTYPE_METHOD(tpl, "value", GetValue); - NODE_SET_PROTOTYPE_METHOD(tpl, "plusOne", PlusOne); - NODE_SET_PROTOTYPE_METHOD(tpl, "multiply", Multiply); - - constructor = Persistent::New(tpl->GetFunction()); - target->Set(String::NewSymbol("MyObject"), constructor); -} - -Handle MyObject::New(const Arguments& args) { - HandleScope scope; - - MyObject* obj = new MyObject(); - obj->value_ = args[0]->IsUndefined() ? 0 : args[0]->NumberValue(); - obj->Wrap(args.This()); - - return args.This(); -} - -Handle MyObject::GetValue(const Arguments& args) { - HandleScope scope; - - MyObject* obj = ObjectWrap::Unwrap(args.Holder()); - - return scope.Close(Number::New(obj->value_)); -} - -Handle MyObject::PlusOne(const Arguments& args) { - HandleScope scope; - - MyObject* obj = ObjectWrap::Unwrap(args.This()); - obj->value_ += 1; - - return scope.Close(Number::New(obj->value_)); -} - -Handle MyObject::Multiply(const Arguments& args) { - HandleScope scope; - - MyObject* obj = ObjectWrap::Unwrap(args.This()); - double multiple = args[0]->IsUndefined() ? 1 : args[0]->NumberValue(); - - const int argc = 1; - Local argv[argc] = { Number::New(obj->value_ * multiple) }; - - return scope.Close(constructor->NewInstance(argc, argv)); -} diff --git a/6_object_wrap/node_0.10/myobject.h b/6_object_wrap/node_0.10/myobject.h deleted file mode 100644 index a779a961..00000000 --- a/6_object_wrap/node_0.10/myobject.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef MYOBJECT_H -#define MYOBJECT_H - -#include - -class MyObject : public node::ObjectWrap { - public: - static void Init(v8::Handle target); - - private: - MyObject(); - ~MyObject(); - - static v8::Handle New(const v8::Arguments& args); - static v8::Handle GetValue(const v8::Arguments& args); - static v8::Handle PlusOne(const v8::Arguments& args); - static v8::Handle Multiply(const v8::Arguments& args); - static v8::Persistent constructor; - double value_; -}; - -#endif diff --git a/6_object_wrap/node_0.10/package.json b/6_object_wrap/node_0.10/package.json deleted file mode 100644 index 162c5861..00000000 --- a/6_object_wrap/node_0.10/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "object_wrap", - "version": "0.0.0", - "description": "Node.js Addons Example #6", - "main": "addon.js", - "private": true, - "gypfile": true, - "dependencies": { - "bindings": "~1.2.1" - } -} diff --git a/6_object_wrap/node_0.12/addon.cc b/6_object_wrap/node_0.12/addon.cc deleted file mode 100644 index 7da0bf0a..00000000 --- a/6_object_wrap/node_0.12/addon.cc +++ /dev/null @@ -1,10 +0,0 @@ -#include -#include "myobject.h" - -using namespace v8; - -void InitAll(Handle exports) { - MyObject::Init(exports); -} - -NODE_MODULE(addon, InitAll) diff --git a/6_object_wrap/node_0.12/addon.js b/6_object_wrap/node_0.12/addon.js deleted file mode 100644 index bcd13086..00000000 --- a/6_object_wrap/node_0.12/addon.js +++ /dev/null @@ -1,6 +0,0 @@ -var addon = require('bindings')('addon'); - -var obj = new addon.MyObject(10); -console.log( obj.plusOne() ); // 11 -console.log( obj.plusOne() ); // 12 -console.log( obj.plusOne() ); // 13 \ No newline at end of file diff --git a/6_object_wrap/node_0.12/binding.gyp b/6_object_wrap/node_0.12/binding.gyp deleted file mode 100644 index b05e7abc..00000000 --- a/6_object_wrap/node_0.12/binding.gyp +++ /dev/null @@ -1,8 +0,0 @@ -{ - "targets": [ - { - "target_name": "addon", - "sources": [ "addon.cc", "myobject.cc" ] - } - ] -} diff --git a/6_object_wrap/node_0.12/myobject.cc b/6_object_wrap/node_0.12/myobject.cc deleted file mode 100644 index e11fd90a..00000000 --- a/6_object_wrap/node_0.12/myobject.cc +++ /dev/null @@ -1,77 +0,0 @@ -#include "myobject.h" - -using namespace v8; - -Persistent MyObject::constructor; - -MyObject::MyObject(double value) : value_(value) { -} - -MyObject::~MyObject() { -} - -void MyObject::Init(Handle exports) { - Isolate* isolate = Isolate::GetCurrent(); - - // Prepare constructor template - Local tpl = FunctionTemplate::New(isolate, New); - tpl->SetClassName(String::NewFromUtf8(isolate, "MyObject")); - tpl->InstanceTemplate()->SetInternalFieldCount(1); - - // Prototype - NODE_SET_PROTOTYPE_METHOD(tpl, "plusOne", PlusOne); - - constructor.Reset(isolate, tpl->GetFunction()); - exports->Set(String::NewFromUtf8(isolate, "MyObject"), - tpl->GetFunction()); -} - -void MyObject::New(const FunctionCallbackInfo& args) { - Isolate* isolate = Isolate::GetCurrent(); - HandleScope scope(isolate); - - if (args.IsConstructCall()) { - // Invoked as constructor: `new MyObject(...)` - double value = args[0]->IsUndefined() ? 0 : args[0]->NumberValue(); - MyObject* obj = new MyObject(value); - obj->Wrap(args.This()); - args.GetReturnValue().Set(args.This()); - } else { - // Invoked as plain function `MyObject(...)`, turn into construct call. - const int argc = 1; - Local argv[argc] = { args[0] }; - Local cons = Local::New(isolate, constructor); - args.GetReturnValue().Set(cons->NewInstance(argc, argv)); - } -} - -void MyObject::GetValue(const FunctionCallbackInfo& args) { - Isolate* isolate = Isolate::GetCurrent(); - HandleScope scope(isolate); - MyObject* obj = ObjectWrap::Unwrap(args.Holder()); - args.GetReturnValue().Set(Number::New(isolate, obj->value_)); -} - -void MyObject::PlusOne(const FunctionCallbackInfo& args) { - Isolate* isolate = Isolate::GetCurrent(); - HandleScope scope(isolate); - - MyObject* obj = ObjectWrap::Unwrap(args.Holder()); - obj->value_ += 1; - - args.GetReturnValue().Set(Number::New(isolate, obj->value_)); -} - -void MyObject::Multiply(const FunctionCallbackInfo& args) { - Isolate* isolate = Isolate::GetCurrent(); - HandleScope scope(isolate); - - MyObject* obj = ObjectWrap::Unwrap(args.Holder()); - double multiple = args[0]->IsUndefined() ? 1 : args[0]->NumberValue(); - - const int argc = 1; - Local argv[argc] = { Number::New(isolate, obj->value_ * multiple) }; - - Local cons = Local::New(isolate, constructor); - args.GetReturnValue().Set(cons->NewInstance(argc, argv)); -} diff --git a/6_object_wrap/node_0.12/myobject.h b/6_object_wrap/node_0.12/myobject.h deleted file mode 100644 index 196e0e08..00000000 --- a/6_object_wrap/node_0.12/myobject.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef MYOBJECT_H -#define MYOBJECT_H - -#include -#include - -class MyObject : public node::ObjectWrap { - public: - static void Init(v8::Handle exports); - - private: - explicit MyObject(double value = 0); - ~MyObject(); - - static void New(const v8::FunctionCallbackInfo& args); - static void GetValue(const v8::FunctionCallbackInfo& args); - static void PlusOne(const v8::FunctionCallbackInfo& args); - static void Multiply(const v8::FunctionCallbackInfo& args); - static v8::Persistent constructor; - double value_; -}; - -#endif diff --git a/6_object_wrap/node_0.12/package.json b/6_object_wrap/node_0.12/package.json deleted file mode 100644 index 162c5861..00000000 --- a/6_object_wrap/node_0.12/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "object_wrap", - "version": "0.0.0", - "description": "Node.js Addons Example #6", - "main": "addon.js", - "private": true, - "gypfile": true, - "dependencies": { - "bindings": "~1.2.1" - } -} diff --git a/7_factory_wrap/node_0.10/addon.cc b/7_factory_wrap/node_0.10/addon.cc deleted file mode 100644 index 5e1f10c0..00000000 --- a/7_factory_wrap/node_0.10/addon.cc +++ /dev/null @@ -1,18 +0,0 @@ -#include -#include "myobject.h" - -using namespace v8; - -Handle CreateObject(const Arguments& args) { - HandleScope scope; - return scope.Close(MyObject::NewInstance(args)); -} - -void InitAll(Handle exports, Handle module) { - MyObject::Init(); - - module->Set(String::NewSymbol("exports"), - FunctionTemplate::New(CreateObject)->GetFunction()); -} - -NODE_MODULE(addon, InitAll) diff --git a/7_factory_wrap/node_0.10/addon.js b/7_factory_wrap/node_0.10/addon.js deleted file mode 100644 index 13f7c9d5..00000000 --- a/7_factory_wrap/node_0.10/addon.js +++ /dev/null @@ -1,11 +0,0 @@ -var createObject = require('bindings')('addon'); - -var obj = createObject(10); -console.log( obj.plusOne() ); // 11 -console.log( obj.plusOne() ); // 12 -console.log( obj.plusOne() ); // 13 - -var obj2 = createObject(20); -console.log( obj2.plusOne() ); // 21 -console.log( obj2.plusOne() ); // 22 -console.log( obj2.plusOne() ); // 23 diff --git a/7_factory_wrap/node_0.10/binding.gyp b/7_factory_wrap/node_0.10/binding.gyp deleted file mode 100644 index b05e7abc..00000000 --- a/7_factory_wrap/node_0.10/binding.gyp +++ /dev/null @@ -1,8 +0,0 @@ -{ - "targets": [ - { - "target_name": "addon", - "sources": [ "addon.cc", "myobject.cc" ] - } - ] -} diff --git a/7_factory_wrap/node_0.10/myobject.cc b/7_factory_wrap/node_0.10/myobject.cc deleted file mode 100644 index 3cb007c6..00000000 --- a/7_factory_wrap/node_0.10/myobject.cc +++ /dev/null @@ -1,50 +0,0 @@ -#include -#include "myobject.h" - -using namespace v8; - -MyObject::MyObject() {}; -MyObject::~MyObject() {}; - -Persistent MyObject::constructor; - -void MyObject::Init() { - // Prepare constructor template - Local tpl = FunctionTemplate::New(New); - tpl->SetClassName(String::NewSymbol("MyObject")); - tpl->InstanceTemplate()->SetInternalFieldCount(1); - // Prototype - tpl->PrototypeTemplate()->Set(String::NewSymbol("plusOne"), - FunctionTemplate::New(PlusOne)->GetFunction()); - - constructor = Persistent::New(tpl->GetFunction()); -} - -Handle MyObject::New(const Arguments& args) { - HandleScope scope; - - MyObject* obj = new MyObject(); - obj->counter_ = args[0]->IsUndefined() ? 0 : args[0]->NumberValue(); - obj->Wrap(args.This()); - - return args.This(); -} - -Handle MyObject::NewInstance(const Arguments& args) { - HandleScope scope; - - const unsigned argc = 1; - Handle argv[argc] = { args[0] }; - Local instance = constructor->NewInstance(argc, argv); - - return scope.Close(instance); -} - -Handle MyObject::PlusOne(const Arguments& args) { - HandleScope scope; - - MyObject* obj = ObjectWrap::Unwrap(args.This()); - obj->counter_ += 1; - - return scope.Close(Number::New(obj->counter_)); -} diff --git a/7_factory_wrap/node_0.10/myobject.h b/7_factory_wrap/node_0.10/myobject.h deleted file mode 100644 index 99e7357f..00000000 --- a/7_factory_wrap/node_0.10/myobject.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef MYOBJECT_H -#define MYOBJECT_H - -#include - -class MyObject : public node::ObjectWrap { - public: - static void Init(); - static v8::Handle NewInstance(const v8::Arguments& args); - - private: - MyObject(); - ~MyObject(); - - static v8::Persistent constructor; - static v8::Handle New(const v8::Arguments& args); - static v8::Handle PlusOne(const v8::Arguments& args); - double counter_; -}; - -#endif diff --git a/7_factory_wrap/node_0.10/package.json b/7_factory_wrap/node_0.10/package.json deleted file mode 100644 index 70fac90e..00000000 --- a/7_factory_wrap/node_0.10/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "factory_wrap", - "version": "0.0.0", - "description": "Node.js Addons Example #7", - "main": "addon.js", - "private": true, - "gypfile": true, - "dependencies": { - "bindings": "~1.2.1" - } -} diff --git a/7_factory_wrap/node_0.12/addon.cc b/7_factory_wrap/node_0.12/addon.cc deleted file mode 100644 index 263e497c..00000000 --- a/7_factory_wrap/node_0.12/addon.cc +++ /dev/null @@ -1,18 +0,0 @@ -#include -#include "myobject.h" - -using namespace v8; - -void CreateObject(const FunctionCallbackInfo& args) { - Isolate* isolate = Isolate::GetCurrent(); - HandleScope scope(isolate); - MyObject::NewInstance(args); -} - -void InitAll(Handle exports, Handle module) { - MyObject::Init(); - - NODE_SET_METHOD(module, "exports", CreateObject); -} - -NODE_MODULE(addon, InitAll) diff --git a/7_factory_wrap/node_0.12/addon.js b/7_factory_wrap/node_0.12/addon.js deleted file mode 100644 index 13f7c9d5..00000000 --- a/7_factory_wrap/node_0.12/addon.js +++ /dev/null @@ -1,11 +0,0 @@ -var createObject = require('bindings')('addon'); - -var obj = createObject(10); -console.log( obj.plusOne() ); // 11 -console.log( obj.plusOne() ); // 12 -console.log( obj.plusOne() ); // 13 - -var obj2 = createObject(20); -console.log( obj2.plusOne() ); // 21 -console.log( obj2.plusOne() ); // 22 -console.log( obj2.plusOne() ); // 23 diff --git a/7_factory_wrap/node_0.12/binding.gyp b/7_factory_wrap/node_0.12/binding.gyp deleted file mode 100644 index b05e7abc..00000000 --- a/7_factory_wrap/node_0.12/binding.gyp +++ /dev/null @@ -1,8 +0,0 @@ -{ - "targets": [ - { - "target_name": "addon", - "sources": [ "addon.cc", "myobject.cc" ] - } - ] -} diff --git a/7_factory_wrap/node_0.12/myobject.cc b/7_factory_wrap/node_0.12/myobject.cc deleted file mode 100644 index 6b5cce9a..00000000 --- a/7_factory_wrap/node_0.12/myobject.cc +++ /dev/null @@ -1,66 +0,0 @@ -#include -#include "myobject.h" - -using namespace v8; - -Persistent MyObject::constructor; - -MyObject::MyObject(double value) : value_(value) { -} - -MyObject::~MyObject() { -} - -void MyObject::Init() { - Isolate* isolate = Isolate::GetCurrent(); - // Prepare constructor template - Local tpl = FunctionTemplate::New(isolate, New); - tpl->SetClassName(String::NewFromUtf8(isolate, "MyObject")); - tpl->InstanceTemplate()->SetInternalFieldCount(1); - - // Prototype - NODE_SET_PROTOTYPE_METHOD(tpl, "plusOne", PlusOne); - - constructor.Reset(isolate, tpl->GetFunction()); -} - -void MyObject::New(const FunctionCallbackInfo& args) { - Isolate* isolate = Isolate::GetCurrent(); - HandleScope scope(isolate); - - if (args.IsConstructCall()) { - // Invoked as constructor: `new MyObject(...)` - double value = args[0]->IsUndefined() ? 0 : args[0]->NumberValue(); - MyObject* obj = new MyObject(value); - obj->Wrap(args.This()); - args.GetReturnValue().Set(args.This()); - } else { - // Invoked as plain function `MyObject(...)`, turn into construct call. - const int argc = 1; - Local argv[argc] = { args[0] }; - Local cons = Local::New(isolate, constructor); - args.GetReturnValue().Set(cons->NewInstance(argc, argv)); - } -} - -void MyObject::NewInstance(const FunctionCallbackInfo& args) { - Isolate* isolate = Isolate::GetCurrent(); - HandleScope scope(isolate); - - const unsigned argc = 1; - Handle argv[argc] = { args[0] }; - Local cons = Local::New(isolate, constructor); - Local instance = cons->NewInstance(argc, argv); - - args.GetReturnValue().Set(instance); -} - -void MyObject::PlusOne(const FunctionCallbackInfo& args) { - Isolate* isolate = Isolate::GetCurrent(); - HandleScope scope(isolate); - - MyObject* obj = ObjectWrap::Unwrap(args.Holder()); - obj->value_ += 1; - - args.GetReturnValue().Set(Number::New(isolate, obj->value_)); -} diff --git a/7_factory_wrap/node_0.12/myobject.h b/7_factory_wrap/node_0.12/myobject.h deleted file mode 100644 index b22df1e2..00000000 --- a/7_factory_wrap/node_0.12/myobject.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef MYOBJECT_H -#define MYOBJECT_H - -#include -#include - -class MyObject : public node::ObjectWrap { - public: - static void Init(); - static void NewInstance(const v8::FunctionCallbackInfo& args); - - private: - explicit MyObject(double value = 0); - ~MyObject(); - - static void New(const v8::FunctionCallbackInfo& args); - static void PlusOne(const v8::FunctionCallbackInfo& args); - static v8::Persistent constructor; - double value_; -}; - -#endif diff --git a/7_factory_wrap/node_0.12/package.json b/7_factory_wrap/node_0.12/package.json deleted file mode 100644 index 70fac90e..00000000 --- a/7_factory_wrap/node_0.12/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "factory_wrap", - "version": "0.0.0", - "description": "Node.js Addons Example #7", - "main": "addon.js", - "private": true, - "gypfile": true, - "dependencies": { - "bindings": "~1.2.1" - } -} diff --git a/8_passing_wrapped/node_0.10/addon.cc b/8_passing_wrapped/node_0.10/addon.cc deleted file mode 100644 index 4b97cdd1..00000000 --- a/8_passing_wrapped/node_0.10/addon.cc +++ /dev/null @@ -1,33 +0,0 @@ -#include -#include "myobject.h" - -using namespace v8; - -Handle CreateObject(const Arguments& args) { - HandleScope scope; - return scope.Close(MyObject::NewInstance(args)); -} - -Handle Add(const Arguments& args) { - HandleScope scope; - - MyObject* obj1 = node::ObjectWrap::Unwrap( - args[0]->ToObject()); - MyObject* obj2 = node::ObjectWrap::Unwrap( - args[1]->ToObject()); - - double sum = obj1->Val() + obj2->Val(); - return scope.Close(Number::New(sum)); -} - -void InitAll(Handle exports) { - MyObject::Init(); - - exports->Set(String::NewSymbol("createObject"), - FunctionTemplate::New(CreateObject)->GetFunction()); - - exports->Set(String::NewSymbol("add"), - FunctionTemplate::New(Add)->GetFunction()); -} - -NODE_MODULE(addon, InitAll) diff --git a/8_passing_wrapped/node_0.10/addon.js b/8_passing_wrapped/node_0.10/addon.js deleted file mode 100644 index 7667d1ff..00000000 --- a/8_passing_wrapped/node_0.10/addon.js +++ /dev/null @@ -1,7 +0,0 @@ -var addon = require('bindings')('addon'); - -var obj1 = addon.createObject(10); -var obj2 = addon.createObject(20); -var result = addon.add(obj1, obj2); - -console.log(result); // 30 diff --git a/8_passing_wrapped/node_0.10/binding.gyp b/8_passing_wrapped/node_0.10/binding.gyp deleted file mode 100644 index b05e7abc..00000000 --- a/8_passing_wrapped/node_0.10/binding.gyp +++ /dev/null @@ -1,8 +0,0 @@ -{ - "targets": [ - { - "target_name": "addon", - "sources": [ "addon.cc", "myobject.cc" ] - } - ] -} diff --git a/8_passing_wrapped/node_0.10/myobject.cc b/8_passing_wrapped/node_0.10/myobject.cc deleted file mode 100644 index 1c518aeb..00000000 --- a/8_passing_wrapped/node_0.10/myobject.cc +++ /dev/null @@ -1,38 +0,0 @@ -#include -#include "myobject.h" - -using namespace v8; - -MyObject::MyObject() {}; -MyObject::~MyObject() {}; - -Persistent MyObject::constructor; - -void MyObject::Init() { - // Prepare constructor template - Local tpl = FunctionTemplate::New(New); - tpl->SetClassName(String::NewSymbol("MyObject")); - tpl->InstanceTemplate()->SetInternalFieldCount(1); - - constructor = Persistent::New(tpl->GetFunction()); -} - -Handle MyObject::New(const Arguments& args) { - HandleScope scope; - - MyObject* obj = new MyObject(); - obj->val_ = args[0]->IsUndefined() ? 0 : args[0]->NumberValue(); - obj->Wrap(args.This()); - - return args.This(); -} - -Handle MyObject::NewInstance(const Arguments& args) { - HandleScope scope; - - const unsigned argc = 1; - Handle argv[argc] = { args[0] }; - Local instance = constructor->NewInstance(argc, argv); - - return scope.Close(instance); -} diff --git a/8_passing_wrapped/node_0.10/myobject.h b/8_passing_wrapped/node_0.10/myobject.h deleted file mode 100644 index 317bd6ff..00000000 --- a/8_passing_wrapped/node_0.10/myobject.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef MYOBJECT_H -#define MYOBJECT_H - -#include - -class MyObject : public node::ObjectWrap { - public: - static void Init(); - static v8::Handle NewInstance(const v8::Arguments& args); - double Val() const { return val_; } - - private: - MyObject(); - ~MyObject(); - - static v8::Persistent constructor; - static v8::Handle New(const v8::Arguments& args); - double val_; -}; - -#endif diff --git a/8_passing_wrapped/node_0.10/package.json b/8_passing_wrapped/node_0.10/package.json deleted file mode 100644 index 5c446be0..00000000 --- a/8_passing_wrapped/node_0.10/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "passing_wrapped", - "version": "0.0.0", - "description": "Node.js Addons Example #8", - "main": "addon.js", - "private": true, - "gypfile": true, - "dependencies": { - "bindings": "~1.2.1" - } -} diff --git a/8_passing_wrapped/node_0.12/addon.cc b/8_passing_wrapped/node_0.12/addon.cc deleted file mode 100644 index f7b02738..00000000 --- a/8_passing_wrapped/node_0.12/addon.cc +++ /dev/null @@ -1,33 +0,0 @@ -#include -#include -#include "myobject.h" - -using namespace v8; - -void CreateObject(const FunctionCallbackInfo& args) { - Isolate* isolate = Isolate::GetCurrent(); - HandleScope scope(isolate); - MyObject::NewInstance(args); -} - -void Add(const FunctionCallbackInfo& args) { - Isolate* isolate = Isolate::GetCurrent(); - HandleScope scope(isolate); - - MyObject* obj1 = node::ObjectWrap::Unwrap( - args[0]->ToObject()); - MyObject* obj2 = node::ObjectWrap::Unwrap( - args[1]->ToObject()); - - double sum = obj1->value() + obj2->value(); - args.GetReturnValue().Set(Number::New(isolate, sum)); -} - -void InitAll(Handle exports) { - MyObject::Init(); - - NODE_SET_METHOD(exports, "createObject", CreateObject); - NODE_SET_METHOD(exports, "add", Add); -} - -NODE_MODULE(addon, InitAll) diff --git a/8_passing_wrapped/node_0.12/addon.js b/8_passing_wrapped/node_0.12/addon.js deleted file mode 100644 index 7667d1ff..00000000 --- a/8_passing_wrapped/node_0.12/addon.js +++ /dev/null @@ -1,7 +0,0 @@ -var addon = require('bindings')('addon'); - -var obj1 = addon.createObject(10); -var obj2 = addon.createObject(20); -var result = addon.add(obj1, obj2); - -console.log(result); // 30 diff --git a/8_passing_wrapped/node_0.12/binding.gyp b/8_passing_wrapped/node_0.12/binding.gyp deleted file mode 100644 index b05e7abc..00000000 --- a/8_passing_wrapped/node_0.12/binding.gyp +++ /dev/null @@ -1,8 +0,0 @@ -{ - "targets": [ - { - "target_name": "addon", - "sources": [ "addon.cc", "myobject.cc" ] - } - ] -} diff --git a/8_passing_wrapped/node_0.12/myobject.cc b/8_passing_wrapped/node_0.12/myobject.cc deleted file mode 100644 index 4d347d2d..00000000 --- a/8_passing_wrapped/node_0.12/myobject.cc +++ /dev/null @@ -1,54 +0,0 @@ -#include -#include "myobject.h" - -using namespace v8; - -Persistent MyObject::constructor; - -MyObject::MyObject(double value) : value_(value) { -} - -MyObject::~MyObject() { -} - -void MyObject::Init() { - Isolate* isolate = Isolate::GetCurrent(); - - // Prepare constructor template - Local tpl = FunctionTemplate::New(isolate, New); - tpl->SetClassName(String::NewFromUtf8(isolate, "MyObject")); - tpl->InstanceTemplate()->SetInternalFieldCount(1); - - constructor.Reset(isolate, tpl->GetFunction()); -} - -void MyObject::New(const FunctionCallbackInfo& args) { - Isolate* isolate = Isolate::GetCurrent(); - HandleScope scope(isolate); - - if (args.IsConstructCall()) { - // Invoked as constructor: `new MyObject(...)` - double value = args[0]->IsUndefined() ? 0 : args[0]->NumberValue(); - MyObject* obj = new MyObject(value); - obj->Wrap(args.This()); - args.GetReturnValue().Set(args.This()); - } else { - // Invoked as plain function `MyObject(...)`, turn into construct call. - const int argc = 1; - Local argv[argc] = { args[0] }; - Local cons = Local::New(isolate, constructor); - args.GetReturnValue().Set(cons->NewInstance(argc, argv)); - } -} - -void MyObject::NewInstance(const FunctionCallbackInfo& args) { - Isolate* isolate = Isolate::GetCurrent(); - HandleScope scope(isolate); - - const unsigned argc = 1; - Handle argv[argc] = { args[0] }; - Local cons = Local::New(isolate, constructor); - Local instance = cons->NewInstance(argc, argv); - - args.GetReturnValue().Set(instance); -} diff --git a/8_passing_wrapped/node_0.12/myobject.h b/8_passing_wrapped/node_0.12/myobject.h deleted file mode 100644 index 4c32ef75..00000000 --- a/8_passing_wrapped/node_0.12/myobject.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef MYOBJECT_H -#define MYOBJECT_H - -#include -#include - -class MyObject : public node::ObjectWrap { - public: - static void Init(); - static void NewInstance(const v8::FunctionCallbackInfo& args); - inline double value() const { return value_; } - - private: - explicit MyObject(double value = 0); - ~MyObject(); - - static void New(const v8::FunctionCallbackInfo& args); - static v8::Persistent constructor; - double value_; -}; - -#endif diff --git a/8_passing_wrapped/node_0.12/package.json b/8_passing_wrapped/node_0.12/package.json deleted file mode 100644 index 5c446be0..00000000 --- a/8_passing_wrapped/node_0.12/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "passing_wrapped", - "version": "0.0.0", - "description": "Node.js Addons Example #8", - "main": "addon.js", - "private": true, - "gypfile": true, - "dependencies": { - "bindings": "~1.2.1" - } -}