@@ -8,17 +8,17 @@ MyObject::MyObject(double value)
88
99MyObject::~MyObject () { napi_delete_reference (env_, wrapper_); }
1010
11- void MyObject::Destructor (void * nativeObject, void * /* finalize_hint*/ ) {
11+ void MyObject::Destructor (napi_env env, void * nativeObject, void * /* finalize_hint*/ ) {
1212 reinterpret_cast <MyObject*>(nativeObject)->~MyObject ();
1313}
1414
1515#define DECLARE_NAPI_METHOD (name, func ) \
16- { name, func, 0 , 0 , 0 , napi_default, 0 }
16+ { name, 0 , func, 0 , 0 , 0 , napi_default, 0 }
1717
1818void MyObject::Init (napi_env env, napi_value exports) {
1919 napi_status status;
2020 napi_property_descriptor properties[] = {
21- { " value" , 0 , GetValue, SetValue, 0 , napi_default, 0 },
21+ { " value" , 0 , 0 , GetValue, SetValue, 0 , napi_default, 0 },
2222 DECLARE_NAPI_METHOD (" plusOne" , PlusOne),
2323 DECLARE_NAPI_METHOD (" multiply" , Multiply),
2424 };
@@ -35,7 +35,7 @@ void MyObject::Init(napi_env env, napi_value exports) {
3535 assert (status == napi_ok);
3636}
3737
38- void MyObject::New (napi_env env, napi_callback_info info) {
38+ napi_value MyObject::New (napi_env env, napi_callback_info info) {
3939 napi_status status;
4040
4141 bool is_constructor;
@@ -44,8 +44,10 @@ void MyObject::New(napi_env env, napi_callback_info info) {
4444
4545 if (is_constructor) {
4646 // Invoked as constructor: `new MyObject(...)`
47+ size_t argc = 1 ;
4748 napi_value args[1 ];
48- status = napi_get_cb_args (env, info, args, 1 );
49+ napi_value jsthis;
50+ status = napi_get_cb_info (env, info, &argc, args, &jsthis, nullptr );
4951 assert (status == napi_ok);
5052
5153 double value = 0 ;
@@ -61,10 +63,6 @@ void MyObject::New(napi_env env, napi_callback_info info) {
6163
6264 MyObject* obj = new MyObject (value);
6365
64- napi_value jsthis;
65- status = napi_get_cb_this (env, info, &jsthis);
66- assert (status == napi_ok);
67-
6866 obj->env_ = env;
6967 status = napi_wrap (env,
7068 jsthis,
@@ -74,12 +72,12 @@ void MyObject::New(napi_env env, napi_callback_info info) {
7472 &obj->wrapper_ );
7573 assert (status == napi_ok);
7674
77- status = napi_set_return_value (env, info, jsthis);
78- assert (status == napi_ok);
75+ return jsthis;
7976 } else {
8077 // Invoked as plain function `MyObject(...)`, turn into construct call.
78+ size_t argc_ = 1 ;
8179 napi_value args[1 ];
82- status = napi_get_cb_args (env, info, args, 1 );
80+ status = napi_get_cb_info (env, info, &argc_, args, nullptr , nullptr );
8381 assert (status == napi_ok);
8482
8583 const size_t argc = 1 ;
@@ -93,16 +91,15 @@ void MyObject::New(napi_env env, napi_callback_info info) {
9391 status = napi_new_instance (env, cons, argc, argv, &instance);
9492 assert (status == napi_ok);
9593
96- status = napi_set_return_value (env, info, instance);
97- assert (status == napi_ok);
94+ return instance;
9895 }
9996}
10097
101- void MyObject::GetValue (napi_env env, napi_callback_info info) {
98+ napi_value MyObject::GetValue (napi_env env, napi_callback_info info) {
10299 napi_status status;
103100
104101 napi_value jsthis;
105- status = napi_get_cb_this (env, info, &jsthis);
102+ status = napi_get_cb_info (env, info, nullptr , nullptr , &jsthis, nullptr );
106103 assert (status == napi_ok);
107104
108105 MyObject* obj;
@@ -113,34 +110,34 @@ void MyObject::GetValue(napi_env env, napi_callback_info info) {
113110 status = napi_create_number (env, obj->value_ , &num);
114111 assert (status == napi_ok);
115112
116- status = napi_set_return_value (env, info, num);
117- assert (status == napi_ok);
113+ return num;
118114}
119115
120- void MyObject::SetValue (napi_env env, napi_callback_info info) {
116+ napi_value MyObject::SetValue (napi_env env, napi_callback_info info) {
121117 napi_status status;
122118
119+ size_t argc = 1 ;
123120 napi_value value;
124- status = napi_get_cb_args (env, info, &value, 1 );
125- assert (status == napi_ok);
126-
127121 napi_value jsthis;
128- status = napi_get_cb_this (env, info, &jsthis);
122+ status = napi_get_cb_info (env, info, &argc, &value, & jsthis, nullptr );
129123 assert (status == napi_ok);
130124
125+
131126 MyObject* obj;
132127 status = napi_unwrap (env, jsthis, reinterpret_cast <void **>(&obj));
133128 assert (status == napi_ok);
134129
135130 status = napi_get_value_double (env, value, &obj->value_ );
136131 assert (status == napi_ok);
132+
133+ return nullptr ;
137134}
138135
139- void MyObject::PlusOne (napi_env env, napi_callback_info info) {
136+ napi_value MyObject::PlusOne (napi_env env, napi_callback_info info) {
140137 napi_status status;
141138
142139 napi_value jsthis;
143- status = napi_get_cb_this (env, info, &jsthis);
140+ status = napi_get_cb_info (env, info, nullptr , nullptr , &jsthis, nullptr );
144141 assert (status == napi_ok);
145142
146143 MyObject* obj;
@@ -153,15 +150,16 @@ void MyObject::PlusOne(napi_env env, napi_callback_info info) {
153150 status = napi_create_number (env, obj->value_ , &num);
154151 assert (status == napi_ok);
155152
156- status = napi_set_return_value (env, info, num);
157- assert (status == napi_ok);
153+ return num;
158154}
159155
160- void MyObject::Multiply (napi_env env, napi_callback_info info) {
156+ napi_value MyObject::Multiply (napi_env env, napi_callback_info info) {
161157 napi_status status;
162158
159+ size_t argc = 1 ;
163160 napi_value args[1 ];
164- status = napi_get_cb_args (env, info, args, 1 );
161+ napi_value jsthis;
162+ status = napi_get_cb_info (env, info, &argc, args, &jsthis, nullptr );
165163 assert (status == napi_ok);
166164
167165 napi_valuetype valuetype;
@@ -174,10 +172,6 @@ void MyObject::Multiply(napi_env env, napi_callback_info info) {
174172 assert (status == napi_ok);
175173 }
176174
177- napi_value jsthis;
178- status = napi_get_cb_this (env, info, &jsthis);
179- assert (status == napi_ok);
180-
181175 MyObject* obj;
182176 status = napi_unwrap (env, jsthis, reinterpret_cast <void **>(&obj));
183177 assert (status == napi_ok);
@@ -195,6 +189,5 @@ void MyObject::Multiply(napi_env env, napi_callback_info info) {
195189 status = napi_new_instance (env, cons, kArgCount , argv, &instance);
196190 assert (status == napi_ok);
197191
198- status = napi_set_return_value (env, info, instance);
199- assert (status == napi_ok);
192+ return instance;
200193}
0 commit comments