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 #if defined(__cplusplus) && __cplusplus >= 201402L 94 [[deprecated]] 95 #endif 96 NAPI_EXTERN void NAPI_CDECL 97 napi_module_register(napi_module* mod); 98 99 NAPI_EXTERN NAPI_NO_RETURN void NAPI_CDECL 100 napi_fatal_error(const char* location, 101 size_t location_len, 102 const char* message, 103 size_t message_len); 104 105 // Methods for custom handling of async operations 106 NAPI_EXTERN napi_status NAPI_CDECL 107 napi_async_init(napi_env env, 108 napi_value async_resource, 109 napi_value async_resource_name, 110 napi_async_context* result); 111 112 NAPI_EXTERN napi_status NAPI_CDECL 113 napi_async_destroy(napi_env env, napi_async_context async_context); 114 115 NAPI_EXTERN napi_status NAPI_CDECL 116 napi_make_callback(napi_env env, 117 napi_async_context async_context, 118 napi_value recv, 119 napi_value func, 120 size_t argc, 121 const napi_value* argv, 122 napi_value* result); 123 124 // Methods to provide node::Buffer functionality with napi types 125 NAPI_EXTERN napi_status NAPI_CDECL napi_create_buffer(napi_env env, 126 size_t length, 127 void** data, 128 napi_value* result); 129 #ifndef NODE_API_NO_EXTERNAL_BUFFERS_ALLOWED 130 NAPI_EXTERN napi_status NAPI_CDECL 131 napi_create_external_buffer(napi_env env, 132 size_t length, 133 void* data, 134 napi_finalize finalize_cb, 135 void* finalize_hint, 136 napi_value* result); 137 #endif // NODE_API_NO_EXTERNAL_BUFFERS_ALLOWED 138 NAPI_EXTERN napi_status NAPI_CDECL napi_create_buffer_copy(napi_env env, 139 size_t length, 140 const void* data, 141 void** result_data, 142 napi_value* result); 143 NAPI_EXTERN napi_status NAPI_CDECL napi_is_buffer(napi_env env, 144 napi_value value, 145 bool* result); 146 NAPI_EXTERN napi_status NAPI_CDECL napi_get_buffer_info(napi_env env, 147 napi_value value, 148 void** data, 149 size_t* length); 150 151 // Methods to manage simple async operations 152 NAPI_EXTERN napi_status NAPI_CDECL 153 napi_create_async_work(napi_env env, 154 napi_value async_resource, 155 napi_value async_resource_name, 156 napi_async_execute_callback execute, 157 napi_async_complete_callback complete, 158 void* data, 159 napi_async_work* result); 160 NAPI_EXTERN napi_status NAPI_CDECL napi_delete_async_work(napi_env env, 161 napi_async_work work); 162 NAPI_EXTERN napi_status NAPI_CDECL napi_queue_async_work(napi_env env, 163 napi_async_work work); 164 NAPI_EXTERN napi_status NAPI_CDECL napi_cancel_async_work(napi_env env, 165 napi_async_work work); 166 167 // version management 168 NAPI_EXTERN napi_status NAPI_CDECL 169 napi_get_node_version(napi_env env, const napi_node_version** version); 170 171 #if NAPI_VERSION >= 2 172 173 // Return the current libuv event loop for a given environment 174 NAPI_EXTERN napi_status NAPI_CDECL 175 napi_get_uv_event_loop(napi_env env, struct uv_loop_s** loop); 176 177 #endif // NAPI_VERSION >= 2 178 179 #if NAPI_VERSION >= 3 180 181 NAPI_EXTERN napi_status NAPI_CDECL napi_fatal_exception(napi_env env, 182 napi_value err); 183 184 NAPI_EXTERN napi_status NAPI_CDECL 185 napi_add_env_cleanup_hook(napi_env env, napi_cleanup_hook fun, void* arg); 186 187 NAPI_EXTERN napi_status NAPI_CDECL 188 napi_remove_env_cleanup_hook(napi_env env, napi_cleanup_hook fun, void* arg); 189 190 NAPI_EXTERN napi_status NAPI_CDECL 191 napi_open_callback_scope(napi_env env, 192 napi_value resource_object, 193 napi_async_context context, 194 napi_callback_scope* result); 195 196 NAPI_EXTERN napi_status NAPI_CDECL 197 napi_close_callback_scope(napi_env env, napi_callback_scope scope); 198 199 #endif // NAPI_VERSION >= 3 200 201 #if NAPI_VERSION >= 4 202 203 // Calling into JS from other threads 204 NAPI_EXTERN napi_status NAPI_CDECL 205 napi_create_threadsafe_function(napi_env env, 206 napi_value func, 207 napi_value async_resource, 208 napi_value async_resource_name, 209 size_t max_queue_size, 210 size_t initial_thread_count, 211 void* thread_finalize_data, 212 napi_finalize thread_finalize_cb, 213 void* context, 214 napi_threadsafe_function_call_js call_js_cb, 215 napi_threadsafe_function* result); 216 217 NAPI_EXTERN napi_status NAPI_CDECL napi_get_threadsafe_function_context( 218 napi_threadsafe_function func, void** result); 219 220 NAPI_EXTERN napi_status NAPI_CDECL 221 napi_call_threadsafe_function(napi_threadsafe_function func, 222 void* data, 223 napi_threadsafe_function_call_mode is_blocking); 224 225 NAPI_EXTERN napi_status NAPI_CDECL 226 napi_acquire_threadsafe_function(napi_threadsafe_function func); 227 228 NAPI_EXTERN napi_status NAPI_CDECL napi_release_threadsafe_function( 229 napi_threadsafe_function func, napi_threadsafe_function_release_mode mode); 230 231 NAPI_EXTERN napi_status NAPI_CDECL 232 napi_unref_threadsafe_function(napi_env env, napi_threadsafe_function func); 233 234 NAPI_EXTERN napi_status NAPI_CDECL 235 napi_ref_threadsafe_function(napi_env env, napi_threadsafe_function func); 236 237 #endif // NAPI_VERSION >= 4 238 239 #if NAPI_VERSION >= 8 240 241 NAPI_EXTERN napi_status NAPI_CDECL 242 napi_add_async_cleanup_hook(napi_env env, 243 napi_async_cleanup_hook hook, 244 void* arg, 245 napi_async_cleanup_hook_handle* remove_handle); 246 247 NAPI_EXTERN napi_status NAPI_CDECL 248 napi_remove_async_cleanup_hook(napi_async_cleanup_hook_handle remove_handle); 249 250 #endif // NAPI_VERSION >= 8 251 252 #if NAPI_VERSION >= 9 253 254 NAPI_EXTERN napi_status NAPI_CDECL 255 node_api_get_module_file_name(napi_env env, const char** result); 256 257 #endif // NAPI_VERSION >= 9 258 259 EXTERN_C_END 260 261 #endif // SRC_NODE_API_H_
Contact us
|
About us
|
Term of use
|
Copyright © 2000-2025 MyWebUniversity.com ™