#ifndef SRC_NODE_BINDING_H_ #define SRC_NODE_BINDING_H_ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS #include "node.h" #include "node_api.h" #include "uv.h" #include "v8.h" enum { NM_F_BUILTIN = 1 << 0, NM_F_LINKED = 1 << 1, NM_F_INTERNAL = 1 << 2, }; #define NODE_MODULE_CONTEXT_AWARE_CPP(modname, regfunc, priv, flags) \ static node::node_module _module = { \ NODE_MODULE_VERSION, \ flags, \ nullptr, \ __FILE__, \ nullptr, \ (node::addon_context_register_func)(regfunc), \ NODE_STRINGIFY(modname), \ priv, \ nullptr}; \ void _register_##modname() { node_module_register(&_module); } #define NODE_BUILTIN_MODULE_CONTEXT_AWARE(modname, regfunc) \ NODE_MODULE_CONTEXT_AWARE_CPP(modname, regfunc, nullptr, NM_F_BUILTIN) void napi_module_register_by_symbol(v8::Local exports, v8::Local module, v8::Local context, napi_addon_register_func init); namespace node { #define NODE_MODULE_CONTEXT_AWARE_INTERNAL(modname, regfunc) \ NODE_MODULE_CONTEXT_AWARE_CPP(modname, regfunc, nullptr, NM_F_INTERNAL) // Globals per process // This is set by node::Init() which is used by embedders extern bool node_is_initialized; namespace binding { // Call _register functions for all of // the built-in modules. Because built-in modules don't // use the __attribute__((constructor)). Need to // explicitly call the _register* functions. void RegisterBuiltinModules(); void GetBinding(const v8::FunctionCallbackInfo& args); void GetInternalBinding(const v8::FunctionCallbackInfo& args); void GetLinkedBinding(const v8::FunctionCallbackInfo& args); void DLOpen(const v8::FunctionCallbackInfo& args); } // namespace binding } // namespace node #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS #endif // SRC_NODE_BINDING_H_