• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 NAPI_EXTERN napi_status napi_create_string_utf16(napi_env env,
47                                                  const char16_t* str,
48                                                  size_t length,
49                                                  napi_value* result);
50 
51 NAPI_EXTERN napi_status napi_get_value_string_utf16(napi_env env,
52                                                     napi_value value,
53                                                     char16_t* buf,
54                                                     size_t bufsize,
55                                                     size_t* result);
56 
57 NAPI_EXTERN napi_status napi_type_tag_object(napi_env env,
58                                              napi_value value,
59                                              const napi_type_tag* type_tag);
60 
61 NAPI_EXTERN napi_status napi_check_object_type_tag(napi_env env,
62                                                    napi_value value,
63                                                    const napi_type_tag* type_tag,
64                                                    bool* result);
65 
66 NAPI_INNER_EXTERN napi_status napi_adjust_external_memory(napi_env env,
67                                                           int64_t change_in_bytes,
68                                                           int64_t* adjusted_value);
69 
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 // Create JSObject with initial properties given by descriptors, note that property key must be String,
106 // and must can not convert to element_index, also all keys must not duplicate.
107 NAPI_EXTERN napi_status napi_create_object_with_properties(napi_env env,
108                                                            napi_value* result,
109                                                            size_t property_count,
110                                                            const napi_property_descriptor* properties);
111 // Create JSObject with initial properties given by keys and values, note that property key must be String,
112 // and must can not convert to element_index, also all keys must not duplicate.
113 NAPI_EXTERN napi_status napi_create_object_with_named_properties(napi_env env,
114                                                                  napi_value* result,
115                                                                  size_t property_count,
116                                                                  const char** keys,
117                                                                  const napi_value* values);
118 NAPI_EXTERN napi_status napi_coerce_to_native_binding_object(napi_env env,
119                                                              napi_value js_object,
120                                                              napi_native_binding_detach_callback detach_cb,
121                                                              napi_native_binding_attach_callback attach_cb,
122                                                              void* native_object,
123                                                              void* hint);
124 NAPI_EXTERN napi_status napi_add_finalizer(napi_env env,
125                                            napi_value js_object,
126                                            void* native_object,
127                                            napi_finalize finalize_cb,
128                                            void* finalize_hint,
129                                            napi_ref* result);
130 
131 #ifdef __cplusplus
132 }
133 #endif
134 #endif /* FOUNDATION_ACE_NAPI_INTERFACES_KITS_NAPI_NATIVE_API_H */
135