1 /* 2 * Copyright (c) 2021 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef FOUNDATION_ACE_NAPI_INTERFACES_KITS_NAPI_NATIVE_API_H 17 #define FOUNDATION_ACE_NAPI_INTERFACES_KITS_NAPI_NATIVE_API_H 18 19 #ifndef NAPI_VERSION 20 #define NAPI_VERSION 8 21 #endif 22 23 #ifndef NAPI_EXPERIMENTAL 24 #define NAPI_EXPERIMENTAL 25 #endif 26 27 #include <node_api.h> 28 29 #ifdef NAPI_TEST 30 #ifdef _WIN32 31 #define NAPI_INNER_EXTERN __declspec(dllexport) 32 #else 33 #define NAPI_INNER_EXTERN __attribute__((visibility("default"))) 34 #endif 35 #else 36 #ifdef _WIN32 37 #define NAPI_INNER_EXTERN __declspec(deprecated) 38 #else 39 #define NAPI_INNER_EXTERN __attribute__((__deprecated__)) 40 #endif 41 #endif 42 43 NAPI_INNER_EXTERN napi_status napi_set_instance_data(napi_env env, 44 void* data, 45 napi_finalize finalize_cb, 46 void* finalize_hint); 47 48 NAPI_INNER_EXTERN napi_status napi_get_instance_data(napi_env env, 49 void** data); 50 51 NAPI_INNER_EXTERN napi_status napi_fatal_exception(napi_env env, napi_value err); 52 53 NAPI_INNER_EXTERN napi_status napi_add_env_cleanup_hook(napi_env env, 54 void (*fun)(void* arg), 55 void* arg); 56 57 NAPI_INNER_EXTERN napi_status napi_remove_env_cleanup_hook(napi_env env, 58 void (*fun)(void* arg), 59 void* arg); 60 61 NAPI_INNER_EXTERN napi_status napi_add_async_cleanup_hook( 62 napi_env env, 63 napi_async_cleanup_hook hook, 64 void* arg, 65 napi_async_cleanup_hook_handle* remove_handle); 66 67 NAPI_INNER_EXTERN napi_status napi_remove_async_cleanup_hook( 68 napi_async_cleanup_hook_handle remove_handle); 69 70 NAPI_INNER_EXTERN napi_status napi_create_buffer(napi_env env, 71 size_t length, 72 void** data, 73 napi_value* result); 74 75 NAPI_INNER_EXTERN napi_status napi_create_buffer_copy(napi_env env, 76 size_t length, 77 const void* data, 78 void** result_data, 79 napi_value* result); 80 81 NAPI_INNER_EXTERN napi_status napi_create_date(napi_env env, 82 double time, 83 napi_value* result); 84 85 NAPI_INNER_EXTERN napi_status napi_create_external_buffer(napi_env env, 86 size_t length, 87 void* data, 88 napi_finalize finalize_cb, 89 void* finalize_hint, 90 napi_value* result); 91 92 NAPI_INNER_EXTERN napi_status napi_create_bigint_int64(napi_env env, 93 int64_t value, 94 napi_value* result); 95 96 NAPI_EXTERN napi_status napi_create_bigint_uint64(napi_env env, 97 uint64_t value, 98 napi_value* result); 99 100 NAPI_INNER_EXTERN napi_status napi_create_bigint_words(napi_env env, 101 int sign_bit, 102 size_t word_count, 103 const uint64_t* words, 104 napi_value* result); 105 106 NAPI_INNER_EXTERN napi_status napi_create_string_utf16(napi_env env, 107 const char16_t* str, 108 size_t length, 109 napi_value* result); 110 111 NAPI_INNER_EXTERN napi_status napi_get_buffer_info(napi_env env, 112 napi_value value, 113 void** data, 114 size_t* length); 115 116 NAPI_INNER_EXTERN napi_status napi_get_date_value(napi_env env, 117 napi_value value, 118 double* result); 119 120 NAPI_INNER_EXTERN napi_status napi_get_value_bigint_int64(napi_env env, 121 napi_value value, 122 int64_t* result, 123 bool* lossless); 124 125 NAPI_EXTERN napi_status napi_get_value_bigint_uint64(napi_env env, 126 napi_value value, 127 uint64_t* result, 128 bool* lossless); 129 130 NAPI_INNER_EXTERN napi_status napi_get_value_bigint_words(napi_env env, 131 napi_value value, 132 int* sign_bit, 133 size_t* word_count, 134 uint64_t* words); 135 136 NAPI_INNER_EXTERN napi_status napi_get_value_string_utf16(napi_env env, 137 napi_value value, 138 char16_t* buf, 139 size_t bufsize, 140 size_t* result); 141 142 NAPI_INNER_EXTERN napi_status napi_is_buffer(napi_env env, 143 napi_value value, 144 bool* result); 145 146 NAPI_INNER_EXTERN napi_status napi_detach_arraybuffer(napi_env env, 147 napi_value arraybuffer); 148 149 NAPI_INNER_EXTERN napi_status napi_is_detached_arraybuffer(napi_env env, 150 napi_value value, 151 bool* result); 152 153 NAPI_INNER_EXTERN napi_status napi_get_all_property_names(napi_env env, 154 napi_value object, 155 napi_key_collection_mode key_mode, 156 napi_key_filter key_filter, 157 napi_key_conversion key_conversion, 158 napi_value* result); 159 160 NAPI_EXTERN napi_status napi_object_freeze(napi_env env, napi_value object); 161 162 NAPI_INNER_EXTERN napi_status napi_object_seal(napi_env env, 163 napi_value object); 164 165 NAPI_INNER_EXTERN napi_status napi_type_tag_object(napi_env env, 166 napi_value value, 167 const napi_type_tag* type_tag); 168 169 NAPI_INNER_EXTERN napi_status napi_check_object_type_tag(napi_env env, 170 napi_value value, 171 const napi_type_tag* type_tag, 172 bool* result); 173 174 NAPI_INNER_EXTERN napi_status napi_add_finalizer(napi_env env, 175 napi_value js_object, 176 void* native_object, 177 napi_finalize finalize_cb, 178 void* finalize_hint, 179 napi_ref* result); 180 181 NAPI_INNER_EXTERN napi_status napi_async_init(napi_env env, 182 napi_value async_resource, 183 napi_value async_resource_name, 184 napi_async_context* result); 185 186 NAPI_INNER_EXTERN napi_status napi_async_destroy(napi_env env, 187 napi_async_context async_context); 188 189 NAPI_INNER_EXTERN napi_status napi_make_callback(napi_env env, 190 napi_async_context async_context, 191 napi_value recv, 192 napi_value func, 193 size_t argc, 194 const napi_value* argv, 195 napi_value* result); 196 197 NAPI_INNER_EXTERN napi_status napi_open_callback_scope(napi_env env, 198 napi_value resource_object, 199 napi_async_context context, 200 napi_callback_scope* result); 201 202 NAPI_INNER_EXTERN napi_status napi_close_callback_scope(napi_env env, 203 napi_callback_scope scope); 204 205 NAPI_INNER_EXTERN napi_status napi_adjust_external_memory(napi_env env, 206 int64_t change_in_bytes, 207 int64_t* adjusted_value); 208 209 NAPI_INNER_EXTERN napi_status napi_create_threadsafe_function(napi_env env, 210 napi_value func, 211 napi_value async_resource, 212 napi_value async_resource_name, 213 size_t max_queue_size, 214 size_t initial_thread_count, 215 void* thread_finalize_data, 216 napi_finalize thread_finalize_cb, 217 void* context, 218 napi_threadsafe_function_call_js call_js_cb, 219 napi_threadsafe_function* result); 220 221 NAPI_INNER_EXTERN napi_status napi_get_threadsafe_function_context(napi_threadsafe_function func, 222 void** result); 223 224 NAPI_INNER_EXTERN napi_status napi_call_threadsafe_function(napi_threadsafe_function func, 225 void* data, 226 napi_threadsafe_function_call_mode is_blocking); 227 228 NAPI_INNER_EXTERN napi_status napi_acquire_threadsafe_function(napi_threadsafe_function func); 229 230 NAPI_INNER_EXTERN napi_status napi_release_threadsafe_function(napi_threadsafe_function func, 231 napi_threadsafe_function_release_mode mode); 232 233 NAPI_INNER_EXTERN napi_status napi_unref_threadsafe_function(napi_env env, napi_threadsafe_function func); 234 235 NAPI_INNER_EXTERN napi_status napi_ref_threadsafe_function(napi_env env, napi_threadsafe_function func); 236 237 NAPI_INNER_EXTERN napi_status node_api_get_module_file_name(napi_env env, const char** result); 238 239 NAPI_EXTERN napi_status napi_run_script_path(napi_env env, const char* path, napi_value* result); 240 241 #endif /* FOUNDATION_ACE_NAPI_INTERFACES_KITS_NAPI_NATIVE_API_H */ 242