Skip to content

Commit ec3d311

Browse files
author
Ian Halliday
committed
Fix up abi addon examples to match recent NAPI changes
- hardening opaque types revealed two mistakes: - napi_create_string was used where napi_property_name should have - MyObject::Init definition in ex6 used napi_value instead of napi_env - napi_wrap takes an optional fifth argument now - napi_get_cb_object was renamed to napi_get_cb_this
1 parent 6dfb345 commit ec3d311

File tree

4 files changed

+32
-32
lines changed

4 files changed

+32
-32
lines changed

5_function_factory/abi/addon.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ void napi_create_function(napi_env napi_env, napi_func_cb_info info) {
88
napi_value fn = napi_create_function(napi_env, MyFunction);
99

1010
// omit this to make it anonymous
11-
napi_set_function_name(napi_env, fn, napi_create_string(napi_env, "theFunction"));
11+
napi_set_function_name(napi_env, fn, napi_property_name(napi_env, "theFunction"));
1212

1313
napi_set_return_value(napi_env, info, fn);
1414
}

6_object_wrap/abi/myobject.cc

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,31 +12,31 @@ void MyObject::Destructor(void* nativeObject) {
1212
((MyObject*) nativeObject)->~MyObject();
1313
}
1414

15-
void MyObject::Init(napi_value napi_env, napi_value exports) {
16-
napi_value function = napi_create_constructor_for_wrap(napi_env, New);
17-
napi_set_function_name(napi_env, function, napi_create_string(napi_env, "MyObject"));
15+
void MyObject::Init(napi_env env, napi_value exports) {
16+
napi_value function = napi_create_constructor_for_wrap(env, New);
17+
napi_set_function_name(env, function, napi_property_name(env, "MyObject"));
1818
napi_value prototype =
19-
napi_get_property(napi_env, function, napi_property_name(napi_env, "prototype"));
19+
napi_get_property(env, function, napi_property_name(env, "prototype"));
2020

21-
napi_value napi_valueFunction = napi_create_function(napi_env, GetValue);
22-
napi_set_function_name(napi_env, napi_valueFunction, napi_create_string(napi_env, "napi_value"));
23-
napi_set_property(napi_env, prototype, napi_property_name(napi_env, "napi_value"),
21+
napi_value napi_valueFunction = napi_create_function(env, GetValue);
22+
napi_set_function_name(env, napi_valueFunction, napi_property_name(env, "napi_value"));
23+
napi_set_property(env, prototype, napi_property_name(env, "napi_value"),
2424
napi_valueFunction);
2525

26-
napi_value plusOneFunction = napi_create_function(napi_env, PlusOne);
27-
napi_set_function_name(napi_env, plusOneFunction, napi_create_string(napi_env, "plusOne"));
28-
napi_set_property(napi_env, prototype, napi_property_name(napi_env, "plusOne"),
26+
napi_value plusOneFunction = napi_create_function(env, PlusOne);
27+
napi_set_function_name(env, plusOneFunction, napi_property_name(env, "plusOne"));
28+
napi_set_property(env, prototype, napi_property_name(env, "plusOne"),
2929
plusOneFunction);
3030

3131

32-
napi_value multiplyFunction = napi_create_function(napi_env, Multiply);
33-
napi_set_function_name(napi_env, multiplyFunction, napi_create_string(napi_env, "multiply"));
34-
napi_set_property(napi_env, prototype, napi_property_name(napi_env, "multiply"),
32+
napi_value multiplyFunction = napi_create_function(env, Multiply);
33+
napi_set_function_name(env, multiplyFunction, napi_property_name(env, "multiply"));
34+
napi_set_property(env, prototype, napi_property_name(env, "multiply"),
3535
multiplyFunction);
3636

37-
constructor = napi_create_persistent(napi_env, function);
37+
constructor = napi_create_persistent(env, function);
3838

39-
napi_set_property(napi_env, exports, napi_property_name(napi_env, "MyObject"),
39+
napi_set_property(env, exports, napi_property_name(env, "MyObject"),
4040
function);
4141
}
4242

@@ -50,9 +50,9 @@ void MyObject::New(napi_env env, napi_func_cb_info info) {
5050
value = napi_get_number_from_value(env, args[0]);
5151
}
5252
MyObject* obj = new MyObject(value);
53-
napi_value jsobj = napi_get_cb_object(env, info);
54-
napi_wrap(env, jsobj, (void*) obj, MyObject::Destructor);
55-
napi_set_return_value(env, info, jsobj);
53+
napi_value jsthis = napi_get_cb_this(env, info);
54+
napi_wrap(env, jsthis, (void*) obj, MyObject::Destructor, nullptr);
55+
napi_set_return_value(env, info, jsthis);
5656
} else {
5757
// Invoked as plain function `MyObject(...)`, turn into construct call.
5858
napi_value args[1];
@@ -65,12 +65,12 @@ void MyObject::New(napi_env env, napi_func_cb_info info) {
6565
}
6666

6767
void MyObject::GetValue(napi_env env, napi_func_cb_info info) {
68-
MyObject* obj = (MyObject*) napi_unwrap(env, napi_get_cb_object(env, info));
68+
MyObject* obj = (MyObject*) napi_unwrap(env, napi_get_cb_this(env, info));
6969
napi_set_return_value(env, info, napi_create_number(env, obj->value_));
7070
}
7171

7272
void MyObject::PlusOne(napi_env env, napi_func_cb_info info) {
73-
MyObject* obj = (MyObject*) napi_unwrap(env, napi_get_cb_object(env, info));
73+
MyObject* obj = (MyObject*) napi_unwrap(env, napi_get_cb_this(env, info));
7474
obj->value_ += 1;
7575
napi_set_return_value(env, info, napi_create_number(env, obj->value_));
7676
}
@@ -84,7 +84,7 @@ void MyObject::Multiply(napi_env env, napi_func_cb_info info) {
8484
multiple = napi_get_number_from_value(env, args[0]);
8585
}
8686

87-
MyObject* obj = (MyObject*) napi_unwrap(env, napi_get_cb_object(env, info));
87+
MyObject* obj = (MyObject*) napi_unwrap(env, napi_get_cb_this(env, info));
8888

8989
napi_value cons = napi_get_persistent_value(env, constructor);
9090
const int argc = 1;

7_factory_wrap/abi/myobject.cc

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@ napi_persistent MyObject::constructor;
1313

1414
void MyObject::Init(napi_env env) {
1515
napi_value function = napi_create_constructor_for_wrap(env, New);
16-
napi_set_function_name(env, function, napi_create_string(env, "MyObject"));
16+
napi_set_function_name(env, function, napi_property_name(env, "MyObject"));
1717
napi_value prototype =
1818
napi_get_property(env, function, napi_property_name(env, "prototype"));
1919

2020
napi_value plusOneFunction = napi_create_function(env, PlusOne);
21-
napi_set_function_name(env, plusOneFunction, napi_create_string(env, "plusOne"));
21+
napi_set_function_name(env, plusOneFunction, napi_property_name(env, "plusOne"));
2222
napi_set_property(env, prototype, napi_property_name(env, "plusOne"),
2323
plusOneFunction);
2424

@@ -30,9 +30,9 @@ void MyObject::New(napi_env env, napi_func_cb_info info) {
3030
napi_get_cb_args(env, info, args, 1);
3131
MyObject* obj = new MyObject();
3232
obj->counter_ = (args[0] == napi_get_undefined_(env)) ? 0 : napi_get_number_from_value(env, args[0]);
33-
napi_value jsobj = napi_get_cb_object(env, info);
34-
napi_wrap(env, jsobj, (void*) obj, MyObject::Destructor);
35-
napi_set_return_value(env, info, jsobj);
33+
napi_value jsthis = napi_get_cb_this(env, info);
34+
napi_wrap(env, jsthis, (void*) obj, MyObject::Destructor, nullptr);
35+
napi_set_return_value(env, info, jsthis);
3636
}
3737

3838

@@ -45,7 +45,7 @@ napi_value MyObject::NewInstance(napi_env env, napi_value arg) {
4545
}
4646

4747
void MyObject::PlusOne(napi_env env, napi_func_cb_info info) {
48-
MyObject* obj = (MyObject*) napi_unwrap(env, napi_get_cb_object(env, info));
48+
MyObject* obj = (MyObject*) napi_unwrap(env, napi_get_cb_this(env, info));
4949
obj->counter_ += 1;
5050

5151
napi_set_return_value(env, info, napi_create_number(env, obj->counter_));

8_passing_wrapped/abi/myobject.cc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ napi_persistent MyObject::constructor;
1313

1414
void MyObject::Init(napi_env env) {
1515
napi_value function = napi_create_constructor_for_wrap(env, New);
16-
napi_set_function_name(env, function, napi_create_string(env, "MyObject"));
16+
napi_set_function_name(env, function, napi_property_name(env, "MyObject"));
1717

1818
constructor = napi_create_persistent(env, function);
1919
}
@@ -23,9 +23,9 @@ void MyObject::New(napi_env env, napi_func_cb_info info) {
2323
napi_get_cb_args(env, info, args, 1);
2424
MyObject* obj = new MyObject();
2525
obj->val_ = (args[0] == napi_get_undefined_(env)) ? 0 : napi_get_number_from_value(env, args[0]);
26-
napi_value jsobj = napi_get_cb_object(env, info);
27-
napi_wrap(env, jsobj, (void*) obj, MyObject::Destructor);
28-
napi_set_return_value(env, info, jsobj);
26+
napi_value jsthis = napi_get_cb_this(env, info);
27+
napi_wrap(env, jsthis, (void*) obj, MyObject::Destructor, nullptr);
28+
napi_set_return_value(env, info, jsthis);
2929
}
3030

3131
napi_value MyObject::NewInstance(napi_env env, napi_value arg) {

0 commit comments

Comments
 (0)