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 "common.h" 28 #include "node_api.h" 29 30 #ifdef NAPI_TEST 31 #ifdef _WIN32 32 #define NAPI_INNER_EXTERN __declspec(dllexport) 33 #else 34 #define NAPI_INNER_EXTERN __attribute__((visibility("default"))) 35 #endif 36 #else 37 #ifdef _WIN32 38 #define NAPI_INNER_EXTERN __declspec(deprecated) 39 #else 40 #define NAPI_INNER_EXTERN __attribute__((__deprecated__)) 41 #endif 42 #endif 43 44 NAPI_INNER_EXTERN napi_status napi_fatal_exception(napi_env env, napi_value err); 45 46 47 NAPI_EXTERN napi_status napi_create_string_utf16(napi_env env, 48 const char16_t* str, 49 size_t length, 50 napi_value* result); 51 52 NAPI_EXTERN napi_status napi_get_value_string_utf16(napi_env env, 53 napi_value value, 54 char16_t* buf, 55 size_t bufsize, 56 size_t* result); 57 58 NAPI_EXTERN napi_status napi_type_tag_object(napi_env env, 59 napi_value value, 60 const napi_type_tag* type_tag); 61 62 NAPI_EXTERN napi_status napi_check_object_type_tag(napi_env env, 63 napi_value value, 64 const napi_type_tag* type_tag, 65 bool* result); 66 67 NAPI_INNER_EXTERN napi_status napi_adjust_external_memory(napi_env env, 68 int64_t change_in_bytes, 69 int64_t* adjusted_value); 70 71 #ifdef __cplusplus 72 extern "C" { 73 #endif 74 75 typedef void* (*napi_native_binding_detach_callback)(napi_env env, void* native_object, void* hint); 76 typedef napi_value (*napi_native_binding_attach_callback)(napi_env env, void* native_object, void* hint); 77 78 NAPI_EXTERN napi_status napi_run_script_path(napi_env env, const char* path, napi_value* result); 79 NAPI_EXTERN napi_status napi_queue_async_work_with_qos(napi_env env, napi_async_work work, napi_qos_t qos); 80 NAPI_EXTERN napi_status napi_load_module(napi_env env, const char* path, napi_value* result); 81 NAPI_EXTERN napi_status napi_get_instance_data(napi_env env, void** data); 82 NAPI_EXTERN napi_status napi_set_instance_data(napi_env env, 83 void* data, 84 napi_finalize finalize_cb, 85 void* finalize_hint); 86 NAPI_EXTERN napi_status napi_remove_env_cleanup_hook(napi_env env, void (*fun)(void* arg), void* arg); 87 NAPI_EXTERN napi_status napi_add_env_cleanup_hook(napi_env env, void (*fun)(void* arg), void* arg); 88 NAPI_EXTERN napi_status napi_remove_async_cleanup_hook(napi_async_cleanup_hook_handle remove_handle); 89 NAPI_EXTERN napi_status napi_add_async_cleanup_hook(napi_env env, 90 napi_async_cleanup_hook hook, 91 void* arg, 92 napi_async_cleanup_hook_handle* remove_handle); 93 NAPI_EXTERN napi_status napi_async_destroy(napi_env env, 94 napi_async_context async_context); 95 NAPI_EXTERN napi_status napi_async_init(napi_env env, 96 napi_value async_resource, 97 napi_value async_resource_name, 98 napi_async_context* result); 99 NAPI_EXTERN napi_status napi_close_callback_scope(napi_env env, napi_callback_scope scope); 100 NAPI_EXTERN napi_status napi_open_callback_scope(napi_env env, 101 napi_value resource_object, 102 napi_async_context context, 103 napi_callback_scope* result); 104 NAPI_EXTERN napi_status node_api_get_module_file_name(napi_env env, const char** result); 105 NAPI_EXTERN napi_status napi_create_object_with_properties(napi_env env, 106 napi_value* result, 107 size_t property_count, 108 const napi_property_descriptor* properties); 109 NAPI_EXTERN napi_status napi_create_object_with_named_properties(napi_env env, 110 napi_value* result, 111 size_t property_count, 112 const char** keys, 113 const napi_value* values); 114 NAPI_EXTERN napi_status napi_coerce_to_native_binding_object(napi_env env, 115 napi_value js_object, 116 napi_native_binding_detach_callback detach_cb, 117 napi_native_binding_attach_callback attach_cb, 118 void* native_object, 119 void* hint); 120 NAPI_EXTERN napi_status napi_add_finalizer(napi_env env, 121 napi_value js_object, 122 void* native_object, 123 napi_finalize finalize_cb, 124 void* finalize_hint, 125 napi_ref* result); 126 127 #ifdef __cplusplus 128 } 129 #endif 130 #endif /* FOUNDATION_ACE_NAPI_INTERFACES_KITS_NAPI_NATIVE_API_H */ 131