diff options
Diffstat (limited to 'src/js_native_api_v8_internals.h')
-rw-r--r-- | src/js_native_api_v8_internals.h | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/js_native_api_v8_internals.h b/src/js_native_api_v8_internals.h new file mode 100644 index 0000000000..91baae6a3b --- /dev/null +++ b/src/js_native_api_v8_internals.h @@ -0,0 +1,35 @@ +#ifndef SRC_JS_NATIVE_API_V8_INTERNALS_H_ +#define SRC_JS_NATIVE_API_V8_INTERNALS_H_ + +// The V8 implementation of N-API, including `js_native_api_v8.h` uses certain +// idioms which require definition here. For example, it uses a variant of +// persistent references which need not be reset in the constructor. It is the +// responsibility of this file to define these idioms. + +// In the case of the Node.js implementation of N-API some of the idioms are +// imported directly from Node.js by including `node_internals.h` below. Others +// are bridged to remove references to the `node` namespace. + +#include "node_version.h" +#include "env.h" +#include "node_internals.h" + +#define NAPI_ARRAYSIZE(array) \ + node::arraysize((array)) + +#define NAPI_FIXED_ONE_BYTE_STRING(isolate, string) \ + node::FIXED_ONE_BYTE_STRING((isolate), (string)) + +#define NAPI_PRIVATE_KEY(context, suffix) \ + (node::Environment::GetCurrent((context))->napi_ ## suffix()) + +namespace v8impl { + +template <typename T> +using Persistent = node::Persistent<T>; + +using PersistentToLocal = node::PersistentToLocal; + +} // end of namespace v8impl + +#endif // SRC_JS_NATIVE_API_V8_INTERNALS_H_ |