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 82 NAPI_INNER_EXTERN napi_status napi_create_external_buffer(napi_env env, 83 size_t length, 84 void* data, 85 napi_finalize finalize_cb, 86 void* finalize_hint, 87 napi_value* result); 88 89 NAPI_INNER_EXTERN napi_status napi_create_string_utf16(napi_env env, 90 const char16_t* str, 91 size_t length, 92 napi_value* result); 93 94 NAPI_INNER_EXTERN napi_status napi_get_buffer_info(napi_env env, 95 napi_value value, 96 void** data, 97 size_t* length); 98 99 NAPI_INNER_EXTERN napi_status napi_get_value_string_utf16(napi_env env, 100 napi_value value, 101 char16_t* buf, 102 size_t bufsize, 103 size_t* result); 104 105 NAPI_INNER_EXTERN napi_status napi_is_buffer(napi_env env, 106 napi_value value, 107 bool* result); 108 109 NAPI_INNER_EXTERN napi_status napi_detach_arraybuffer(napi_env env, 110 napi_value arraybuffer); 111 112 NAPI_INNER_EXTERN napi_status napi_is_detached_arraybuffer(napi_env env, 113 napi_value value, 114 bool* result); 115 116 NAPI_INNER_EXTERN napi_status napi_get_all_property_names(napi_env env, 117 napi_value object, 118 napi_key_collection_mode key_mode, 119 napi_key_filter key_filter, 120 napi_key_conversion key_conversion, 121 napi_value* result); 122 123 NAPI_EXTERN napi_status napi_object_freeze(napi_env env, napi_value object); 124 125 NAPI_INNER_EXTERN napi_status napi_object_seal(napi_env env, 126 napi_value object); 127 128 NAPI_INNER_EXTERN napi_status napi_type_tag_object(napi_env env, 129 napi_value value, 130 const napi_type_tag* type_tag); 131 132 NAPI_INNER_EXTERN napi_status napi_check_object_type_tag(napi_env env, 133 napi_value value, 134 const napi_type_tag* type_tag, 135 bool* result); 136 137 NAPI_INNER_EXTERN napi_status napi_add_finalizer(napi_env env, 138 napi_value js_object, 139 void* native_object, 140 napi_finalize finalize_cb, 141 void* finalize_hint, 142 napi_ref* result); 143 144 NAPI_INNER_EXTERN napi_status napi_async_init(napi_env env, 145 napi_value async_resource, 146 napi_value async_resource_name, 147 napi_async_context* result); 148 149 NAPI_INNER_EXTERN napi_status napi_async_destroy(napi_env env, 150 napi_async_context async_context); 151 152 NAPI_INNER_EXTERN napi_status napi_open_callback_scope(napi_env env, 153 napi_value resource_object, 154 napi_async_context context, 155 napi_callback_scope* result); 156 157 NAPI_INNER_EXTERN napi_status napi_close_callback_scope(napi_env env, 158 napi_callback_scope scope); 159 160 NAPI_INNER_EXTERN napi_status napi_adjust_external_memory(napi_env env, 161 int64_t change_in_bytes, 162 int64_t* adjusted_value); 163 164 NAPI_INNER_EXTERN napi_status node_api_get_module_file_name(napi_env env, const char** result); 165 166 NAPI_EXTERN napi_status napi_run_script_path(napi_env env, const char* path, napi_value* result); 167 168 #endif /* FOUNDATION_ACE_NAPI_INTERFACES_KITS_NAPI_NATIVE_API_H */ 169