javascriptcore6_sys/
lib.rs

1// This file was generated by gir (https://github.com/gtk-rs/gir)
2// from gir-files (https://github.com/gtk-rs/gir-files)
3// from webkit-gir-files
4// DO NOT EDIT
5
6#![allow(non_camel_case_types, non_upper_case_globals, non_snake_case)]
7#![allow(
8    clippy::approx_constant,
9    clippy::type_complexity,
10    clippy::unreadable_literal,
11    clippy::upper_case_acronyms
12)]
13#![cfg_attr(docsrs, feature(doc_cfg))]
14
15use glib_sys as glib;
16use gobject_sys as gobject;
17
18#[cfg(unix)]
19#[allow(unused_imports)]
20use libc::{dev_t, gid_t, pid_t, socklen_t, uid_t};
21#[allow(unused_imports)]
22use libc::{intptr_t, off_t, size_t, ssize_t, time_t, uintptr_t, FILE};
23#[allow(unused_imports)]
24use std::ffi::{
25    c_char, c_double, c_float, c_int, c_long, c_short, c_uchar, c_uint, c_ulong, c_ushort, c_void,
26};
27
28#[allow(unused_imports)]
29use glib::{gboolean, gconstpointer, gpointer, GType};
30
31// Enums
32pub type JSCCheckSyntaxMode = c_int;
33pub const JSC_CHECK_SYNTAX_MODE_SCRIPT: JSCCheckSyntaxMode = 0;
34pub const JSC_CHECK_SYNTAX_MODE_MODULE: JSCCheckSyntaxMode = 1;
35
36pub type JSCCheckSyntaxResult = c_int;
37pub const JSC_CHECK_SYNTAX_RESULT_SUCCESS: JSCCheckSyntaxResult = 0;
38pub const JSC_CHECK_SYNTAX_RESULT_RECOVERABLE_ERROR: JSCCheckSyntaxResult = 1;
39pub const JSC_CHECK_SYNTAX_RESULT_IRRECOVERABLE_ERROR: JSCCheckSyntaxResult = 2;
40pub const JSC_CHECK_SYNTAX_RESULT_UNTERMINATED_LITERAL_ERROR: JSCCheckSyntaxResult = 3;
41pub const JSC_CHECK_SYNTAX_RESULT_OUT_OF_MEMORY_ERROR: JSCCheckSyntaxResult = 4;
42pub const JSC_CHECK_SYNTAX_RESULT_STACK_OVERFLOW_ERROR: JSCCheckSyntaxResult = 5;
43
44pub type JSCOptionType = c_int;
45pub const JSC_OPTION_BOOLEAN: JSCOptionType = 0;
46pub const JSC_OPTION_INT: JSCOptionType = 1;
47pub const JSC_OPTION_UINT: JSCOptionType = 2;
48pub const JSC_OPTION_SIZE: JSCOptionType = 3;
49pub const JSC_OPTION_DOUBLE: JSCOptionType = 4;
50pub const JSC_OPTION_STRING: JSCOptionType = 5;
51pub const JSC_OPTION_RANGE_STRING: JSCOptionType = 6;
52
53pub type JSCTypedArrayType = c_int;
54pub const JSC_TYPED_ARRAY_NONE: JSCTypedArrayType = 0;
55pub const JSC_TYPED_ARRAY_INT8: JSCTypedArrayType = 1;
56pub const JSC_TYPED_ARRAY_INT16: JSCTypedArrayType = 2;
57pub const JSC_TYPED_ARRAY_INT32: JSCTypedArrayType = 3;
58pub const JSC_TYPED_ARRAY_INT64: JSCTypedArrayType = 4;
59pub const JSC_TYPED_ARRAY_UINT8: JSCTypedArrayType = 5;
60pub const JSC_TYPED_ARRAY_UINT8_CLAMPED: JSCTypedArrayType = 6;
61pub const JSC_TYPED_ARRAY_UINT16: JSCTypedArrayType = 7;
62pub const JSC_TYPED_ARRAY_UINT32: JSCTypedArrayType = 8;
63pub const JSC_TYPED_ARRAY_UINT64: JSCTypedArrayType = 9;
64pub const JSC_TYPED_ARRAY_FLOAT32: JSCTypedArrayType = 10;
65pub const JSC_TYPED_ARRAY_FLOAT64: JSCTypedArrayType = 11;
66
67// Constants
68pub const JSC_OPTIONS_USE_DFG: &[u8] = b"useDFGJIT\0";
69pub const JSC_OPTIONS_USE_FTL: &[u8] = b"useFTLJIT\0";
70pub const JSC_OPTIONS_USE_JIT: &[u8] = b"useJIT\0";
71pub const JSC_OPTIONS_USE_LLINT: &[u8] = b"useLLInt\0";
72
73// Flags
74pub type JSCValuePropertyFlags = c_uint;
75pub const JSC_VALUE_PROPERTY_CONFIGURABLE: JSCValuePropertyFlags = 1;
76pub const JSC_VALUE_PROPERTY_ENUMERABLE: JSCValuePropertyFlags = 2;
77pub const JSC_VALUE_PROPERTY_WRITABLE: JSCValuePropertyFlags = 4;
78
79// Callbacks
80pub type JSCClassDeletePropertyFunction = Option<
81    unsafe extern "C" fn(*mut JSCClass, *mut JSCContext, gpointer, *const c_char) -> gboolean,
82>;
83pub type JSCClassEnumeratePropertiesFunction =
84    Option<unsafe extern "C" fn(*mut JSCClass, *mut JSCContext, gpointer) -> *mut *mut c_char>;
85pub type JSCClassGetPropertyFunction = Option<
86    unsafe extern "C" fn(*mut JSCClass, *mut JSCContext, gpointer, *const c_char) -> *mut JSCValue,
87>;
88pub type JSCClassHasPropertyFunction = Option<
89    unsafe extern "C" fn(*mut JSCClass, *mut JSCContext, gpointer, *const c_char) -> gboolean,
90>;
91pub type JSCClassSetPropertyFunction = Option<
92    unsafe extern "C" fn(
93        *mut JSCClass,
94        *mut JSCContext,
95        gpointer,
96        *const c_char,
97        *mut JSCValue,
98    ) -> gboolean,
99>;
100pub type JSCExceptionHandler =
101    Option<unsafe extern "C" fn(*mut JSCContext, *mut JSCException, gpointer)>;
102pub type JSCExecutor = Option<unsafe extern "C" fn(*mut JSCValue, *mut JSCValue, gpointer)>;
103pub type JSCOptionsFunc =
104    Option<unsafe extern "C" fn(*const c_char, JSCOptionType, *const c_char, gpointer) -> gboolean>;
105
106// Records
107#[derive(Copy, Clone)]
108#[repr(C)]
109pub struct JSCClassClass {
110    pub parent_class: gobject::GObjectClass,
111}
112
113impl ::std::fmt::Debug for JSCClassClass {
114    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
115        f.debug_struct(&format!("JSCClassClass @ {self:p}"))
116            .field("parent_class", &self.parent_class)
117            .finish()
118    }
119}
120
121#[derive(Copy, Clone)]
122#[repr(C)]
123pub struct JSCClassVTable {
124    pub get_property: JSCClassGetPropertyFunction,
125    pub set_property: JSCClassSetPropertyFunction,
126    pub has_property: JSCClassHasPropertyFunction,
127    pub delete_property: JSCClassDeletePropertyFunction,
128    pub enumerate_properties: JSCClassEnumeratePropertiesFunction,
129    pub _jsc_reserved0: Option<unsafe extern "C" fn()>,
130    pub _jsc_reserved1: Option<unsafe extern "C" fn()>,
131    pub _jsc_reserved2: Option<unsafe extern "C" fn()>,
132    pub _jsc_reserved3: Option<unsafe extern "C" fn()>,
133    pub _jsc_reserved4: Option<unsafe extern "C" fn()>,
134    pub _jsc_reserved5: Option<unsafe extern "C" fn()>,
135    pub _jsc_reserved6: Option<unsafe extern "C" fn()>,
136    pub _jsc_reserved7: Option<unsafe extern "C" fn()>,
137}
138
139impl ::std::fmt::Debug for JSCClassVTable {
140    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
141        f.debug_struct(&format!("JSCClassVTable @ {self:p}"))
142            .field("get_property", &self.get_property)
143            .field("set_property", &self.set_property)
144            .field("has_property", &self.has_property)
145            .field("delete_property", &self.delete_property)
146            .field("enumerate_properties", &self.enumerate_properties)
147            .field("_jsc_reserved0", &self._jsc_reserved0)
148            .field("_jsc_reserved1", &self._jsc_reserved1)
149            .field("_jsc_reserved2", &self._jsc_reserved2)
150            .field("_jsc_reserved3", &self._jsc_reserved3)
151            .field("_jsc_reserved4", &self._jsc_reserved4)
152            .field("_jsc_reserved5", &self._jsc_reserved5)
153            .field("_jsc_reserved6", &self._jsc_reserved6)
154            .field("_jsc_reserved7", &self._jsc_reserved7)
155            .finish()
156    }
157}
158
159#[derive(Copy, Clone)]
160#[repr(C)]
161pub struct JSCContextClass {
162    pub parent_class: gobject::GObjectClass,
163}
164
165impl ::std::fmt::Debug for JSCContextClass {
166    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
167        f.debug_struct(&format!("JSCContextClass @ {self:p}"))
168            .field("parent_class", &self.parent_class)
169            .finish()
170    }
171}
172
173#[derive(Copy, Clone)]
174#[repr(C)]
175pub struct JSCExceptionClass {
176    pub parent_class: gobject::GObjectClass,
177}
178
179impl ::std::fmt::Debug for JSCExceptionClass {
180    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
181        f.debug_struct(&format!("JSCExceptionClass @ {self:p}"))
182            .field("parent_class", &self.parent_class)
183            .finish()
184    }
185}
186
187#[derive(Copy, Clone)]
188#[repr(C)]
189pub struct JSCValueClass {
190    pub parent_class: gobject::GObjectClass,
191}
192
193impl ::std::fmt::Debug for JSCValueClass {
194    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
195        f.debug_struct(&format!("JSCValueClass @ {self:p}"))
196            .field("parent_class", &self.parent_class)
197            .finish()
198    }
199}
200
201#[derive(Copy, Clone)]
202#[repr(C)]
203pub struct JSCVirtualMachineClass {
204    pub parent_class: gobject::GObjectClass,
205}
206
207impl ::std::fmt::Debug for JSCVirtualMachineClass {
208    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
209        f.debug_struct(&format!("JSCVirtualMachineClass @ {self:p}"))
210            .field("parent_class", &self.parent_class)
211            .finish()
212    }
213}
214
215#[derive(Copy, Clone)]
216#[repr(C)]
217pub struct JSCWeakValueClass {
218    pub parent_class: gobject::GObjectClass,
219}
220
221impl ::std::fmt::Debug for JSCWeakValueClass {
222    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
223        f.debug_struct(&format!("JSCWeakValueClass @ {self:p}"))
224            .field("parent_class", &self.parent_class)
225            .finish()
226    }
227}
228
229// Classes
230#[repr(C)]
231#[allow(dead_code)]
232pub struct JSCClass {
233    _data: [u8; 0],
234    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
235}
236
237impl ::std::fmt::Debug for JSCClass {
238    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
239        f.debug_struct(&format!("JSCClass @ {self:p}")).finish()
240    }
241}
242
243#[repr(C)]
244#[allow(dead_code)]
245pub struct JSCContext {
246    _data: [u8; 0],
247    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
248}
249
250impl ::std::fmt::Debug for JSCContext {
251    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
252        f.debug_struct(&format!("JSCContext @ {self:p}")).finish()
253    }
254}
255
256#[repr(C)]
257#[allow(dead_code)]
258pub struct JSCException {
259    _data: [u8; 0],
260    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
261}
262
263impl ::std::fmt::Debug for JSCException {
264    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
265        f.debug_struct(&format!("JSCException @ {self:p}")).finish()
266    }
267}
268
269#[repr(C)]
270#[allow(dead_code)]
271pub struct JSCValue {
272    _data: [u8; 0],
273    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
274}
275
276impl ::std::fmt::Debug for JSCValue {
277    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
278        f.debug_struct(&format!("JSCValue @ {self:p}")).finish()
279    }
280}
281
282#[repr(C)]
283#[allow(dead_code)]
284pub struct JSCVirtualMachine {
285    _data: [u8; 0],
286    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
287}
288
289impl ::std::fmt::Debug for JSCVirtualMachine {
290    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
291        f.debug_struct(&format!("JSCVirtualMachine @ {self:p}"))
292            .finish()
293    }
294}
295
296#[repr(C)]
297#[allow(dead_code)]
298pub struct JSCWeakValue {
299    _data: [u8; 0],
300    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
301}
302
303impl ::std::fmt::Debug for JSCWeakValue {
304    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
305        f.debug_struct(&format!("JSCWeakValue @ {self:p}")).finish()
306    }
307}
308
309extern "C" {
310
311    //=========================================================================
312    // JSCClass
313    //=========================================================================
314    pub fn jsc_class_get_type() -> GType;
315    pub fn jsc_class_add_constructor(
316        jsc_class: *mut JSCClass,
317        name: *const c_char,
318        callback: gobject::GCallback,
319        user_data: gpointer,
320        destroy_notify: glib::GDestroyNotify,
321        return_type: GType,
322        n_params: c_uint,
323        ...
324    ) -> *mut JSCValue;
325    pub fn jsc_class_add_constructor_variadic(
326        jsc_class: *mut JSCClass,
327        name: *const c_char,
328        callback: gobject::GCallback,
329        user_data: gpointer,
330        destroy_notify: glib::GDestroyNotify,
331        return_type: GType,
332    ) -> *mut JSCValue;
333    pub fn jsc_class_add_constructorv(
334        jsc_class: *mut JSCClass,
335        name: *const c_char,
336        callback: gobject::GCallback,
337        user_data: gpointer,
338        destroy_notify: glib::GDestroyNotify,
339        return_type: GType,
340        n_parameters: c_uint,
341        parameter_types: *mut GType,
342    ) -> *mut JSCValue;
343    pub fn jsc_class_add_method(
344        jsc_class: *mut JSCClass,
345        name: *const c_char,
346        callback: gobject::GCallback,
347        user_data: gpointer,
348        destroy_notify: glib::GDestroyNotify,
349        return_type: GType,
350        n_params: c_uint,
351        ...
352    );
353    pub fn jsc_class_add_method_variadic(
354        jsc_class: *mut JSCClass,
355        name: *const c_char,
356        callback: gobject::GCallback,
357        user_data: gpointer,
358        destroy_notify: glib::GDestroyNotify,
359        return_type: GType,
360    );
361    pub fn jsc_class_add_methodv(
362        jsc_class: *mut JSCClass,
363        name: *const c_char,
364        callback: gobject::GCallback,
365        user_data: gpointer,
366        destroy_notify: glib::GDestroyNotify,
367        return_type: GType,
368        n_parameters: c_uint,
369        parameter_types: *mut GType,
370    );
371    pub fn jsc_class_add_property(
372        jsc_class: *mut JSCClass,
373        name: *const c_char,
374        property_type: GType,
375        getter: gobject::GCallback,
376        setter: gobject::GCallback,
377        user_data: gpointer,
378        destroy_notify: glib::GDestroyNotify,
379    );
380    pub fn jsc_class_get_name(jsc_class: *mut JSCClass) -> *const c_char;
381    pub fn jsc_class_get_parent(jsc_class: *mut JSCClass) -> *mut JSCClass;
382
383    //=========================================================================
384    // JSCContext
385    //=========================================================================
386    pub fn jsc_context_get_type() -> GType;
387    pub fn jsc_context_new() -> *mut JSCContext;
388    pub fn jsc_context_new_with_virtual_machine(vm: *mut JSCVirtualMachine) -> *mut JSCContext;
389    pub fn jsc_context_get_current() -> *mut JSCContext;
390    pub fn jsc_context_check_syntax(
391        context: *mut JSCContext,
392        code: *const c_char,
393        length: ssize_t,
394        mode: JSCCheckSyntaxMode,
395        uri: *const c_char,
396        line_number: c_uint,
397        exception: *mut *mut JSCException,
398    ) -> JSCCheckSyntaxResult;
399    pub fn jsc_context_clear_exception(context: *mut JSCContext);
400    pub fn jsc_context_evaluate(
401        context: *mut JSCContext,
402        code: *const c_char,
403        length: ssize_t,
404    ) -> *mut JSCValue;
405    pub fn jsc_context_evaluate_in_object(
406        context: *mut JSCContext,
407        code: *const c_char,
408        length: ssize_t,
409        object_instance: gpointer,
410        object_class: *mut JSCClass,
411        uri: *const c_char,
412        line_number: c_uint,
413        object: *mut *mut JSCValue,
414    ) -> *mut JSCValue;
415    pub fn jsc_context_evaluate_with_source_uri(
416        context: *mut JSCContext,
417        code: *const c_char,
418        length: ssize_t,
419        uri: *const c_char,
420        line_number: c_uint,
421    ) -> *mut JSCValue;
422    pub fn jsc_context_get_exception(context: *mut JSCContext) -> *mut JSCException;
423    pub fn jsc_context_get_global_object(context: *mut JSCContext) -> *mut JSCValue;
424    pub fn jsc_context_get_value(context: *mut JSCContext, name: *const c_char) -> *mut JSCValue;
425    pub fn jsc_context_get_virtual_machine(context: *mut JSCContext) -> *mut JSCVirtualMachine;
426    pub fn jsc_context_pop_exception_handler(context: *mut JSCContext);
427    pub fn jsc_context_push_exception_handler(
428        context: *mut JSCContext,
429        handler: JSCExceptionHandler,
430        user_data: gpointer,
431        destroy_notify: glib::GDestroyNotify,
432    );
433    pub fn jsc_context_register_class(
434        context: *mut JSCContext,
435        name: *const c_char,
436        parent_class: *mut JSCClass,
437        vtable: *mut JSCClassVTable,
438        destroy_notify: glib::GDestroyNotify,
439    ) -> *mut JSCClass;
440    pub fn jsc_context_set_value(
441        context: *mut JSCContext,
442        name: *const c_char,
443        value: *mut JSCValue,
444    );
445    pub fn jsc_context_throw(context: *mut JSCContext, error_message: *const c_char);
446    pub fn jsc_context_throw_exception(context: *mut JSCContext, exception: *mut JSCException);
447    pub fn jsc_context_throw_printf(context: *mut JSCContext, format: *const c_char, ...);
448    pub fn jsc_context_throw_with_name(
449        context: *mut JSCContext,
450        error_name: *const c_char,
451        error_message: *const c_char,
452    );
453    pub fn jsc_context_throw_with_name_printf(
454        context: *mut JSCContext,
455        error_name: *const c_char,
456        format: *const c_char,
457        ...
458    );
459
460    //=========================================================================
461    // JSCException
462    //=========================================================================
463    pub fn jsc_exception_get_type() -> GType;
464    pub fn jsc_exception_new(context: *mut JSCContext, message: *const c_char)
465        -> *mut JSCException;
466    pub fn jsc_exception_new_printf(
467        context: *mut JSCContext,
468        format: *const c_char,
469        ...
470    ) -> *mut JSCException;
471    //pub fn jsc_exception_new_vprintf(context: *mut JSCContext, format: *const c_char, args: /*Unimplemented*/va_list) -> *mut JSCException;
472    pub fn jsc_exception_new_with_name(
473        context: *mut JSCContext,
474        name: *const c_char,
475        message: *const c_char,
476    ) -> *mut JSCException;
477    pub fn jsc_exception_new_with_name_printf(
478        context: *mut JSCContext,
479        name: *const c_char,
480        format: *const c_char,
481        ...
482    ) -> *mut JSCException;
483    //pub fn jsc_exception_new_with_name_vprintf(context: *mut JSCContext, name: *const c_char, format: *const c_char, args: /*Unimplemented*/va_list) -> *mut JSCException;
484    pub fn jsc_exception_get_backtrace_string(exception: *mut JSCException) -> *const c_char;
485    pub fn jsc_exception_get_column_number(exception: *mut JSCException) -> c_uint;
486    pub fn jsc_exception_get_line_number(exception: *mut JSCException) -> c_uint;
487    pub fn jsc_exception_get_message(exception: *mut JSCException) -> *const c_char;
488    pub fn jsc_exception_get_name(exception: *mut JSCException) -> *const c_char;
489    pub fn jsc_exception_get_source_uri(exception: *mut JSCException) -> *const c_char;
490    pub fn jsc_exception_report(exception: *mut JSCException) -> *mut c_char;
491    pub fn jsc_exception_to_string(exception: *mut JSCException) -> *mut c_char;
492
493    //=========================================================================
494    // JSCValue
495    //=========================================================================
496    pub fn jsc_value_get_type() -> GType;
497    pub fn jsc_value_new_array(
498        context: *mut JSCContext,
499        first_item_type: GType,
500        ...
501    ) -> *mut JSCValue;
502    pub fn jsc_value_new_array_buffer(
503        context: *mut JSCContext,
504        data: gpointer,
505        size: size_t,
506        destroy_notify: glib::GDestroyNotify,
507        user_data: gpointer,
508    ) -> *mut JSCValue;
509    pub fn jsc_value_new_array_from_garray(
510        context: *mut JSCContext,
511        array: *mut glib::GPtrArray,
512    ) -> *mut JSCValue;
513    pub fn jsc_value_new_array_from_strv(
514        context: *mut JSCContext,
515        strv: *const *const c_char,
516    ) -> *mut JSCValue;
517    pub fn jsc_value_new_boolean(context: *mut JSCContext, value: gboolean) -> *mut JSCValue;
518    pub fn jsc_value_new_from_json(context: *mut JSCContext, json: *const c_char) -> *mut JSCValue;
519    pub fn jsc_value_new_function(
520        context: *mut JSCContext,
521        name: *const c_char,
522        callback: gobject::GCallback,
523        user_data: gpointer,
524        destroy_notify: glib::GDestroyNotify,
525        return_type: GType,
526        n_params: c_uint,
527        ...
528    ) -> *mut JSCValue;
529    pub fn jsc_value_new_function_variadic(
530        context: *mut JSCContext,
531        name: *const c_char,
532        callback: gobject::GCallback,
533        user_data: gpointer,
534        destroy_notify: glib::GDestroyNotify,
535        return_type: GType,
536    ) -> *mut JSCValue;
537    pub fn jsc_value_new_functionv(
538        context: *mut JSCContext,
539        name: *const c_char,
540        callback: gobject::GCallback,
541        user_data: gpointer,
542        destroy_notify: glib::GDestroyNotify,
543        return_type: GType,
544        n_parameters: c_uint,
545        parameter_types: *mut GType,
546    ) -> *mut JSCValue;
547    pub fn jsc_value_new_null(context: *mut JSCContext) -> *mut JSCValue;
548    pub fn jsc_value_new_number(context: *mut JSCContext, number: c_double) -> *mut JSCValue;
549    pub fn jsc_value_new_object(
550        context: *mut JSCContext,
551        instance: gpointer,
552        jsc_class: *mut JSCClass,
553    ) -> *mut JSCValue;
554    #[cfg(feature = "v2_48")]
555    #[cfg_attr(docsrs, doc(cfg(feature = "v2_48")))]
556    pub fn jsc_value_new_promise(
557        context: *mut JSCContext,
558        executor: JSCExecutor,
559        user_data: gpointer,
560    ) -> *mut JSCValue;
561    pub fn jsc_value_new_string(context: *mut JSCContext, string: *const c_char) -> *mut JSCValue;
562    pub fn jsc_value_new_string_from_bytes(
563        context: *mut JSCContext,
564        bytes: *mut glib::GBytes,
565    ) -> *mut JSCValue;
566    pub fn jsc_value_new_typed_array(
567        context: *mut JSCContext,
568        type_: JSCTypedArrayType,
569        length: size_t,
570    ) -> *mut JSCValue;
571    pub fn jsc_value_new_undefined(context: *mut JSCContext) -> *mut JSCValue;
572    pub fn jsc_value_array_buffer_get_data(value: *mut JSCValue, size: *mut size_t) -> gpointer;
573    pub fn jsc_value_array_buffer_get_size(value: *mut JSCValue) -> size_t;
574    pub fn jsc_value_constructor_call(
575        value: *mut JSCValue,
576        first_parameter_type: GType,
577        ...
578    ) -> *mut JSCValue;
579    pub fn jsc_value_constructor_callv(
580        value: *mut JSCValue,
581        n_parameters: c_uint,
582        parameters: *mut *mut JSCValue,
583    ) -> *mut JSCValue;
584    pub fn jsc_value_function_call(
585        value: *mut JSCValue,
586        first_parameter_type: GType,
587        ...
588    ) -> *mut JSCValue;
589    pub fn jsc_value_function_callv(
590        value: *mut JSCValue,
591        n_parameters: c_uint,
592        parameters: *mut *mut JSCValue,
593    ) -> *mut JSCValue;
594    pub fn jsc_value_get_context(value: *mut JSCValue) -> *mut JSCContext;
595    pub fn jsc_value_is_array(value: *mut JSCValue) -> gboolean;
596    pub fn jsc_value_is_array_buffer(value: *mut JSCValue) -> gboolean;
597    pub fn jsc_value_is_boolean(value: *mut JSCValue) -> gboolean;
598    pub fn jsc_value_is_constructor(value: *mut JSCValue) -> gboolean;
599    pub fn jsc_value_is_function(value: *mut JSCValue) -> gboolean;
600    pub fn jsc_value_is_null(value: *mut JSCValue) -> gboolean;
601    pub fn jsc_value_is_number(value: *mut JSCValue) -> gboolean;
602    pub fn jsc_value_is_object(value: *mut JSCValue) -> gboolean;
603    pub fn jsc_value_is_string(value: *mut JSCValue) -> gboolean;
604    pub fn jsc_value_is_typed_array(value: *mut JSCValue) -> gboolean;
605    pub fn jsc_value_is_undefined(value: *mut JSCValue) -> gboolean;
606    pub fn jsc_value_new_typed_array_with_buffer(
607        array_buffer: *mut JSCValue,
608        type_: JSCTypedArrayType,
609        offset: size_t,
610        length: ssize_t,
611    ) -> *mut JSCValue;
612    pub fn jsc_value_object_define_property_accessor(
613        value: *mut JSCValue,
614        property_name: *const c_char,
615        flags: JSCValuePropertyFlags,
616        property_type: GType,
617        getter: gobject::GCallback,
618        setter: gobject::GCallback,
619        user_data: gpointer,
620        destroy_notify: glib::GDestroyNotify,
621    );
622    pub fn jsc_value_object_define_property_data(
623        value: *mut JSCValue,
624        property_name: *const c_char,
625        flags: JSCValuePropertyFlags,
626        property_value: *mut JSCValue,
627    );
628    pub fn jsc_value_object_delete_property(value: *mut JSCValue, name: *const c_char) -> gboolean;
629    pub fn jsc_value_object_enumerate_properties(value: *mut JSCValue) -> *mut *mut c_char;
630    pub fn jsc_value_object_get_property(
631        value: *mut JSCValue,
632        name: *const c_char,
633    ) -> *mut JSCValue;
634    pub fn jsc_value_object_get_property_at_index(
635        value: *mut JSCValue,
636        index: c_uint,
637    ) -> *mut JSCValue;
638    pub fn jsc_value_object_has_property(value: *mut JSCValue, name: *const c_char) -> gboolean;
639    pub fn jsc_value_object_invoke_method(
640        value: *mut JSCValue,
641        name: *const c_char,
642        first_parameter_type: GType,
643        ...
644    ) -> *mut JSCValue;
645    pub fn jsc_value_object_invoke_methodv(
646        value: *mut JSCValue,
647        name: *const c_char,
648        n_parameters: c_uint,
649        parameters: *mut *mut JSCValue,
650    ) -> *mut JSCValue;
651    pub fn jsc_value_object_is_instance_of(value: *mut JSCValue, name: *const c_char) -> gboolean;
652    pub fn jsc_value_object_set_property(
653        value: *mut JSCValue,
654        name: *const c_char,
655        property: *mut JSCValue,
656    );
657    pub fn jsc_value_object_set_property_at_index(
658        value: *mut JSCValue,
659        index: c_uint,
660        property: *mut JSCValue,
661    );
662    pub fn jsc_value_to_boolean(value: *mut JSCValue) -> gboolean;
663    pub fn jsc_value_to_double(value: *mut JSCValue) -> c_double;
664    pub fn jsc_value_to_int32(value: *mut JSCValue) -> i32;
665    pub fn jsc_value_to_json(value: *mut JSCValue, indent: c_uint) -> *mut c_char;
666    pub fn jsc_value_to_string(value: *mut JSCValue) -> *mut c_char;
667    pub fn jsc_value_to_string_as_bytes(value: *mut JSCValue) -> *mut glib::GBytes;
668    pub fn jsc_value_typed_array_get_buffer(value: *mut JSCValue) -> *mut JSCValue;
669    pub fn jsc_value_typed_array_get_data(value: *mut JSCValue, length: *mut size_t) -> gpointer;
670    pub fn jsc_value_typed_array_get_length(value: *mut JSCValue) -> size_t;
671    pub fn jsc_value_typed_array_get_offset(value: *mut JSCValue) -> size_t;
672    pub fn jsc_value_typed_array_get_size(value: *mut JSCValue) -> size_t;
673    pub fn jsc_value_typed_array_get_type(value: *mut JSCValue) -> JSCTypedArrayType;
674
675    //=========================================================================
676    // JSCVirtualMachine
677    //=========================================================================
678    pub fn jsc_virtual_machine_get_type() -> GType;
679    pub fn jsc_virtual_machine_new() -> *mut JSCVirtualMachine;
680
681    //=========================================================================
682    // JSCWeakValue
683    //=========================================================================
684    pub fn jsc_weak_value_get_type() -> GType;
685    pub fn jsc_weak_value_new(value: *mut JSCValue) -> *mut JSCWeakValue;
686    pub fn jsc_weak_value_get_value(weak_value: *mut JSCWeakValue) -> *mut JSCValue;
687
688    //=========================================================================
689    // Other functions
690    //=========================================================================
691    pub fn jsc_get_major_version() -> c_uint;
692    pub fn jsc_get_micro_version() -> c_uint;
693    pub fn jsc_get_minor_version() -> c_uint;
694    pub fn jsc_options_foreach(function: JSCOptionsFunc, user_data: gpointer);
695    pub fn jsc_options_get_boolean(option: *const c_char, value: *mut gboolean) -> gboolean;
696    pub fn jsc_options_get_double(option: *const c_char, value: *mut c_double) -> gboolean;
697    pub fn jsc_options_get_int(option: *const c_char, value: *mut c_int) -> gboolean;
698    pub fn jsc_options_get_option_group() -> *mut glib::GOptionGroup;
699    pub fn jsc_options_get_range_string(option: *const c_char, value: *mut *mut c_char)
700        -> gboolean;
701    pub fn jsc_options_get_size(option: *const c_char, value: *mut size_t) -> gboolean;
702    pub fn jsc_options_get_string(option: *const c_char, value: *mut *mut c_char) -> gboolean;
703    pub fn jsc_options_get_uint(option: *const c_char, value: *mut c_uint) -> gboolean;
704    pub fn jsc_options_set_boolean(option: *const c_char, value: gboolean) -> gboolean;
705    pub fn jsc_options_set_double(option: *const c_char, value: c_double) -> gboolean;
706    pub fn jsc_options_set_int(option: *const c_char, value: c_int) -> gboolean;
707    pub fn jsc_options_set_range_string(option: *const c_char, value: *const c_char) -> gboolean;
708    pub fn jsc_options_set_size(option: *const c_char, value: size_t) -> gboolean;
709    pub fn jsc_options_set_string(option: *const c_char, value: *const c_char) -> gboolean;
710    pub fn jsc_options_set_uint(option: *const c_char, value: c_uint) -> gboolean;
711
712}