napi_sys/
functions.rs

1#![allow(clippy::too_many_arguments)]
2
3mod napi1 {
4  use super::super::types::*;
5  use std::os::raw::{c_char, c_void};
6
7  generate!(
8    extern "C" {
9      fn napi_get_last_error_info(
10        env: napi_env,
11        result: *mut *const napi_extended_error_info,
12      ) -> napi_status;
13
14      fn napi_get_undefined(env: napi_env, result: *mut napi_value) -> napi_status;
15      fn napi_get_null(env: napi_env, result: *mut napi_value) -> napi_status;
16      fn napi_get_global(env: napi_env, result: *mut napi_value) -> napi_status;
17      fn napi_get_boolean(env: napi_env, value: bool, result: *mut napi_value) -> napi_status;
18      fn napi_create_object(env: napi_env, result: *mut napi_value) -> napi_status;
19      fn napi_create_array(env: napi_env, result: *mut napi_value) -> napi_status;
20      fn napi_create_array_with_length(
21        env: napi_env,
22        length: usize,
23        result: *mut napi_value,
24      ) -> napi_status;
25      fn napi_create_double(env: napi_env, value: f64, result: *mut napi_value) -> napi_status;
26      fn napi_create_int32(env: napi_env, value: i32, result: *mut napi_value) -> napi_status;
27      fn napi_create_uint32(env: napi_env, value: u32, result: *mut napi_value) -> napi_status;
28      fn napi_create_int64(env: napi_env, value: i64, result: *mut napi_value) -> napi_status;
29      fn napi_create_string_latin1(
30        env: napi_env,
31        str_: *const c_char,
32        length: usize,
33        result: *mut napi_value,
34      ) -> napi_status;
35      fn napi_create_string_utf8(
36        env: napi_env,
37        str_: *const c_char,
38        length: usize,
39        result: *mut napi_value,
40      ) -> napi_status;
41      fn napi_create_string_utf16(
42        env: napi_env,
43        str_: *const u16,
44        length: usize,
45        result: *mut napi_value,
46      ) -> napi_status;
47      fn napi_create_symbol(
48        env: napi_env,
49        description: napi_value,
50        result: *mut napi_value,
51      ) -> napi_status;
52      fn napi_create_function(
53        env: napi_env,
54        utf8name: *const c_char,
55        length: usize,
56        cb: napi_callback,
57        data: *mut c_void,
58        result: *mut napi_value,
59      ) -> napi_status;
60      fn napi_create_error(
61        env: napi_env,
62        code: napi_value,
63        msg: napi_value,
64        result: *mut napi_value,
65      ) -> napi_status;
66      fn napi_create_type_error(
67        env: napi_env,
68        code: napi_value,
69        msg: napi_value,
70        result: *mut napi_value,
71      ) -> napi_status;
72      fn napi_create_range_error(
73        env: napi_env,
74        code: napi_value,
75        msg: napi_value,
76        result: *mut napi_value,
77      ) -> napi_status;
78      fn napi_typeof(env: napi_env, value: napi_value, result: *mut napi_valuetype) -> napi_status;
79      fn napi_get_value_double(env: napi_env, value: napi_value, result: *mut f64) -> napi_status;
80      fn napi_get_value_int32(env: napi_env, value: napi_value, result: *mut i32) -> napi_status;
81      fn napi_get_value_uint32(env: napi_env, value: napi_value, result: *mut u32) -> napi_status;
82      fn napi_get_value_int64(env: napi_env, value: napi_value, result: *mut i64) -> napi_status;
83      fn napi_get_value_bool(env: napi_env, value: napi_value, result: *mut bool) -> napi_status;
84      fn napi_get_value_string_latin1(
85        env: napi_env,
86        value: napi_value,
87        buf: *mut c_char,
88        bufsize: usize,
89        result: *mut usize,
90      ) -> napi_status;
91      fn napi_get_value_string_utf8(
92        env: napi_env,
93        value: napi_value,
94        buf: *mut c_char,
95        bufsize: usize,
96        result: *mut usize,
97      ) -> napi_status;
98      fn napi_get_value_string_utf16(
99        env: napi_env,
100        value: napi_value,
101        buf: *mut u16,
102        bufsize: usize,
103        result: *mut usize,
104      ) -> napi_status;
105      fn napi_coerce_to_bool(
106        env: napi_env,
107        value: napi_value,
108        result: *mut napi_value,
109      ) -> napi_status;
110      fn napi_coerce_to_number(
111        env: napi_env,
112        value: napi_value,
113        result: *mut napi_value,
114      ) -> napi_status;
115      fn napi_coerce_to_object(
116        env: napi_env,
117        value: napi_value,
118        result: *mut napi_value,
119      ) -> napi_status;
120      fn napi_coerce_to_string(
121        env: napi_env,
122        value: napi_value,
123        result: *mut napi_value,
124      ) -> napi_status;
125      fn napi_get_prototype(
126        env: napi_env,
127        object: napi_value,
128        result: *mut napi_value,
129      ) -> napi_status;
130      fn napi_get_property_names(
131        env: napi_env,
132        object: napi_value,
133        result: *mut napi_value,
134      ) -> napi_status;
135      fn napi_set_property(
136        env: napi_env,
137        object: napi_value,
138        key: napi_value,
139        value: napi_value,
140      ) -> napi_status;
141      fn napi_has_property(
142        env: napi_env,
143        object: napi_value,
144        key: napi_value,
145        result: *mut bool,
146      ) -> napi_status;
147      fn napi_get_property(
148        env: napi_env,
149        object: napi_value,
150        key: napi_value,
151        result: *mut napi_value,
152      ) -> napi_status;
153      fn napi_delete_property(
154        env: napi_env,
155        object: napi_value,
156        key: napi_value,
157        result: *mut bool,
158      ) -> napi_status;
159      fn napi_has_own_property(
160        env: napi_env,
161        object: napi_value,
162        key: napi_value,
163        result: *mut bool,
164      ) -> napi_status;
165      fn napi_set_named_property(
166        env: napi_env,
167        object: napi_value,
168        utf8name: *const c_char,
169        value: napi_value,
170      ) -> napi_status;
171      fn napi_has_named_property(
172        env: napi_env,
173        object: napi_value,
174        utf8name: *const c_char,
175        result: *mut bool,
176      ) -> napi_status;
177      fn napi_get_named_property(
178        env: napi_env,
179        object: napi_value,
180        utf8name: *const c_char,
181        result: *mut napi_value,
182      ) -> napi_status;
183      fn napi_set_element(
184        env: napi_env,
185        object: napi_value,
186        index: u32,
187        value: napi_value,
188      ) -> napi_status;
189      fn napi_has_element(
190        env: napi_env,
191        object: napi_value,
192        index: u32,
193        result: *mut bool,
194      ) -> napi_status;
195      fn napi_get_element(
196        env: napi_env,
197        object: napi_value,
198        index: u32,
199        result: *mut napi_value,
200      ) -> napi_status;
201      fn napi_delete_element(
202        env: napi_env,
203        object: napi_value,
204        index: u32,
205        result: *mut bool,
206      ) -> napi_status;
207      fn napi_define_properties(
208        env: napi_env,
209        object: napi_value,
210        property_count: usize,
211        properties: *const napi_property_descriptor,
212      ) -> napi_status;
213      fn napi_is_array(env: napi_env, value: napi_value, result: *mut bool) -> napi_status;
214      fn napi_get_array_length(env: napi_env, value: napi_value, result: *mut u32) -> napi_status;
215      fn napi_strict_equals(
216        env: napi_env,
217        lhs: napi_value,
218        rhs: napi_value,
219        result: *mut bool,
220      ) -> napi_status;
221      fn napi_call_function(
222        env: napi_env,
223        recv: napi_value,
224        func: napi_value,
225        argc: usize,
226        argv: *const napi_value,
227        result: *mut napi_value,
228      ) -> napi_status;
229      fn napi_new_instance(
230        env: napi_env,
231        constructor: napi_value,
232        argc: usize,
233        argv: *const napi_value,
234        result: *mut napi_value,
235      ) -> napi_status;
236      fn napi_instanceof(
237        env: napi_env,
238        object: napi_value,
239        constructor: napi_value,
240        result: *mut bool,
241      ) -> napi_status;
242      fn napi_get_cb_info(
243        env: napi_env,
244        cbinfo: napi_callback_info,
245        argc: *mut usize,
246        argv: *mut napi_value,
247        this_arg: *mut napi_value,
248        data: *mut *mut c_void,
249      ) -> napi_status;
250      fn napi_get_new_target(
251        env: napi_env,
252        cbinfo: napi_callback_info,
253        result: *mut napi_value,
254      ) -> napi_status;
255      fn napi_define_class(
256        env: napi_env,
257        utf8name: *const c_char,
258        length: usize,
259        constructor: napi_callback,
260        data: *mut c_void,
261        property_count: usize,
262        properties: *const napi_property_descriptor,
263        result: *mut napi_value,
264      ) -> napi_status;
265      fn napi_wrap(
266        env: napi_env,
267        js_object: napi_value,
268        native_object: *mut c_void,
269        finalize_cb: napi_finalize,
270        finalize_hint: *mut c_void,
271        result: *mut napi_ref,
272      ) -> napi_status;
273      fn napi_unwrap(env: napi_env, js_object: napi_value, result: *mut *mut c_void)
274        -> napi_status;
275      fn napi_remove_wrap(
276        env: napi_env,
277        js_object: napi_value,
278        result: *mut *mut c_void,
279      ) -> napi_status;
280      fn napi_create_external(
281        env: napi_env,
282        data: *mut c_void,
283        finalize_cb: napi_finalize,
284        finalize_hint: *mut c_void,
285        result: *mut napi_value,
286      ) -> napi_status;
287      fn napi_get_value_external(
288        env: napi_env,
289        value: napi_value,
290        result: *mut *mut c_void,
291      ) -> napi_status;
292      fn napi_create_reference(
293        env: napi_env,
294        value: napi_value,
295        initial_refcount: u32,
296        result: *mut napi_ref,
297      ) -> napi_status;
298      fn napi_delete_reference(env: napi_env, ref_: napi_ref) -> napi_status;
299      fn napi_reference_ref(env: napi_env, ref_: napi_ref, result: *mut u32) -> napi_status;
300      fn napi_reference_unref(env: napi_env, ref_: napi_ref, result: *mut u32) -> napi_status;
301      fn napi_get_reference_value(
302        env: napi_env,
303        ref_: napi_ref,
304        result: *mut napi_value,
305      ) -> napi_status;
306      fn napi_open_handle_scope(env: napi_env, result: *mut napi_handle_scope) -> napi_status;
307      fn napi_close_handle_scope(env: napi_env, scope: napi_handle_scope) -> napi_status;
308      fn napi_open_escapable_handle_scope(
309        env: napi_env,
310        result: *mut napi_escapable_handle_scope,
311      ) -> napi_status;
312      fn napi_close_escapable_handle_scope(
313        env: napi_env,
314        scope: napi_escapable_handle_scope,
315      ) -> napi_status;
316      fn napi_escape_handle(
317        env: napi_env,
318        scope: napi_escapable_handle_scope,
319        escapee: napi_value,
320        result: *mut napi_value,
321      ) -> napi_status;
322      fn napi_throw(env: napi_env, error: napi_value) -> napi_status;
323      fn napi_throw_error(env: napi_env, code: *const c_char, msg: *const c_char) -> napi_status;
324      fn napi_throw_type_error(
325        env: napi_env,
326        code: *const c_char,
327        msg: *const c_char,
328      ) -> napi_status;
329      fn napi_throw_range_error(
330        env: napi_env,
331        code: *const c_char,
332        msg: *const c_char,
333      ) -> napi_status;
334      fn napi_is_error(env: napi_env, value: napi_value, result: *mut bool) -> napi_status;
335      fn napi_is_exception_pending(env: napi_env, result: *mut bool) -> napi_status;
336      fn napi_get_and_clear_last_exception(env: napi_env, result: *mut napi_value) -> napi_status;
337      fn napi_is_arraybuffer(env: napi_env, value: napi_value, result: *mut bool) -> napi_status;
338      fn napi_create_arraybuffer(
339        env: napi_env,
340        byte_length: usize,
341        data: *mut *mut c_void,
342        result: *mut napi_value,
343      ) -> napi_status;
344      fn napi_create_external_arraybuffer(
345        env: napi_env,
346        external_data: *mut c_void,
347        byte_length: usize,
348        finalize_cb: napi_finalize,
349        finalize_hint: *mut c_void,
350        result: *mut napi_value,
351      ) -> napi_status;
352      fn napi_get_arraybuffer_info(
353        env: napi_env,
354        arraybuffer: napi_value,
355        data: *mut *mut c_void,
356        byte_length: *mut usize,
357      ) -> napi_status;
358      fn napi_is_typedarray(env: napi_env, value: napi_value, result: *mut bool) -> napi_status;
359      fn napi_create_typedarray(
360        env: napi_env,
361        type_: napi_typedarray_type,
362        length: usize,
363        arraybuffer: napi_value,
364        byte_offset: usize,
365        result: *mut napi_value,
366      ) -> napi_status;
367      fn napi_get_typedarray_info(
368        env: napi_env,
369        typedarray: napi_value,
370        type_: *mut napi_typedarray_type,
371        length: *mut usize,
372        data: *mut *mut c_void,
373        arraybuffer: *mut napi_value,
374        byte_offset: *mut usize,
375      ) -> napi_status;
376      fn napi_create_dataview(
377        env: napi_env,
378        length: usize,
379        arraybuffer: napi_value,
380        byte_offset: usize,
381        result: *mut napi_value,
382      ) -> napi_status;
383      fn napi_is_dataview(env: napi_env, value: napi_value, result: *mut bool) -> napi_status;
384      fn napi_get_dataview_info(
385        env: napi_env,
386        dataview: napi_value,
387        bytelength: *mut usize,
388        data: *mut *mut c_void,
389        arraybuffer: *mut napi_value,
390        byte_offset: *mut usize,
391      ) -> napi_status;
392      fn napi_get_version(env: napi_env, result: *mut u32) -> napi_status;
393      fn napi_create_promise(
394        env: napi_env,
395        deferred: *mut napi_deferred,
396        promise: *mut napi_value,
397      ) -> napi_status;
398      fn napi_resolve_deferred(
399        env: napi_env,
400        deferred: napi_deferred,
401        resolution: napi_value,
402      ) -> napi_status;
403      fn napi_reject_deferred(
404        env: napi_env,
405        deferred: napi_deferred,
406        rejection: napi_value,
407      ) -> napi_status;
408      fn napi_is_promise(env: napi_env, value: napi_value, is_promise: *mut bool) -> napi_status;
409      fn napi_run_script(env: napi_env, script: napi_value, result: *mut napi_value)
410        -> napi_status;
411      fn napi_adjust_external_memory(
412        env: napi_env,
413        change_in_bytes: i64,
414        adjusted_value: *mut i64,
415      ) -> napi_status;
416      fn napi_module_register(mod_: *mut napi_module);
417      fn napi_fatal_error(
418        location: *const c_char,
419        location_len: usize,
420        message: *const c_char,
421        message_len: usize,
422      );
423      fn napi_async_init(
424        env: napi_env,
425        async_resource: napi_value,
426        async_resource_name: napi_value,
427        result: *mut napi_async_context,
428      ) -> napi_status;
429      fn napi_async_destroy(env: napi_env, async_context: napi_async_context) -> napi_status;
430      fn napi_make_callback(
431        env: napi_env,
432        async_context: napi_async_context,
433        recv: napi_value,
434        func: napi_value,
435        argc: usize,
436        argv: *const napi_value,
437        result: *mut napi_value,
438      ) -> napi_status;
439      fn napi_create_buffer(
440        env: napi_env,
441        length: usize,
442        data: *mut *mut c_void,
443        result: *mut napi_value,
444      ) -> napi_status;
445      fn napi_create_external_buffer(
446        env: napi_env,
447        length: usize,
448        data: *mut c_void,
449        finalize_cb: napi_finalize,
450        finalize_hint: *mut c_void,
451        result: *mut napi_value,
452      ) -> napi_status;
453      fn napi_create_buffer_copy(
454        env: napi_env,
455        length: usize,
456        data: *const c_void,
457        result_data: *mut *mut c_void,
458        result: *mut napi_value,
459      ) -> napi_status;
460      fn napi_is_buffer(env: napi_env, value: napi_value, result: *mut bool) -> napi_status;
461      fn napi_get_buffer_info(
462        env: napi_env,
463        value: napi_value,
464        data: *mut *mut c_void,
465        length: *mut usize,
466      ) -> napi_status;
467      fn napi_create_async_work(
468        env: napi_env,
469        async_resource: napi_value,
470        async_resource_name: napi_value,
471        execute: napi_async_execute_callback,
472        complete: napi_async_complete_callback,
473        data: *mut c_void,
474        result: *mut napi_async_work,
475      ) -> napi_status;
476      fn napi_delete_async_work(env: napi_env, work: napi_async_work) -> napi_status;
477      fn napi_queue_async_work(env: napi_env, work: napi_async_work) -> napi_status;
478      fn napi_cancel_async_work(env: napi_env, work: napi_async_work) -> napi_status;
479      fn napi_get_node_version(
480        env: napi_env,
481        version: *mut *const napi_node_version,
482      ) -> napi_status;
483    }
484  );
485}
486
487#[cfg(feature = "napi2")]
488mod napi2 {
489  use super::super::types::*;
490  use std::os::raw::c_int;
491
492  generate!(
493    extern "C" {
494      fn napi_get_uv_event_loop(env: napi_env, loop_: *mut *mut uv_loop_s) -> napi_status;
495
496      fn uv_run(loop_: *mut uv_loop_s, mode: uv_run_mode) -> c_int;
497    }
498  );
499}
500
501#[cfg(feature = "napi3")]
502mod napi3 {
503  use std::os::raw::c_void;
504
505  use super::super::types::*;
506
507  generate!(
508    extern "C" {
509      fn napi_fatal_exception(env: napi_env, err: napi_value) -> napi_status;
510      fn napi_add_env_cleanup_hook(
511        env: napi_env,
512        fun: Option<unsafe extern "C" fn(arg: *mut c_void)>,
513        arg: *mut c_void,
514      ) -> napi_status;
515      fn napi_remove_env_cleanup_hook(
516        env: napi_env,
517        fun: Option<unsafe extern "C" fn(arg: *mut c_void)>,
518        arg: *mut c_void,
519      ) -> napi_status;
520      fn napi_open_callback_scope(
521        env: napi_env,
522        resource_object: napi_value,
523        context: napi_async_context,
524        result: *mut napi_callback_scope,
525      ) -> napi_status;
526      fn napi_close_callback_scope(env: napi_env, scope: napi_callback_scope) -> napi_status;
527    }
528  );
529}
530
531#[cfg(feature = "napi4")]
532mod napi4 {
533  use super::super::types::*;
534  use std::os::raw::c_void;
535
536  generate!(
537    extern "C" {
538      fn napi_create_threadsafe_function(
539        env: napi_env,
540        func: napi_value,
541        async_resource: napi_value,
542        async_resource_name: napi_value,
543        max_queue_size: usize,
544        initial_thread_count: usize,
545        thread_finalize_data: *mut c_void,
546        thread_finalize_cb: napi_finalize,
547        context: *mut c_void,
548        call_js_cb: napi_threadsafe_function_call_js,
549        result: *mut napi_threadsafe_function,
550      ) -> napi_status;
551      fn napi_get_threadsafe_function_context(
552        func: napi_threadsafe_function,
553        result: *mut *mut c_void,
554      ) -> napi_status;
555      fn napi_call_threadsafe_function(
556        func: napi_threadsafe_function,
557        data: *mut c_void,
558        is_blocking: napi_threadsafe_function_call_mode,
559      ) -> napi_status;
560      fn napi_acquire_threadsafe_function(func: napi_threadsafe_function) -> napi_status;
561      fn napi_release_threadsafe_function(
562        func: napi_threadsafe_function,
563        mode: napi_threadsafe_function_release_mode,
564      ) -> napi_status;
565      fn napi_unref_threadsafe_function(
566        env: napi_env,
567        func: napi_threadsafe_function,
568      ) -> napi_status;
569      fn napi_ref_threadsafe_function(env: napi_env, func: napi_threadsafe_function)
570        -> napi_status;
571    }
572  );
573}
574
575#[cfg(feature = "napi5")]
576mod napi5 {
577  use super::super::types::*;
578  use std::ffi::c_void;
579
580  generate!(
581    extern "C" {
582      fn napi_create_date(env: napi_env, time: f64, result: *mut napi_value) -> napi_status;
583      fn napi_is_date(env: napi_env, value: napi_value, is_date: *mut bool) -> napi_status;
584      fn napi_get_date_value(env: napi_env, value: napi_value, result: *mut f64) -> napi_status;
585      fn napi_add_finalizer(
586        env: napi_env,
587        js_object: napi_value,
588        native_object: *mut c_void,
589        finalize_cb: napi_finalize,
590        finalize_hint: *mut c_void,
591        result: *mut napi_ref,
592      ) -> napi_status;
593    }
594  );
595}
596
597#[cfg(feature = "napi6")]
598mod napi6 {
599  use super::super::types::*;
600  use std::os::raw::{c_int, c_void};
601
602  generate!(
603    extern "C" {
604      fn napi_create_bigint_int64(
605        env: napi_env,
606        value: i64,
607        result: *mut napi_value,
608      ) -> napi_status;
609      fn napi_create_bigint_uint64(
610        env: napi_env,
611        value: u64,
612        result: *mut napi_value,
613      ) -> napi_status;
614      fn napi_create_bigint_words(
615        env: napi_env,
616        sign_bit: c_int,
617        word_count: usize,
618        words: *const u64,
619        result: *mut napi_value,
620      ) -> napi_status;
621      fn napi_get_value_bigint_int64(
622        env: napi_env,
623        value: napi_value,
624        result: *mut i64,
625        lossless: *mut bool,
626      ) -> napi_status;
627      fn napi_get_value_bigint_uint64(
628        env: napi_env,
629        value: napi_value,
630        result: *mut u64,
631        lossless: *mut bool,
632      ) -> napi_status;
633      fn napi_get_value_bigint_words(
634        env: napi_env,
635        value: napi_value,
636        sign_bit: *mut c_int,
637        word_count: *mut usize,
638        words: *mut u64,
639      ) -> napi_status;
640      fn napi_get_all_property_names(
641        env: napi_env,
642        object: napi_value,
643        key_mode: napi_key_collection_mode,
644        key_filter: napi_key_filter,
645        key_conversion: napi_key_conversion,
646        result: *mut napi_value,
647      ) -> napi_status;
648      fn napi_set_instance_data(
649        env: napi_env,
650        data: *mut c_void,
651        finalize_cb: napi_finalize,
652        finalize_hint: *mut c_void,
653      ) -> napi_status;
654      fn napi_get_instance_data(env: napi_env, data: *mut *mut c_void) -> napi_status;
655    }
656  );
657}
658
659#[cfg(feature = "napi7")]
660mod napi7 {
661  use super::super::types::*;
662
663  generate!(
664    extern "C" {
665      fn napi_detach_arraybuffer(env: napi_env, arraybuffer: napi_value) -> napi_status;
666      fn napi_is_detached_arraybuffer(
667        env: napi_env,
668        value: napi_value,
669        result: *mut bool,
670      ) -> napi_status;
671    }
672  );
673}
674
675#[cfg(feature = "napi8")]
676mod napi8 {
677  use std::os::raw::c_void;
678
679  use super::super::types::*;
680
681  generate!(
682    extern "C" {
683      fn napi_add_async_cleanup_hook(
684        env: napi_env,
685        hook: napi_async_cleanup_hook,
686        arg: *mut c_void,
687        remove_handle: *mut napi_async_cleanup_hook_handle,
688      ) -> napi_status;
689
690      fn napi_remove_async_cleanup_hook(
691        remove_handle: napi_async_cleanup_hook_handle,
692      ) -> napi_status;
693
694      fn napi_object_freeze(env: napi_env, object: napi_value) -> napi_status;
695
696      fn napi_object_seal(env: napi_env, object: napi_value) -> napi_status;
697    }
698  );
699}
700
701#[cfg(feature = "napi9")]
702mod napi9 {
703  use std::os::raw::c_char;
704
705  use super::super::types::*;
706
707  generate!(
708    extern "C" {
709      fn node_api_symbol_for(
710        env: napi_env,
711        utf8name: *const c_char,
712        length: usize,
713        result: *mut napi_value,
714      ) -> napi_status;
715      fn node_api_get_module_file_name(env: napi_env, result: *mut *const c_char) -> napi_status;
716      fn node_api_create_syntax_error(
717        env: napi_env,
718        code: napi_value,
719        msg: napi_value,
720        result: *mut napi_value,
721      ) -> napi_status;
722      fn node_api_throw_syntax_error(
723        env: napi_env,
724        code: *const c_char,
725        msg: *const c_char,
726      ) -> napi_status;
727    }
728  );
729}
730
731#[cfg(feature = "experimental")]
732mod experimental {
733  use std::os::raw::{c_char, c_void};
734
735  use super::super::types::*;
736
737  generate!(
738    extern "C" {
739      fn node_api_create_external_string_latin1(
740        env: napi_env,
741        str_: *const c_char,
742        length: usize,
743        napi_finalize: napi_finalize,
744        finalize_hint: *mut c_void,
745        result: *mut napi_value,
746        copied: *mut bool,
747      ) -> napi_status;
748
749      fn node_api_create_external_string_utf16(
750        env: napi_env,
751        str_: *const u16,
752        length: usize,
753        napi_finalize: napi_finalize,
754        finalize_hint: *mut c_void,
755        result: *mut napi_value,
756        copied: *mut bool,
757      ) -> napi_status;
758    }
759  );
760}
761
762#[cfg(feature = "experimental")]
763pub use experimental::*;
764
765pub use napi1::*;
766#[cfg(feature = "napi2")]
767pub use napi2::*;
768#[cfg(feature = "napi3")]
769pub use napi3::*;
770#[cfg(feature = "napi4")]
771pub use napi4::*;
772#[cfg(feature = "napi5")]
773pub use napi5::*;
774#[cfg(feature = "napi6")]
775pub use napi6::*;
776#[cfg(feature = "napi7")]
777pub use napi7::*;
778#[cfg(feature = "napi8")]
779pub use napi8::*;
780#[cfg(feature = "napi9")]
781pub use napi9::*;
782
783#[cfg(any(windows, feature = "dyn-symbols"))]
784pub(super) unsafe fn load_all() -> Result<libloading::Library, libloading::Error> {
785  #[cfg(windows)]
786  let host = libloading::os::windows::Library::this()?.into();
787
788  #[cfg(unix)]
789  let host = libloading::os::unix::Library::this().into();
790
791  napi1::load(&host)?;
792  #[cfg(feature = "napi2")]
793  napi2::load(&host)?;
794  #[cfg(feature = "napi3")]
795  napi3::load(&host)?;
796  #[cfg(feature = "napi4")]
797  napi4::load(&host)?;
798  #[cfg(feature = "napi5")]
799  napi5::load(&host)?;
800  #[cfg(feature = "napi6")]
801  napi6::load(&host)?;
802  #[cfg(feature = "napi7")]
803  napi7::load(&host)?;
804  #[cfg(feature = "napi8")]
805  napi8::load(&host)?;
806  #[cfg(feature = "napi9")]
807  napi9::load(&host)?;
808  #[cfg(feature = "experimental")]
809  experimental::load(&host)?;
810  Ok(host)
811}