29 static HINSTANCE
nodeExe=GetModuleHandle(
nullptr);
34 #define NAPIFN(name,arg_decls,args) \ 35 napi_status name arg_decls \ 37 static auto symbol=(decltype(name)*)GetProcAddress(nodeExe, #name); \ 38 return symbol? symbol args: napi_invalid_arg; \ 41 #define VOID_NAPIFN(name,arg_decls,args) \ 44 static auto symbol=(decltype(name)*)GetProcAddress(nodeExe, #name); \ 45 if (symbol) symbol args; \ 50 NAPIFN(napi_create_array, (napi_env env, napi_value* result), (env,result));
52 NAPIFN(napi_create_function, (napi_env env,
const char* utf8name,
size_t length,
53 napi_callback cb,
void* data, napi_value* result),
54 (env,utf8name,length,cb,data,result));
56 NAPIFN(napi_create_object, (napi_env env, napi_value* result), (env,result));
58 NAPIFN(napi_add_finalizer, (napi_env env, napi_value js_object,
void* native_object,
59 napi_finalize finalize_cb,
void* finalize_hint, napi_ref* result),
60 (env,js_object,native_object,finalize_cb,finalize_hint,result));
62 NAPIFN(napi_create_string_utf8,
63 (napi_env env,
const char*
str,
size_t length, napi_value* result),
64 (env,
str,length,result));
66 NAPIFN(napi_create_string_utf16,
67 (napi_env env,
const char16_t*
str,
size_t length, napi_value* result),
68 (env,
str,length,result));
71 (napi_env env, napi_value
object, napi_value key,napi_value value),
72 (env,
object,key,value));
74 NAPIFN(napi_create_type_error,
75 (napi_env env, napi_value code, napi_value msg, napi_value* result),
76 (env,code,msg,result));
78 NAPIFN(napi_create_reference,
79 (napi_env env,napi_value value, uint32_t initial_refcount,napi_ref* result),
80 (env,value,initial_refcount,result));
82 NAPIFN(napi_delete_reference, (napi_env env, napi_ref ref), (env,ref));
84 NAPIFN(napi_get_reference_value, (napi_env env, napi_ref ref, napi_value* result),
87 NAPIFN(napi_open_handle_scope, (napi_env env, napi_handle_scope* result),(env,result));
88 NAPIFN(napi_close_handle_scope, (napi_env env, napi_handle_scope
scope), (env,
scope));
90 NAPIFN(napi_throw, (napi_env env, napi_value error),(env,error));
92 NAPIFN(napi_get_undefined,(napi_env env, napi_value* result), (env,result));
93 NAPIFN(napi_get_null, (napi_env env, napi_value* result), (env,result));
95 NAPIFN(napi_typeof,(napi_env env,napi_value value,napi_valuetype* result),
98 NAPIFN(napi_get_boolean, (napi_env env,
bool value, napi_value* result),(env,value,result));
100 NAPIFN(napi_get_value_uint32,(napi_env env,napi_value value,uint32_t* result),
102 NAPIFN(napi_get_value_int32,(napi_env env,napi_value value,int32_t* result),
105 NAPIFN(napi_async_destroy, (napi_env env, napi_async_context async_context), (env,async_context));
107 VOID_NAPIFN(napi_fatal_error, (
const char* location,
size_t location_len,
108 const char* message,
size_t message_len),
109 (location,location_len,message,message_len));
111 NAPIFN(napi_close_callback_scope, (napi_env env, napi_callback_scope
scope),(env,
scope));
113 NAPIFN(napi_get_last_error_info, (napi_env env,
const napi_extended_error_info** result),(env,result));
115 NAPIFN(napi_is_exception_pending,(napi_env env,
bool* result),(env,result));
117 NAPIFN(napi_get_and_clear_last_exception,(napi_env env, napi_value* result),(env,result));
119 NAPIFN(napi_create_error, (napi_env env, napi_value code, napi_value msg, napi_value* result),
120 (env,code,msg,result));
122 NAPIFN(napi_get_cb_info, (napi_env env, napi_callback_info cbinfo,
size_t* argc,
123 napi_value* argv, napi_value* this_arg,
void** data),
124 (env,cbinfo,argc,argv,this_arg,data));
126 NAPIFN(napi_open_escapable_handle_scope, (napi_env env, napi_escapable_handle_scope* result),
128 NAPIFN(napi_close_escapable_handle_scope, (napi_env env, napi_escapable_handle_scope
scope), (env,
scope));
130 NAPIFN(napi_escape_handle,(napi_env env, napi_escapable_handle_scope
scope, napi_value escapee,
131 napi_value* result),(env,
scope,escapee,result));
133 NAPIFN(napi_get_named_property,(napi_env env, napi_value
object,
const char* utf8name,
134 napi_value* result),(env,
object,utf8name,result));
136 NAPIFN(napi_get_value_string_utf8, (napi_env env, napi_value value,
char* buf,
size_t bufsize,
137 size_t* result), (env,value,buf,bufsize,result));
138 NAPIFN(napi_call_function, (napi_env env, napi_value recv, napi_value func,
size_t argc,
139 const napi_value* argv,napi_value* result),
140 (env,recv,func,argc,argv,result));
142 VOID_NAPIFN(napi_module_register, (napi_module* mod), (mod));
144 NAPIFN(napi_coerce_to_string,(napi_env env,napi_value value,napi_value* result),(env,value,result));
146 NAPIFN(napi_set_element, (napi_env env, napi_value
object,uint32_t index, napi_value value),
147 (env,
object,index,value));
150 NAPIFN(napi_get_instance_data, (napi_env env,
void** data),(env,data));
152 NAPIFN(napi_create_threadsafe_function, (napi_env env,
154 napi_value async_resource,
155 napi_value async_resource_name,
156 size_t max_queue_size,
157 size_t initial_thread_count,
158 void* thread_finalize_data,
159 napi_finalize thread_finalize_cb,
161 napi_threadsafe_function_call_js call_js_cb,
162 napi_threadsafe_function* result),
163 (env,func,async_resource,async_resource_name,max_queue_size,initial_thread_count,thread_finalize_data,thread_finalize_cb,context,call_js_cb,result));
165 NAPIFN(napi_create_promise, (napi_env env,
166 napi_deferred* deferred,
167 napi_value* promise),
168 (env,deferred,promise));
170 NAPIFN(napi_define_properties, (napi_env env,
172 size_t property_count,
173 const napi_property_descriptor* properties),
174 (env,
object,property_count,properties));
176 NAPIFN(napi_set_instance_data, (napi_env env,
178 napi_finalize finalize_cb,
179 void* finalize_hint),
180 (env,data,finalize_cb,finalize_hint));
182 NAPIFN(napi_create_double, (napi_env env,
187 NAPIFN(napi_resolve_deferred, (napi_env env,
188 napi_deferred deferred,
189 napi_value resolution),
190 (env,deferred,resolution));
192 NAPIFN(napi_reject_deferred, (napi_env env,
193 napi_deferred deferred,
194 napi_value rejection),
195 (env,deferred,rejection));
197 NAPIFN(napi_call_threadsafe_function,
198 (napi_threadsafe_function func,
200 napi_threadsafe_function_call_mode is_blocking),
201 (func,data,is_blocking));
202 NAPIFN(napi_add_env_cleanup_hook, (napi_env env,
void (*fun)(
void* arg),
void* arg), (env,fun,arg));
204 NAPIFN(napi_has_property, (napi_env env, napi_value
object, napi_value key,
bool* result),
205 (env,
object, key, result));
207 NAPIFN(napi_get_property,(napi_env env, napi_value
object, napi_value key, napi_value* result),
208 (env,
object, key, result));
size_t scope(const string &name)
extract scope from a qualified variable name
#define VOID_NAPIFN(name, arg_decls, args)
#define NAPIFN(name, arg_decls, args)
std::string str(T x)
utility function to create a string representation of a numeric type