|
1 | 1 | #include "myobject.h" |
2 | 2 |
|
3 | | -using namespace v8; |
4 | | - |
5 | | -Persistent<Function> MyObject::constructor; |
| 3 | +Nan::Persistent<v8::Function> MyObject::constructor; |
6 | 4 |
|
7 | 5 | MyObject::MyObject(double value) : value_(value) { |
8 | 6 | } |
9 | 7 |
|
10 | 8 | MyObject::~MyObject() { |
11 | 9 | } |
12 | 10 |
|
13 | | -void MyObject::Init(Handle<Object> exports) { |
14 | | - NanScope(); |
| 11 | +void MyObject::Init(v8::Local<v8::Object> exports) { |
| 12 | + Nan::HandleScope scope; |
15 | 13 |
|
16 | 14 | // Prepare constructor template |
17 | | - Local<FunctionTemplate> tpl = NanNew<FunctionTemplate>(New); |
18 | | - tpl->SetClassName(NanNew("MyObject")); |
| 15 | + v8::Local<v8::FunctionTemplate> tpl = Nan::New<v8::FunctionTemplate>(New); |
| 16 | + tpl->SetClassName(Nan::New("MyObject").ToLocalChecked()); |
19 | 17 | tpl->InstanceTemplate()->SetInternalFieldCount(1); |
20 | 18 |
|
21 | 19 | // Prototype |
22 | | - NODE_SET_PROTOTYPE_METHOD(tpl, "value", GetValue); |
23 | | - NODE_SET_PROTOTYPE_METHOD(tpl, "plusOne", PlusOne); |
24 | | - NODE_SET_PROTOTYPE_METHOD(tpl, "multiply", Multiply); |
| 20 | + Nan::SetPrototypeMethod(tpl, "value", GetValue); |
| 21 | + Nan::SetPrototypeMethod(tpl, "plusOne", PlusOne); |
| 22 | + Nan::SetPrototypeMethod(tpl, "multiply", Multiply); |
25 | 23 |
|
26 | | - NanAssignPersistent(constructor, tpl->GetFunction()); |
27 | | - exports->Set(NanNew("MyObject"), tpl->GetFunction()); |
| 24 | + constructor.Reset(tpl->GetFunction()); |
| 25 | + exports->Set(Nan::New("MyObject").ToLocalChecked(), tpl->GetFunction()); |
28 | 26 | } |
29 | 27 |
|
30 | | -NAN_METHOD(MyObject::New) { |
31 | | - NanScope(); |
32 | | - |
33 | | - if (args.IsConstructCall()) { |
| 28 | +void MyObject::New(const Nan::FunctionCallbackInfo<v8::Value>& info) { |
| 29 | + if (info.IsConstructCall()) { |
34 | 30 | // Invoked as constructor: `new MyObject(...)` |
35 | | - double value = args[0]->IsUndefined() ? 0 : args[0]->NumberValue(); |
| 31 | + double value = info[0]->IsUndefined() ? 0 : info[0]->NumberValue(); |
36 | 32 | MyObject* obj = new MyObject(value); |
37 | | - obj->Wrap(args.This()); |
38 | | - NanReturnValue(args.This()); |
| 33 | + obj->Wrap(info.This()); |
| 34 | + info.GetReturnValue().Set(info.This()); |
39 | 35 | } else { |
40 | 36 | // Invoked as plain function `MyObject(...)`, turn into construct call. |
41 | 37 | const int argc = 1; |
42 | | - Local<Value> argv[argc] = { args[0] }; |
43 | | - Local<Function> cons = NanNew<Function>(constructor); |
44 | | - NanReturnValue(cons->NewInstance(argc, argv)); |
| 38 | + v8::Local<v8::Value> argv[argc] = { info[0] }; |
| 39 | + v8::Local<v8::Function> cons = Nan::New<v8::Function>(constructor); |
| 40 | + info.GetReturnValue().Set(cons->NewInstance(argc, argv)); |
45 | 41 | } |
46 | 42 | } |
47 | 43 |
|
48 | | -NAN_METHOD(MyObject::GetValue) { |
49 | | - NanScope(); |
50 | | - |
51 | | - MyObject* obj = ObjectWrap::Unwrap<MyObject>(args.Holder()); |
52 | | - |
53 | | - NanReturnValue(NanNew(obj->value_)); |
| 44 | +void MyObject::GetValue(const Nan::FunctionCallbackInfo<v8::Value>& info) { |
| 45 | + MyObject* obj = ObjectWrap::Unwrap<MyObject>(info.Holder()); |
| 46 | + info.GetReturnValue().Set(Nan::New(obj->value_)); |
54 | 47 | } |
55 | 48 |
|
56 | | -NAN_METHOD(MyObject::PlusOne) { |
57 | | - NanScope(); |
58 | | - |
59 | | - MyObject* obj = ObjectWrap::Unwrap<MyObject>(args.Holder()); |
| 49 | +void MyObject::PlusOne(const Nan::FunctionCallbackInfo<v8::Value>& info) { |
| 50 | + MyObject* obj = ObjectWrap::Unwrap<MyObject>(info.Holder()); |
60 | 51 | obj->value_ += 1; |
61 | | - |
62 | | - NanReturnValue(NanNew(obj->value_)); |
| 52 | + info.GetReturnValue().Set(Nan::New(obj->value_)); |
63 | 53 | } |
64 | 54 |
|
65 | | -NAN_METHOD(MyObject::Multiply) { |
66 | | - NanScope(); |
67 | | - |
68 | | - MyObject* obj = ObjectWrap::Unwrap<MyObject>(args.Holder()); |
69 | | - double multiple = args[0]->IsUndefined() ? 1 : args[0]->NumberValue(); |
| 55 | +void MyObject::Multiply(const Nan::FunctionCallbackInfo<v8::Value>& info) { |
| 56 | + MyObject* obj = ObjectWrap::Unwrap<MyObject>(info.Holder()); |
| 57 | + double multiple = info[0]->IsUndefined() ? 1 : info[0]->NumberValue(); |
70 | 58 |
|
71 | | - Local<Function> cons = NanNew<Function>(constructor); |
| 59 | + v8::Local<v8::Function> cons = Nan::New<v8::Function>(constructor); |
72 | 60 |
|
73 | 61 | const int argc = 1; |
74 | | - Local<Value> argv[argc] = { NanNew(obj->value_ * multiple) }; |
| 62 | + v8::Local<v8::Value> argv[argc] = { Nan::New(obj->value_ * multiple) }; |
75 | 63 |
|
76 | | - NanReturnValue(cons->NewInstance(argc, argv)); |
| 64 | + info.GetReturnValue().Set(cons->NewInstance(argc, argv)); |
77 | 65 | } |
0 commit comments