Skip to content

Commit 80ab216

Browse files
committed
node-api: add napi_set_prototype
1 parent fc32ac2 commit 80ab216

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

src/js_native_api.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,9 @@ NAPI_EXTERN napi_status NAPI_CDECL napi_coerce_to_string(napi_env env,
197197
napi_value* result);
198198

199199
// Methods to work with Objects
200+
NAPI_EXTERN napi_status NAPI_CDECL napi_set_prototype(napi_env env,
201+
napi_value object,
202+
napi_value value);
200203
NAPI_EXTERN napi_status NAPI_CDECL napi_get_prototype(napi_env env,
201204
napi_value object,
202205
napi_value* result);

src/js_native_api_v8.cc

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1567,6 +1567,26 @@ napi_status NAPI_CDECL napi_strict_equals(napi_env env,
15671567
return GET_RETURN_STATUS(env);
15681568
}
15691569

1570+
napi_status NAPI_CDECL napi_set_prototype(napi_env env,
1571+
napi_value object,
1572+
napi_value value) {
1573+
NAPI_PREAMBLE(env);
1574+
CHECK_ARG(env, value);
1575+
1576+
v8::Local<v8::Context> context = env->context();
1577+
v8::Local<v8::Object> obj;
1578+
1579+
CHECK_TO_OBJECT(env, context, obj, object);
1580+
1581+
v8::Local<v8::Value> val = v8impl::V8LocalValueFromJsValue(value);
1582+
1583+
v8::Maybe<bool> set_maybe = obj->SetPrototypeV2(context, val);
1584+
1585+
RETURN_STATUS_IF_FALSE_WITH_PREAMBLE(
1586+
env, set_maybe.FromMaybe(false), napi_generic_failure);
1587+
return GET_RETURN_STATUS(env);
1588+
}
1589+
15701590
napi_status NAPI_CDECL napi_get_prototype(napi_env env,
15711591
napi_value object,
15721592
napi_value* result) {

0 commit comments

Comments
 (0)