bare_rust_ffi/
lib.rs

1#![allow(non_camel_case_types)]
2
3use std::ffi::c_void;
4use std::option::Option;
5use std::os::raw::{c_char, c_double, c_int, c_uchar};
6
7#[repr(C)]
8#[derive(Debug, Copy, Clone)]
9pub struct js_env_t {
10    _private: [u8; 0],
11}
12
13#[repr(C)]
14#[derive(Debug, Copy, Clone)]
15pub struct js_handle_scope_t {
16    _private: [u8; 0],
17}
18
19#[repr(C)]
20#[derive(Debug, Copy, Clone)]
21pub struct js_escapable_handle_scope_t {
22    _private: [u8; 0],
23}
24
25#[repr(C)]
26#[derive(Debug, Copy, Clone)]
27pub struct js_context_t {
28    _private: [u8; 0],
29}
30
31#[repr(C)]
32#[derive(Debug, Copy, Clone)]
33pub struct js_value_t {
34    _private: [u8; 0],
35}
36
37#[repr(C)]
38#[derive(Debug, Copy, Clone)]
39pub struct js_ref_t {
40    _private: [u8; 0],
41}
42
43#[repr(C)]
44#[derive(Debug, Copy, Clone)]
45pub struct js_deferred_t {
46    _private: [u8; 0],
47}
48
49#[repr(C)]
50#[derive(Debug, Copy, Clone)]
51pub struct js_callback_info_t {
52    _private: [u8; 0],
53}
54
55#[repr(C)]
56#[derive(Debug, Copy, Clone)]
57pub struct js_arraybuffer_backing_store_t {
58    _private: [u8; 0],
59}
60
61#[repr(C)]
62#[derive(Debug, Copy, Clone)]
63pub struct js_property_descriptor_t {
64    pub version: c_int,
65    pub name: *mut js_value_t,
66    pub data: *mut c_void,
67    pub attributes: c_int,
68    pub method: js_function_cb,
69    pub getter: js_function_cb,
70    pub setter: js_function_cb,
71    pub value: *mut js_value_t,
72}
73
74#[repr(C)]
75#[derive(Debug, Copy, Clone)]
76pub struct js_delegate_callbacks_t {
77    pub version: c_int,
78    pub get: js_delegate_get_cb,
79    pub has: js_delegate_has_cb,
80    pub set: js_delegate_set_cb,
81    pub delete_property: js_delegate_delete_property_cb,
82    pub own_keys: js_delegate_own_keys_cb,
83}
84
85#[repr(C)]
86#[derive(Debug, Copy, Clone)]
87pub struct js_type_tag_t {
88    pub lower: u64,
89    pub upper: u64,
90}
91
92#[repr(C)]
93#[derive(Debug, Copy, Clone)]
94pub struct js_callback_signature_t {
95    pub version: c_int,
96    pub result: c_int,
97    pub args_len: usize,
98    pub args: *mut c_int,
99}
100
101pub type js_function_cb = Option<
102    unsafe extern "C" fn(env: *mut js_env_t, info: *mut js_callback_info_t) -> *mut js_value_t,
103>;
104
105pub type js_finalize_cb =
106    Option<unsafe extern "C" fn(env: *mut js_env_t, data: *mut c_void, finalize_hint: *mut c_void)>;
107
108pub type js_delegate_get_cb = Option<
109    unsafe extern "C" fn(
110        env: *mut js_env_t,
111        property: *mut js_value_t,
112        data: *mut c_void,
113    ) -> *mut js_value_t,
114>;
115
116pub type js_delegate_has_cb = Option<
117    unsafe extern "C" fn(env: *mut js_env_t, property: *mut js_value_t, data: *mut c_void) -> bool,
118>;
119
120pub type js_delegate_set_cb = Option<
121    unsafe extern "C" fn(
122        env: *mut js_env_t,
123        property: *mut js_value_t,
124        value: *mut js_value_t,
125        data: *mut c_void,
126    ) -> bool,
127>;
128
129pub type js_delegate_delete_property_cb = Option<
130    unsafe extern "C" fn(env: *mut js_env_t, property: *mut js_value_t, data: *mut c_void) -> bool,
131>;
132
133pub type js_delegate_own_keys_cb =
134    Option<unsafe extern "C" fn(arg1: *mut js_env_t, data: *mut c_void) -> *mut js_value_t>;
135
136pub const JS_PENDING_EXCEPTION: c_int = -1;
137pub const JS_UNCAUGHT_EXCEPTION: c_int = -2;
138
139#[repr(C)]
140#[derive(Debug, Copy, Clone)]
141pub enum js_value_type_t {
142    js_undefined = 0,
143    js_null = 1,
144    js_boolean = 2,
145    js_number = 3,
146    js_string = 4,
147    js_symbol = 5,
148    js_object = 6,
149    js_function = 7,
150    js_external = 8,
151    js_bigint = 9,
152}
153
154#[repr(C)]
155#[derive(Debug, Copy, Clone)]
156pub enum js_typedarray_type_t {
157    js_int8array = 0,
158    js_uint8array = 1,
159    js_uint8clampedarray = 2,
160    js_int16array = 3,
161    js_uint16array = 4,
162    js_int32array = 5,
163    js_uint32array = 6,
164    js_float16array = 11,
165    js_float32array = 7,
166    js_float64array = 8,
167    js_bigint64array = 9,
168    js_biguint64array = 10,
169}
170
171#[repr(C)]
172#[derive(Debug, Copy, Clone)]
173pub enum js_promise_state_t {
174    js_promise_pending = 0,
175    js_promise_fulfilled = 1,
176    js_promise_rejected = 2,
177}
178
179#[repr(C)]
180#[derive(Debug, Copy, Clone)]
181pub enum js_key_collection_mode_t {
182    js_key_include_prototypes = 0,
183    js_key_own_only = 1,
184}
185
186#[repr(C)]
187#[derive(Debug, Copy, Clone)]
188pub enum js_key_conversion_mode_t {
189    js_key_convert_to_string = 0,
190    js_key_keep_numbers = 1,
191}
192
193#[repr(C)]
194#[derive(Debug, Copy, Clone)]
195pub enum js_property_filter_t {
196    js_property_all_properties = 0,
197    js_property_only_writable = 1,
198    js_property_only_enumerable = 1 << 1,
199    js_property_only_configurable = 1 << 2,
200    js_property_skip_strings = 1 << 3,
201    js_property_skip_symbols = 1 << 4,
202}
203
204#[repr(C)]
205#[derive(Debug, Copy, Clone)]
206pub enum js_index_filter_t {
207    js_index_include_indices = 0,
208    js_index_skip_indices = 1,
209}
210
211unsafe extern "C" {
212    pub fn js_open_handle_scope(env: *mut js_env_t, result: *mut *mut js_handle_scope_t) -> c_int;
213
214    pub fn js_close_handle_scope(env: *mut js_env_t, scope: *mut js_handle_scope_t) -> c_int;
215
216    pub fn js_open_escapable_handle_scope(
217        env: *mut js_env_t,
218        result: *mut *mut js_escapable_handle_scope_t,
219    ) -> c_int;
220
221    pub fn js_close_escapable_handle_scope(
222        env: *mut js_env_t,
223        scope: *mut js_escapable_handle_scope_t,
224    ) -> c_int;
225
226    pub fn js_escape_handle(
227        env: *mut js_env_t,
228        scope: *mut js_escapable_handle_scope_t,
229        escapee: *mut js_value_t,
230        result: *mut *mut js_value_t,
231    ) -> c_int;
232
233    pub fn js_create_context(env: *mut js_env_t, result: *mut *mut js_context_t) -> c_int;
234
235    pub fn js_destroy_context(env: *mut js_env_t, context: *mut js_context_t) -> c_int;
236
237    pub fn js_enter_context(env: *mut js_env_t, context: *mut js_context_t) -> c_int;
238
239    pub fn js_exit_context(env: *mut js_env_t, context: *mut js_context_t) -> c_int;
240
241    pub fn js_get_bindings(env: *mut js_env_t, result: *mut *mut js_value_t) -> c_int;
242
243    pub fn js_run_script(
244        env: *mut js_env_t,
245        file: *const c_char,
246        len: usize,
247        offset: c_int,
248        source: *mut js_value_t,
249        result: *mut *mut js_value_t,
250    ) -> c_int;
251
252    pub fn js_create_reference(
253        env: *mut js_env_t,
254        value: *mut js_value_t,
255        count: u32,
256        result: *mut *mut js_ref_t,
257    ) -> c_int;
258
259    pub fn js_delete_reference(env: *mut js_env_t, reference: *mut js_ref_t) -> c_int;
260
261    pub fn js_reference_ref(
262        env: *mut js_env_t,
263        reference: *mut js_ref_t,
264        result: *mut u32,
265    ) -> c_int;
266
267    pub fn js_reference_unref(
268        env: *mut js_env_t,
269        reference: *mut js_ref_t,
270        result: *mut u32,
271    ) -> c_int;
272
273    pub fn js_get_reference_value(
274        env: *mut js_env_t,
275        reference: *mut js_ref_t,
276        result: *mut *mut js_value_t,
277    ) -> c_int;
278
279    pub fn js_define_class(
280        env: *mut js_env_t,
281        name: *const c_char,
282        len: usize,
283        constructor: js_function_cb,
284        data: *mut c_void,
285        properties: *const js_property_descriptor_t,
286        properties_len: usize,
287        result: *mut *mut js_value_t,
288    ) -> c_int;
289
290    pub fn js_define_properties(
291        env: *mut js_env_t,
292        object: *mut js_value_t,
293        properties: *const js_property_descriptor_t,
294        properties_len: usize,
295    ) -> c_int;
296
297    pub fn js_wrap(
298        env: *mut js_env_t,
299        object: *mut js_value_t,
300        data: *mut c_void,
301        finalize_cb: js_finalize_cb,
302        finalize_hint: *mut c_void,
303        result: *mut *mut js_ref_t,
304    ) -> c_int;
305
306    pub fn js_unwrap(
307        env: *mut js_env_t,
308        object: *mut js_value_t,
309        result: *mut *mut c_void,
310    ) -> c_int;
311
312    pub fn js_remove_wrap(
313        env: *mut js_env_t,
314        object: *mut js_value_t,
315        result: *mut *mut c_void,
316    ) -> c_int;
317
318    pub fn js_create_delegate(
319        env: *mut js_env_t,
320        callbacks: *const js_delegate_callbacks_t,
321        data: *mut c_void,
322        finalize_cb: js_finalize_cb,
323        finalize_hint: *mut c_void,
324        result: *mut *mut js_value_t,
325    ) -> c_int;
326
327    pub fn js_add_finalizer(
328        env: *mut js_env_t,
329        object: *mut js_value_t,
330        data: *mut c_void,
331        finalize_cb: js_finalize_cb,
332        finalize_hint: *mut c_void,
333        result: *mut *mut js_ref_t,
334    ) -> c_int;
335
336    pub fn js_add_type_tag(
337        env: *mut js_env_t,
338        object: *mut js_value_t,
339        tag: *const js_type_tag_t,
340    ) -> c_int;
341
342    pub fn js_check_type_tag(
343        env: *mut js_env_t,
344        object: *mut js_value_t,
345        tag: *const js_type_tag_t,
346        result: *mut bool,
347    ) -> c_int;
348
349    pub fn js_create_int32(env: *mut js_env_t, value: i32, result: *mut *mut js_value_t) -> c_int;
350
351    pub fn js_create_uint32(env: *mut js_env_t, value: u32, result: *mut *mut js_value_t) -> c_int;
352
353    pub fn js_create_int64(env: *mut js_env_t, value: i64, result: *mut *mut js_value_t) -> c_int;
354
355    pub fn js_create_double(
356        env: *mut js_env_t,
357        value: c_double,
358        result: *mut *mut js_value_t,
359    ) -> c_int;
360
361    pub fn js_create_bigint_int64(
362        env: *mut js_env_t,
363        value: i64,
364        result: *mut *mut js_value_t,
365    ) -> c_int;
366
367    pub fn js_create_bigint_uint64(
368        env: *mut js_env_t,
369        value: u64,
370        result: *mut *mut js_value_t,
371    ) -> c_int;
372
373    pub fn js_create_string_utf8(
374        env: *mut js_env_t,
375        string: *const c_uchar,
376        len: usize,
377        result: *mut *mut js_value_t,
378    ) -> c_int;
379
380    pub fn js_create_external_string_utf8(
381        env: *mut js_env_t,
382        string: *mut c_uchar,
383        len: usize,
384        finalize_cb: js_finalize_cb,
385        finalize_hint: *mut c_void,
386        result: *mut *mut js_value_t,
387        copied: *mut bool,
388    ) -> c_int;
389
390    pub fn js_create_property_key_utf8(
391        env: *mut js_env_t,
392        string: *const c_uchar,
393        len: usize,
394        result: *mut *mut js_value_t,
395    ) -> c_int;
396
397    pub fn js_create_symbol(
398        env: *mut js_env_t,
399        description: *mut js_value_t,
400        result: *mut *mut js_value_t,
401    ) -> c_int;
402
403    pub fn js_symbol_for(
404        env: *mut js_env_t,
405        description: *const c_char,
406        len: usize,
407        result: *mut *mut js_value_t,
408    ) -> c_int;
409
410    pub fn js_create_object(env: *mut js_env_t, result: *mut *mut js_value_t) -> c_int;
411
412    pub fn js_create_function(
413        env: *mut js_env_t,
414        name: *const c_char,
415        len: usize,
416        cb: js_function_cb,
417        data: *mut c_void,
418        result: *mut *mut js_value_t,
419    ) -> c_int;
420
421    pub fn js_create_function_with_source(
422        env: *mut js_env_t,
423        name: *const c_char,
424        name_len: usize,
425        file: *const c_char,
426        file_len: usize,
427        args: *const *mut js_value_t,
428        args_len: usize,
429        offset: c_int,
430        source: *mut js_value_t,
431        result: *mut *mut js_value_t,
432    ) -> c_int;
433
434    pub fn js_create_typed_function(
435        env: *mut js_env_t,
436        name: *const c_char,
437        len: usize,
438        cb: js_function_cb,
439        signature: *const js_callback_signature_t,
440        address: *const c_void,
441        data: *mut c_void,
442        result: *mut *mut js_value_t,
443    ) -> c_int;
444
445    pub fn js_create_array(env: *mut js_env_t, result: *mut *mut js_value_t) -> c_int;
446
447    pub fn js_create_array_with_length(
448        env: *mut js_env_t,
449        len: usize,
450        result: *mut *mut js_value_t,
451    ) -> c_int;
452
453    pub fn js_create_external(
454        env: *mut js_env_t,
455        data: *mut c_void,
456        finalize_cb: js_finalize_cb,
457        finalize_hint: *mut c_void,
458        result: *mut *mut js_value_t,
459    ) -> c_int;
460
461    pub fn js_create_error(
462        env: *mut js_env_t,
463        code: *mut js_value_t,
464        message: *mut js_value_t,
465        result: *mut *mut js_value_t,
466    ) -> c_int;
467
468    pub fn js_create_type_error(
469        env: *mut js_env_t,
470        code: *mut js_value_t,
471        message: *mut js_value_t,
472        result: *mut *mut js_value_t,
473    ) -> c_int;
474
475    pub fn js_create_range_error(
476        env: *mut js_env_t,
477        code: *mut js_value_t,
478        message: *mut js_value_t,
479        result: *mut *mut js_value_t,
480    ) -> c_int;
481
482    pub fn js_create_syntax_error(
483        env: *mut js_env_t,
484        code: *mut js_value_t,
485        message: *mut js_value_t,
486        result: *mut *mut js_value_t,
487    ) -> c_int;
488
489    pub fn js_create_reference_error(
490        env: *mut js_env_t,
491        code: *mut js_value_t,
492        message: *mut js_value_t,
493        result: *mut *mut js_value_t,
494    ) -> c_int;
495
496    pub fn js_create_promise(
497        env: *mut js_env_t,
498        deferred: *mut *mut js_deferred_t,
499        promise: *mut *mut js_value_t,
500    ) -> c_int;
501
502    pub fn js_resolve_deferred(
503        env: *mut js_env_t,
504        deferred: *mut js_deferred_t,
505        resolution: *mut js_value_t,
506    ) -> c_int;
507
508    pub fn js_reject_deferred(
509        env: *mut js_env_t,
510        deferred: *mut js_deferred_t,
511        resolution: *mut js_value_t,
512    ) -> c_int;
513
514    pub fn js_get_promise_state(
515        env: *mut js_env_t,
516        promise: *mut js_value_t,
517        result: *mut js_promise_state_t,
518    ) -> c_int;
519
520    pub fn js_get_promise_result(
521        env: *mut js_env_t,
522        promise: *mut js_value_t,
523        result: *mut *mut js_value_t,
524    ) -> c_int;
525
526    pub fn js_create_arraybuffer(
527        env: *mut js_env_t,
528        len: usize,
529        data: *mut *mut c_void,
530        result: *mut *mut js_value_t,
531    ) -> c_int;
532
533    pub fn js_create_arraybuffer_with_backing_store(
534        env: *mut js_env_t,
535        backing_store: *mut js_arraybuffer_backing_store_t,
536        data: *mut *mut c_void,
537        len: *mut usize,
538        result: *mut *mut js_value_t,
539    ) -> c_int;
540
541    pub fn js_create_unsafe_arraybuffer(
542        env: *mut js_env_t,
543        len: usize,
544        data: *mut *mut c_void,
545        result: *mut *mut js_value_t,
546    ) -> c_int;
547
548    pub fn js_create_external_arraybuffer(
549        env: *mut js_env_t,
550        data: *mut c_void,
551        len: usize,
552        finalize_cb: js_finalize_cb,
553        finalize_hint: *mut c_void,
554        result: *mut *mut js_value_t,
555    ) -> c_int;
556
557    pub fn js_detach_arraybuffer(env: *mut js_env_t, arraybuffer: *mut js_value_t) -> c_int;
558
559    pub fn js_get_arraybuffer_backing_store(
560        env: *mut js_env_t,
561        arraybuffer: *mut js_value_t,
562        result: *mut *mut js_arraybuffer_backing_store_t,
563    ) -> c_int;
564
565    pub fn js_create_sharedarraybuffer(
566        env: *mut js_env_t,
567        len: usize,
568        data: *mut *mut c_void,
569        result: *mut *mut js_value_t,
570    ) -> c_int;
571
572    pub fn js_create_sharedarraybuffer_with_backing_store(
573        env: *mut js_env_t,
574        backing_store: *mut js_arraybuffer_backing_store_t,
575        data: *mut *mut c_void,
576        len: *mut usize,
577        result: *mut *mut js_value_t,
578    ) -> c_int;
579
580    pub fn js_create_unsafe_sharedarraybuffer(
581        env: *mut js_env_t,
582        len: usize,
583        data: *mut *mut c_void,
584        result: *mut *mut js_value_t,
585    ) -> c_int;
586
587    pub fn js_create_external_sharedarraybuffer(
588        env: *mut js_env_t,
589        data: *mut c_void,
590        len: usize,
591        finalize_cb: js_finalize_cb,
592        finalize_hint: *mut c_void,
593        result: *mut *mut js_value_t,
594    ) -> c_int;
595
596    pub fn js_get_sharedarraybuffer_backing_store(
597        env: *mut js_env_t,
598        sharedarraybuffer: *mut js_value_t,
599        result: *mut *mut js_arraybuffer_backing_store_t,
600    ) -> c_int;
601
602    pub fn js_release_arraybuffer_backing_store(
603        env: *mut js_env_t,
604        backing_store: *mut js_arraybuffer_backing_store_t,
605    ) -> c_int;
606
607    pub fn js_create_typedarray(
608        env: *mut js_env_t,
609        variant: js_typedarray_type_t,
610        len: usize,
611        arraybuffer: *mut js_value_t,
612        offset: usize,
613        result: *mut *mut js_value_t,
614    ) -> c_int;
615
616    pub fn js_create_dataview(
617        env: *mut js_env_t,
618        len: usize,
619        arraybuffer: *mut js_value_t,
620        offset: usize,
621        result: *mut *mut js_value_t,
622    ) -> c_int;
623
624    pub fn js_coerce_to_boolean(
625        env: *mut js_env_t,
626        value: *mut js_value_t,
627        result: *mut *mut js_value_t,
628    ) -> c_int;
629
630    pub fn js_coerce_to_number(
631        env: *mut js_env_t,
632        value: *mut js_value_t,
633        result: *mut *mut js_value_t,
634    ) -> c_int;
635
636    pub fn js_coerce_to_string(
637        env: *mut js_env_t,
638        value: *mut js_value_t,
639        result: *mut *mut js_value_t,
640    ) -> c_int;
641
642    pub fn js_coerce_to_object(
643        env: *mut js_env_t,
644        value: *mut js_value_t,
645        result: *mut *mut js_value_t,
646    ) -> c_int;
647
648    pub fn js_typeof(
649        env: *mut js_env_t,
650        value: *mut js_value_t,
651        result: *mut js_value_type_t,
652    ) -> c_int;
653
654    pub fn js_instanceof(
655        env: *mut js_env_t,
656        object: *mut js_value_t,
657        constructor: *mut js_value_t,
658        result: *mut bool,
659    ) -> c_int;
660
661    pub fn js_is_undefined(env: *mut js_env_t, value: *mut js_value_t, result: *mut bool) -> c_int;
662
663    pub fn js_is_null(env: *mut js_env_t, value: *mut js_value_t, result: *mut bool) -> c_int;
664
665    pub fn js_is_boolean(env: *mut js_env_t, value: *mut js_value_t, result: *mut bool) -> c_int;
666
667    pub fn js_is_number(env: *mut js_env_t, value: *mut js_value_t, result: *mut bool) -> c_int;
668
669    pub fn js_is_int32(env: *mut js_env_t, value: *mut js_value_t, result: *mut bool) -> c_int;
670
671    pub fn js_is_uint32(env: *mut js_env_t, value: *mut js_value_t, result: *mut bool) -> c_int;
672
673    pub fn js_is_string(env: *mut js_env_t, value: *mut js_value_t, result: *mut bool) -> c_int;
674
675    pub fn js_is_symbol(env: *mut js_env_t, value: *mut js_value_t, result: *mut bool) -> c_int;
676
677    pub fn js_is_object(env: *mut js_env_t, value: *mut js_value_t, result: *mut bool) -> c_int;
678
679    pub fn js_is_function(env: *mut js_env_t, value: *mut js_value_t, result: *mut bool) -> c_int;
680
681    pub fn js_is_async_function(
682        env: *mut js_env_t,
683        value: *mut js_value_t,
684        result: *mut bool,
685    ) -> c_int;
686
687    pub fn js_is_generator_function(
688        env: *mut js_env_t,
689        value: *mut js_value_t,
690        result: *mut bool,
691    ) -> c_int;
692
693    pub fn js_is_generator(env: *mut js_env_t, value: *mut js_value_t, result: *mut bool) -> c_int;
694
695    pub fn js_is_arguments(env: *mut js_env_t, value: *mut js_value_t, result: *mut bool) -> c_int;
696
697    pub fn js_is_array(env: *mut js_env_t, value: *mut js_value_t, result: *mut bool) -> c_int;
698
699    pub fn js_is_external(env: *mut js_env_t, value: *mut js_value_t, result: *mut bool) -> c_int;
700
701    pub fn js_is_wrapped(env: *mut js_env_t, value: *mut js_value_t, result: *mut bool) -> c_int;
702
703    pub fn js_is_delegate(env: *mut js_env_t, value: *mut js_value_t, result: *mut bool) -> c_int;
704
705    pub fn js_is_bigint(env: *mut js_env_t, value: *mut js_value_t, result: *mut bool) -> c_int;
706
707    pub fn js_is_date(env: *mut js_env_t, value: *mut js_value_t, result: *mut bool) -> c_int;
708
709    pub fn js_is_regexp(env: *mut js_env_t, value: *mut js_value_t, result: *mut bool) -> c_int;
710
711    pub fn js_is_error(env: *mut js_env_t, value: *mut js_value_t, result: *mut bool) -> c_int;
712
713    pub fn js_is_promise(env: *mut js_env_t, value: *mut js_value_t, result: *mut bool) -> c_int;
714
715    pub fn js_is_proxy(env: *mut js_env_t, value: *mut js_value_t, result: *mut bool) -> c_int;
716
717    pub fn js_is_map(env: *mut js_env_t, value: *mut js_value_t, result: *mut bool) -> c_int;
718
719    pub fn js_is_map_iterator(
720        env: *mut js_env_t,
721        value: *mut js_value_t,
722        result: *mut bool,
723    ) -> c_int;
724
725    pub fn js_is_set(env: *mut js_env_t, value: *mut js_value_t, result: *mut bool) -> c_int;
726
727    pub fn js_is_set_iterator(
728        env: *mut js_env_t,
729        value: *mut js_value_t,
730        result: *mut bool,
731    ) -> c_int;
732
733    pub fn js_is_weak_map(env: *mut js_env_t, value: *mut js_value_t, result: *mut bool) -> c_int;
734
735    pub fn js_is_weak_set(env: *mut js_env_t, value: *mut js_value_t, result: *mut bool) -> c_int;
736
737    pub fn js_is_weak_ref(env: *mut js_env_t, value: *mut js_value_t, result: *mut bool) -> c_int;
738
739    pub fn js_is_arraybuffer(
740        env: *mut js_env_t,
741        value: *mut js_value_t,
742        result: *mut bool,
743    ) -> c_int;
744
745    pub fn js_is_detached_arraybuffer(
746        env: *mut js_env_t,
747        value: *mut js_value_t,
748        result: *mut bool,
749    ) -> c_int;
750
751    pub fn js_is_sharedarraybuffer(
752        env: *mut js_env_t,
753        value: *mut js_value_t,
754        result: *mut bool,
755    ) -> c_int;
756
757    pub fn js_is_typedarray(env: *mut js_env_t, value: *mut js_value_t, result: *mut bool)
758        -> c_int;
759
760    pub fn js_is_int8array(env: *mut js_env_t, value: *mut js_value_t, result: *mut bool) -> c_int;
761
762    pub fn js_is_uint8array(env: *mut js_env_t, value: *mut js_value_t, result: *mut bool)
763        -> c_int;
764
765    pub fn js_is_uint8clampedarray(
766        env: *mut js_env_t,
767        value: *mut js_value_t,
768        result: *mut bool,
769    ) -> c_int;
770
771    pub fn js_is_int16array(env: *mut js_env_t, value: *mut js_value_t, result: *mut bool)
772        -> c_int;
773
774    pub fn js_is_uint16array(
775        env: *mut js_env_t,
776        value: *mut js_value_t,
777        result: *mut bool,
778    ) -> c_int;
779
780    pub fn js_is_int32array(env: *mut js_env_t, value: *mut js_value_t, result: *mut bool)
781        -> c_int;
782
783    pub fn js_is_uint32array(
784        env: *mut js_env_t,
785        value: *mut js_value_t,
786        result: *mut bool,
787    ) -> c_int;
788
789    pub fn js_is_float16array(
790        env: *mut js_env_t,
791        value: *mut js_value_t,
792        result: *mut bool,
793    ) -> c_int;
794
795    pub fn js_is_float32array(
796        env: *mut js_env_t,
797        value: *mut js_value_t,
798        result: *mut bool,
799    ) -> c_int;
800
801    pub fn js_is_float64array(
802        env: *mut js_env_t,
803        value: *mut js_value_t,
804        result: *mut bool,
805    ) -> c_int;
806
807    pub fn js_is_bigint64array(
808        env: *mut js_env_t,
809        value: *mut js_value_t,
810        result: *mut bool,
811    ) -> c_int;
812
813    pub fn js_is_biguint64array(
814        env: *mut js_env_t,
815        value: *mut js_value_t,
816        result: *mut bool,
817    ) -> c_int;
818
819    pub fn js_is_dataview(env: *mut js_env_t, value: *mut js_value_t, result: *mut bool) -> c_int;
820
821    pub fn js_is_module_namespace(
822        env: *mut js_env_t,
823        value: *mut js_value_t,
824        result: *mut bool,
825    ) -> c_int;
826
827    pub fn js_strict_equals(
828        env: *mut js_env_t,
829        a: *mut js_value_t,
830        b: *mut js_value_t,
831        result: *mut bool,
832    ) -> c_int;
833
834    pub fn js_get_global(env: *mut js_env_t, result: *mut *mut js_value_t) -> c_int;
835
836    pub fn js_get_undefined(env: *mut js_env_t, result: *mut *mut js_value_t) -> c_int;
837
838    pub fn js_get_null(env: *mut js_env_t, result: *mut *mut js_value_t) -> c_int;
839
840    pub fn js_get_boolean(env: *mut js_env_t, value: bool, result: *mut *mut js_value_t) -> c_int;
841
842    pub fn js_get_value_bool(
843        env: *mut js_env_t,
844        value: *mut js_value_t,
845        result: *mut bool,
846    ) -> c_int;
847
848    pub fn js_get_value_int32(
849        env: *mut js_env_t,
850        value: *mut js_value_t,
851        result: *mut i32,
852    ) -> c_int;
853
854    pub fn js_get_value_uint32(
855        env: *mut js_env_t,
856        value: *mut js_value_t,
857        result: *mut u32,
858    ) -> c_int;
859
860    pub fn js_get_value_int64(
861        env: *mut js_env_t,
862        value: *mut js_value_t,
863        result: *mut i64,
864    ) -> c_int;
865
866    pub fn js_get_value_double(
867        env: *mut js_env_t,
868        value: *mut js_value_t,
869        result: *mut c_double,
870    ) -> c_int;
871
872    pub fn js_get_value_bigint_int64(
873        env: *mut js_env_t,
874        value: *mut js_value_t,
875        result: *mut i64,
876        lossless: *mut bool,
877    ) -> c_int;
878
879    pub fn js_get_value_bigint_uint64(
880        env: *mut js_env_t,
881        value: *mut js_value_t,
882        result: *mut u64,
883        lossless: *mut bool,
884    ) -> c_int;
885
886    pub fn js_get_value_string_utf8(
887        env: *mut js_env_t,
888        value: *mut js_value_t,
889        string: *mut c_uchar,
890        len: usize,
891        result: *mut usize,
892    ) -> c_int;
893
894    pub fn js_get_value_external(
895        env: *mut js_env_t,
896        value: *mut js_value_t,
897        result: *mut *mut c_void,
898    ) -> c_int;
899
900    pub fn js_get_value_date(
901        env: *mut js_env_t,
902        value: *mut js_value_t,
903        result: *mut c_double,
904    ) -> c_int;
905
906    pub fn js_get_array_length(
907        env: *mut js_env_t,
908        array: *mut js_value_t,
909        result: *mut u32,
910    ) -> c_int;
911
912    pub fn js_get_array_elements(
913        env: *mut js_env_t,
914        array: *mut js_value_t,
915        elements: *mut *mut js_value_t,
916        len: usize,
917        offset: usize,
918        result: *mut u32,
919    ) -> c_int;
920
921    pub fn js_set_array_elements(
922        env: *mut js_env_t,
923        array: *mut js_value_t,
924        elements: *mut *const js_value_t,
925        len: usize,
926        offset: usize,
927    ) -> c_int;
928
929    pub fn js_get_prototype(
930        env: *mut js_env_t,
931        object: *mut js_value_t,
932        result: *mut *mut js_value_t,
933    ) -> c_int;
934
935    pub fn js_get_property_names(
936        env: *mut js_env_t,
937        object: *mut js_value_t,
938        result: *mut *mut js_value_t,
939    ) -> c_int;
940
941    pub fn js_get_filtered_property_names(
942        env: *mut js_env_t,
943        object: *mut js_value_t,
944        mode: js_key_collection_mode_t,
945        property_filter: js_property_filter_t,
946        index_filter: js_index_filter_t,
947        key_conversion: js_key_conversion_mode_t,
948        result: *mut *mut js_value_t,
949    ) -> c_int;
950
951    pub fn js_get_property(
952        env: *mut js_env_t,
953        object: *mut js_value_t,
954        key: *mut js_value_t,
955        result: *mut *mut js_value_t,
956    ) -> c_int;
957
958    pub fn js_has_property(
959        env: *mut js_env_t,
960        object: *mut js_value_t,
961        key: *mut js_value_t,
962        result: *mut bool,
963    ) -> c_int;
964
965    pub fn js_has_own_property(
966        env: *mut js_env_t,
967        object: *mut js_value_t,
968        key: *mut js_value_t,
969        result: *mut bool,
970    ) -> c_int;
971
972    pub fn js_set_property(
973        env: *mut js_env_t,
974        object: *mut js_value_t,
975        key: *mut js_value_t,
976        value: *mut js_value_t,
977    ) -> c_int;
978
979    pub fn js_delete_property(
980        env: *mut js_env_t,
981        object: *mut js_value_t,
982        key: *mut js_value_t,
983        result: *mut bool,
984    ) -> c_int;
985
986    pub fn js_get_named_property(
987        env: *mut js_env_t,
988        object: *mut js_value_t,
989        name: *const c_char,
990        result: *mut *mut js_value_t,
991    ) -> c_int;
992
993    pub fn js_has_named_property(
994        env: *mut js_env_t,
995        object: *mut js_value_t,
996        name: *const c_char,
997        result: *mut bool,
998    ) -> c_int;
999
1000    pub fn js_set_named_property(
1001        env: *mut js_env_t,
1002        object: *mut js_value_t,
1003        name: *const c_char,
1004        value: *mut js_value_t,
1005    ) -> c_int;
1006
1007    pub fn js_delete_named_property(
1008        env: *mut js_env_t,
1009        object: *mut js_value_t,
1010        name: *const c_char,
1011        result: *mut bool,
1012    ) -> c_int;
1013
1014    pub fn js_get_element(
1015        env: *mut js_env_t,
1016        object: *mut js_value_t,
1017        index: u32,
1018        result: *mut *mut js_value_t,
1019    ) -> c_int;
1020
1021    pub fn js_has_element(
1022        env: *mut js_env_t,
1023        object: *mut js_value_t,
1024        index: u32,
1025        result: *mut bool,
1026    ) -> c_int;
1027
1028    pub fn js_set_element(
1029        env: *mut js_env_t,
1030        object: *mut js_value_t,
1031        index: u32,
1032        value: *mut js_value_t,
1033    ) -> c_int;
1034
1035    pub fn js_delete_element(
1036        env: *mut js_env_t,
1037        object: *mut js_value_t,
1038        index: u32,
1039        result: *mut bool,
1040    ) -> c_int;
1041}