Where Online Learning is simpler!
The C and C++ Include Header Files
/usr/include/node/node_api.h
$ cat -n /usr/include/node/node_api.h 1 #ifndef SRC_NODE_API_H_ 2 #define SRC_NODE_API_H_ 3 4 #if defined(BUILDING_NODE_EXTENSION) && !defined(NAPI_EXTERN) 5 #ifdef _WIN32 6 // Building native addon against node 7 #define NAPI_EXTERN __declspec(dllimport) 8 #elif defined(__wasm__) 9 #define NAPI_EXTERN __attribute__((__import_module__("napi"))) 10 #endif 11 #endif 12 #include "js_native_api.h" 13 #include "node_api_types.h" 14 15 struct uv_loop_s; // Forward declaration. 16 17 #ifdef _WIN32 18 #define NAPI_MODULE_EXPORT __declspec(dllexport) 19 #else 20 #ifdef __EMSCRIPTEN__ 21 #define NAPI_MODULE_EXPORT \ 22 __attribute__((visibility("default"))) __attribute__((used)) 23 #else 24 #define NAPI_MODULE_EXPORT __attribute__((visibility("default"))) 25 #endif 26 #endif 27 28 #if defined(__GNUC__) 29 #define NAPI_NO_RETURN __attribute__((noreturn)) 30 #elif defined(_WIN32) 31 #define NAPI_NO_RETURN __declspec(noreturn) 32 #else 33 #define NAPI_NO_RETURN 34 #endif 35 36 typedef napi_value(NAPI_CDECL* napi_addon_register_func)(napi_env env, 37 napi_value exports); 38 typedef int32_t(NAPI_CDECL* node_api_addon_get_api_version_func)(void); 39 40 // Used by deprecated registration method napi_module_register. 41 typedef struct napi_module { 42 int nm_version; 43 unsigned int nm_flags; 44 const char* nm_filename; 45 napi_addon_register_func nm_register_func; 46 const char* nm_modname; 47 void* nm_priv; 48 void* reserved[4]; 49 } napi_module; 50 51 #define NAPI_MODULE_VERSION 1 52 53 #define NAPI_MODULE_INITIALIZER_X(base, version) \ 54 NAPI_MODULE_INITIALIZER_X_HELPER(base, version) 55 #define NAPI_MODULE_INITIALIZER_X_HELPER(base, version) base##version 56 57 #ifdef __wasm__ 58 #define NAPI_MODULE_INITIALIZER_BASE napi_register_wasm_v 59 #else 60 #define NAPI_MODULE_INITIALIZER_BASE napi_register_module_v 61 #endif 62 63 #define NODE_API_MODULE_GET_API_VERSION_BASE node_api_module_get_api_version_v 64 65 #define NAPI_MODULE_INITIALIZER \ 66 NAPI_MODULE_INITIALIZER_X(NAPI_MODULE_INITIALIZER_BASE, NAPI_MODULE_VERSION) 67 68 #define NODE_API_MODULE_GET_API_VERSION \ 69 NAPI_MODULE_INITIALIZER_X(NODE_API_MODULE_GET_API_VERSION_BASE, \ 70 NAPI_MODULE_VERSION) 71 72 #define NAPI_MODULE_INIT() \ 73 EXTERN_C_START \ 74 NAPI_MODULE_EXPORT int32_t NODE_API_MODULE_GET_API_VERSION(void) { \ 75 return NAPI_VERSION; \ 76 } \ 77 NAPI_MODULE_EXPORT napi_value NAPI_MODULE_INITIALIZER(napi_env env, \ 78 napi_value exports); \ 79 EXTERN_C_END \ 80 napi_value NAPI_MODULE_INITIALIZER(napi_env env, napi_value exports) 81 82 #define NAPI_MODULE(modname, regfunc) \ 83 NAPI_MODULE_INIT() { return regfunc(env, exports); } 84 85 // Deprecated. Use NAPI_MODULE. 86 #define NAPI_MODULE_X(modname, regfunc, priv, flags) \ 87 NAPI_MODULE(modname, regfunc) 88 89 EXTERN_C_START 90 91 // Deprecated. Replaced by symbol-based registration defined by NAPI_MODULE 92 // and NAPI_MODULE_INIT macros. 93 NAPI_EXTERN void NAPI_CDECL 94 napi_module_register(napi_module* mod); 95 96 NAPI_EXTERN NAPI_NO_RETURN void NAPI_CDECL 97 napi_fatal_error(const char* location, 98 size_t location_len, 99 const char* message, 100 size_t message_len); 101 102 // Methods for custom handling of async operations 103 NAPI_EXTERN napi_status NAPI_CDECL 104 napi_async_init(napi_env env, 105 napi_value async_resource, 106 napi_value async_resource_name, 107 napi_async_context* result); 108 109 NAPI_EXTERN napi_status NAPI_CDECL 110 napi_async_destroy(napi_env env, napi_async_context async_context); 111 112 NAPI_EXTERN napi_status NAPI_CDECL 113 napi_make_callback(napi_env env, 114 napi_async_context async_context, 115 napi_value recv, 116 napi_value func, 117 size_t argc, 118 const napi_value* argv, 119 napi_value* result); 120 121 // Methods to provide node::Buffer functionality with napi types 122 NAPI_EXTERN napi_status NAPI_CDECL napi_create_buffer(napi_env env, 123 size_t length, 124 void** data, 125 napi_value* result); 126 #ifndef NODE_API_NO_EXTERNAL_BUFFERS_ALLOWED 127 NAPI_EXTERN napi_status NAPI_CDECL 128 napi_create_external_buffer(napi_env env, 129 size_t length, 130 void* data, 131 node_api_basic_finalize finalize_cb, 132 void* finalize_hint, 133 napi_value* result); 134 #endif // NODE_API_NO_EXTERNAL_BUFFERS_ALLOWED 135 136 #if NAPI_VERSION >= 10 137 138 NAPI_EXTERN napi_status NAPI_CDECL 139 node_api_create_buffer_from_arraybuffer(napi_env env, 140 napi_value arraybuffer, 141 size_t byte_offset, 142 size_t byte_length, 143 napi_value* result); 144 #endif // NAPI_VERSION >= 10 145 146 NAPI_EXTERN napi_status NAPI_CDECL napi_create_buffer_copy(napi_env env, 147 size_t length, 148 const void* data, 149 void** result_data, 150 napi_value* result); 151 NAPI_EXTERN napi_status NAPI_CDECL napi_is_buffer(napi_env env, 152 napi_value value, 153 bool* result); 154 NAPI_EXTERN napi_status NAPI_CDECL napi_get_buffer_info(napi_env env, 155 napi_value value, 156 void** data, 157 size_t* length); 158 159 // Methods to manage simple async operations 160 NAPI_EXTERN napi_status NAPI_CDECL 161 napi_create_async_work(napi_env env, 162 napi_value async_resource, 163 napi_value async_resource_name, 164 napi_async_execute_callback execute, 165 napi_async_complete_callback complete, 166 void* data, 167 napi_async_work* result); 168 NAPI_EXTERN napi_status NAPI_CDECL napi_delete_async_work(napi_env env, 169 napi_async_work work); 170 NAPI_EXTERN napi_status NAPI_CDECL napi_queue_async_work(node_api_basic_env env, 171 napi_async_work work); 172 NAPI_EXTERN napi_status NAPI_CDECL 173 napi_cancel_async_work(node_api_basic_env env, napi_async_work work); 174 175 // version management 176 NAPI_EXTERN napi_status NAPI_CDECL napi_get_node_version( 177 node_api_basic_env env, const napi_node_version** version); 178 179 #if NAPI_VERSION >= 2 180 181 // Return the current libuv event loop for a given environment 182 NAPI_EXTERN napi_status NAPI_CDECL 183 napi_get_uv_event_loop(node_api_basic_env env, struct uv_loop_s** loop); 184 185 #endif // NAPI_VERSION >= 2 186 187 #if NAPI_VERSION >= 3 188 189 NAPI_EXTERN napi_status NAPI_CDECL napi_fatal_exception(napi_env env, 190 napi_value err); 191 192 NAPI_EXTERN napi_status NAPI_CDECL napi_add_env_cleanup_hook( 193 node_api_basic_env env, napi_cleanup_hook fun, void* arg); 194 195 NAPI_EXTERN napi_status NAPI_CDECL napi_remove_env_cleanup_hook( 196 node_api_basic_env env, napi_cleanup_hook fun, void* arg); 197 198 NAPI_EXTERN napi_status NAPI_CDECL 199 napi_open_callback_scope(napi_env env, 200 napi_value resource_object, 201 napi_async_context context, 202 napi_callback_scope* result); 203 204 NAPI_EXTERN napi_status NAPI_CDECL 205 napi_close_callback_scope(napi_env env, napi_callback_scope scope); 206 207 #endif // NAPI_VERSION >= 3 208 209 #if NAPI_VERSION >= 4 210 211 // Calling into JS from other threads 212 NAPI_EXTERN napi_status NAPI_CDECL 213 napi_create_threadsafe_function(napi_env env, 214 napi_value func, 215 napi_value async_resource, 216 napi_value async_resource_name, 217 size_t max_queue_size, 218 size_t initial_thread_count, 219 void* thread_finalize_data, 220 napi_finalize thread_finalize_cb, 221 void* context, 222 napi_threadsafe_function_call_js call_js_cb, 223 napi_threadsafe_function* result); 224 225 NAPI_EXTERN napi_status NAPI_CDECL napi_get_threadsafe_function_context( 226 napi_threadsafe_function func, void** result); 227 228 NAPI_EXTERN napi_status NAPI_CDECL 229 napi_call_threadsafe_function(napi_threadsafe_function func, 230 void* data, 231 napi_threadsafe_function_call_mode is_blocking); 232 233 NAPI_EXTERN napi_status NAPI_CDECL 234 napi_acquire_threadsafe_function(napi_threadsafe_function func); 235 236 NAPI_EXTERN napi_status NAPI_CDECL napi_release_threadsafe_function( 237 napi_threadsafe_function func, napi_threadsafe_function_release_mode mode); 238 239 NAPI_EXTERN napi_status NAPI_CDECL napi_unref_threadsafe_function( 240 node_api_basic_env env, napi_threadsafe_function func); 241 242 NAPI_EXTERN napi_status NAPI_CDECL napi_ref_threadsafe_function( 243 node_api_basic_env env, napi_threadsafe_function func); 244 245 #endif // NAPI_VERSION >= 4 246 247 #if NAPI_VERSION >= 8 248 249 NAPI_EXTERN napi_status NAPI_CDECL 250 napi_add_async_cleanup_hook(node_api_basic_env env, 251 napi_async_cleanup_hook hook, 252 void* arg, 253 napi_async_cleanup_hook_handle* remove_handle); 254 255 NAPI_EXTERN napi_status NAPI_CDECL 256 napi_remove_async_cleanup_hook(napi_async_cleanup_hook_handle remove_handle); 257 258 #endif // NAPI_VERSION >= 8 259 260 #if NAPI_VERSION >= 9 261 262 NAPI_EXTERN napi_status NAPI_CDECL 263 node_api_get_module_file_name(node_api_basic_env env, const char** result); 264 265 #endif // NAPI_VERSION >= 9 266 267 EXTERN_C_END 268 269 #endif // SRC_NODE_API_H_
Contact us
|
About us
|
Term of use
|
Copyright © 2000-2025 MyWebUniversity.com ™