UNPKG

koffi

Version:

Fast and simple C FFI (foreign function interface) for Node.js

78 lines (55 loc) 2.24 kB
# HandleScope The HandleScope class is used to manage the lifetime of object handles which are created through the use of node-addon-api. These handles keep an object alive in the heap in order to ensure that the objects are not collected while native code is using them. A handle may be created when any new node-addon-api Value or one of its subclasses is created or returned. For more details refer to the section titled [Object lifetime management](object_lifetime_management.md). ## Methods ### Constructor Creates a new handle scope on the stack. ```cpp Napi::HandleScope::HandleScope(Napi::Env env); ``` - `[in] env`: The environment in which to construct the `Napi::HandleScope` object. Returns a new `Napi::HandleScope` ### Constructor Creates a new handle scope on the stack. ```cpp Napi::HandleScope::HandleScope(Napi::Env env, Napi::HandleScope scope); ``` - `[in] env`: `Napi::Env` in which the scope passed in was created. - `[in] scope`: pre-existing `Napi::HandleScope`. Returns a new `Napi::HandleScope` instance which wraps the `napi_handle_scope` handle passed in. This can be used to mix usage of the C Node-API and node-addon-api. ```cpp operator Napi::HandleScope::napi_handle_scope() const ``` Returns the Node-API `napi_handle_scope` wrapped by the `Napi::EscapableHandleScope` object. This can be used to mix usage of the C Node-API and node-addon-api by allowing the class to be used be converted to a `napi_handle_scope`. ### Destructor ```cpp Napi::HandleScope::~HandleScope(); ``` Deletes the `Napi::HandleScope` instance and allows any objects/handles created in the scope to be collected by the garbage collector. There is no guarantee as to when the garbage collector will do this. ### Env ```cpp Napi::Env Napi::HandleScope::Env() const; ``` Returns the `Napi::Env` associated with the `Napi::HandleScope`. ## Example ```cpp for (int i = 0; i < LOOP_MAX; i++) { Napi::HandleScope scope(info.Env()); std::string name = std::string("inner-scope") + std::to_string(i); Napi::Value newValue = Napi::String::New(info.Env(), name.c_str()); // do something with newValue }; ``` For more details refer to the section titled [Object lifetime management](object_lifetime_management.md).