• 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 <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