From 01b40873c28096f0b5e580a43cffd75bfc9fc2ea Mon Sep 17 00:00:00 2001 From: Wu Yu Wei Date: Sun, 19 Mar 2023 19:41:30 +0800 Subject: [PATCH] Update sys crate --- gir-files | 2 +- sys/Cargo.toml | 19 +- sys/build.rs | 12 +- sys/src/lib.rs | 990 +++++++++++++++++-------------------------- sys/tests/abi.rs | 489 +++++++++------------ sys/tests/constant.c | 16 +- sys/tests/layout.c | 5 +- 7 files changed, 619 insertions(+), 914 deletions(-) diff --git a/gir-files b/gir-files index 7182204..8be1960 160000 --- a/gir-files +++ b/gir-files @@ -1 +1 @@ -Subproject commit 7182204ef1086ab89e60389d03017b58dce9b410 +Subproject commit 8be196040235c456ba403624d9f932a3c046102c diff --git a/sys/Cargo.toml b/sys/Cargo.toml index 881a303..fac1e15 100644 --- a/sys/Cargo.toml +++ b/sys/Cargo.toml @@ -1,27 +1,31 @@ [package] -authors = [ "The Gtk-rs Project Developers" ] +authors = ["The Gtk-rs Project Developers"] build = "build.rs" description = "Sys functions for the Rust bindings of the javacriptcore library" edition = "2021" -keywords = [ "javascript", "gtk-rs", "gnome" ] +keywords = ["javascript", "gtk-rs", "gnome"] license = "MIT" name = "javascriptcore-rs-sys" repository = "https://github.com/tauri-apps/javascriptcore-rs" version = "0.5.1" - [package.metadata.system-deps.javascriptcoregtk_4_1] name = "javascriptcoregtk-4.1" version = "2.24" +[package.metadata.system-deps.javascriptcoregtk_4_1.v2_28] +version = "2.28" + +[package.metadata.system-deps.javascriptcoregtk_4_1.v2_38] +version = "2.38" [package.metadata.docs.rs] -features = [ "dox" ] +features = ["dox"] [lib] name = "javascriptcore_rs_sys" [dependencies] -glib-sys = "^0.16" -gobject-sys = "^0.16" +glib = { package = "glib-sys", version = "^0.16" } +gobject = { package = "gobject-sys", version = "^0.16" } libc = "0.2" [build-dependencies] @@ -33,4 +37,5 @@ tempfile = "3" [features] dox = [ ] -v2_28 = [ ] +v2_28 = [] +v2_38 = ["v2_28"] diff --git a/sys/build.rs b/sys/build.rs index 53f39fb..77149b6 100644 --- a/sys/build.rs +++ b/sys/build.rs @@ -1,5 +1,5 @@ -// Generated by gir (https://github.com/gtk-rs/gir @ a97e6087cf6b) -// from gir-files (https://github.com/vhdirk/gir-files @ 5c5c482b7f4a) +// Generated by gir (https://github.com/gtk-rs/gir @ 92965146f2fb) +// from ../gir-files (@ 8be196040235) // DO NOT EDIT #[cfg(not(feature = "dox"))] @@ -10,8 +10,8 @@ fn main() {} // prevent linking libraries to avoid documentation failure #[cfg(not(feature = "dox"))] fn main() { - if let Err(s) = system_deps::Config::new().probe() { - println!("cargo:warning={}", s); - process::exit(1); - } + if let Err(s) = system_deps::Config::new().probe() { + println!("cargo:warning={s}"); + process::exit(1); + } } diff --git a/sys/src/lib.rs b/sys/src/lib.rs index 07aa103..014984c 100644 --- a/sys/src/lib.rs +++ b/sys/src/lib.rs @@ -1,24 +1,16 @@ -// Generated by gir (https://github.com/gtk-rs/gir @ a97e6087cf6b) -// from gir-files (https://github.com/vhdirk/gir-files @ 5c5c482b7f4a) +// Generated by gir (https://github.com/gtk-rs/gir @ 92965146f2fb) +// from ../gir-files (@ 8be196040235) // DO NOT EDIT #![allow(non_camel_case_types, non_upper_case_globals, non_snake_case)] -#![allow( - clippy::approx_constant, - clippy::type_complexity, - clippy::unreadable_literal, - clippy::upper_case_acronyms -)] +#![allow(clippy::approx_constant, clippy::type_complexity, clippy::unreadable_literal, clippy::upper_case_acronyms)] #![cfg_attr(feature = "dox", feature(doc_cfg))] -use glib_sys as glib; -use gobject_sys as gobject; #[allow(unused_imports)] -use libc::{ - c_char, c_double, c_float, c_int, c_long, c_short, c_uchar, c_uint, c_ulong, c_ushort, c_void, - intptr_t, size_t, ssize_t, time_t, uintptr_t, FILE, -}; +use libc::{c_int, c_char, c_uchar, c_float, c_uint, c_double, + c_short, c_ushort, c_long, c_ulong, + c_void, size_t, ssize_t, intptr_t, uintptr_t, FILE}; #[allow(unused_imports)] use glib::{gboolean, gconstpointer, gpointer, GType}; @@ -45,10 +37,24 @@ pub const JSC_OPTION_DOUBLE: JSCOptionType = 4; pub const JSC_OPTION_STRING: JSCOptionType = 5; pub const JSC_OPTION_RANGE_STRING: JSCOptionType = 6; +pub type JSCTypedArrayType = c_int; +pub const JSC_TYPED_ARRAY_NONE: JSCTypedArrayType = 0; +pub const JSC_TYPED_ARRAY_INT8: JSCTypedArrayType = 1; +pub const JSC_TYPED_ARRAY_INT16: JSCTypedArrayType = 2; +pub const JSC_TYPED_ARRAY_INT32: JSCTypedArrayType = 3; +pub const JSC_TYPED_ARRAY_INT64: JSCTypedArrayType = 4; +pub const JSC_TYPED_ARRAY_UINT8: JSCTypedArrayType = 5; +pub const JSC_TYPED_ARRAY_UINT8_CLAMPED: JSCTypedArrayType = 6; +pub const JSC_TYPED_ARRAY_UINT16: JSCTypedArrayType = 7; +pub const JSC_TYPED_ARRAY_UINT32: JSCTypedArrayType = 8; +pub const JSC_TYPED_ARRAY_UINT64: JSCTypedArrayType = 9; +pub const JSC_TYPED_ARRAY_FLOAT32: JSCTypedArrayType = 10; +pub const JSC_TYPED_ARRAY_FLOAT64: JSCTypedArrayType = 11; + // Constants pub const JSC_MAJOR_VERSION: c_int = 2; pub const JSC_MICRO_VERSION: c_int = 1; -pub const JSC_MINOR_VERSION: c_int = 34; +pub const JSC_MINOR_VERSION: c_int = 38; pub const JSC_OPTIONS_USE_DFG: *const c_char = b"useDFGJIT\0" as *const u8 as *const c_char; pub const JSC_OPTIONS_USE_FTL: *const c_char = b"useFTLJIT\0" as *const u8 as *const c_char; pub const JSC_OPTIONS_USE_JIT: *const c_char = b"useJIT\0" as *const u8 as *const c_char; @@ -61,714 +67,482 @@ pub const JSC_VALUE_PROPERTY_ENUMERABLE: JSCValuePropertyFlags = 2; pub const JSC_VALUE_PROPERTY_WRITABLE: JSCValuePropertyFlags = 4; // Callbacks -pub type JSCClassDeletePropertyFunction = - Option gboolean>; -pub type JSCClassEnumeratePropertiesFunction = - Option *mut *mut c_char>; -pub type JSCClassGetPropertyFunction = Option< - unsafe extern "C" fn(*mut JSCClass, *mut JSCContext, gpointer, *const c_char) -> *mut JSCValue, ->; -pub type JSCClassHasPropertyFunction = - Option gboolean>; -pub type JSCClassSetPropertyFunction = Option< - unsafe extern "C" fn( - *mut JSCClass, - *mut JSCContext, - gpointer, - *const c_char, - *mut JSCValue, - ) -> gboolean, ->; -pub type JSCClassVariadicFunction = - Option *mut JSCValue>; -pub type JSCConstructor = Option gpointer>; -pub type JSCExceptionHandler = - Option; -pub type JSCGetter = Option *mut JSCValue>; -pub type JSCOptionsFunc = - Option gboolean>; -pub type JSCPropertyGetter = Option *mut JSCValue>; -pub type JSCPropertySetter = Option; -pub type JSCSetter = Option; -pub type JSCVariadicFunction = - Option *mut JSCValue>; +pub type JSCClassDeletePropertyFunction = Option gboolean>; +pub type JSCClassEnumeratePropertiesFunction = Option *mut *mut c_char>; +pub type JSCClassGetPropertyFunction = Option *mut JSCValue>; +pub type JSCClassHasPropertyFunction = Option gboolean>; +pub type JSCClassSetPropertyFunction = Option gboolean>; +pub type JSCExceptionHandler = Option; +pub type JSCOptionsFunc = Option gboolean>; // Records #[repr(C)] -pub struct _JSCClassClass(c_void); +pub struct _JSCClassClass { + _data: [u8; 0], + _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>, +} pub type JSCClassClass = *mut _JSCClassClass; -#[repr(C)] #[derive(Copy, Clone)] +#[repr(C)] pub struct JSCClassVTable { - pub get_property: JSCClassGetPropertyFunction, - pub set_property: JSCClassSetPropertyFunction, - pub has_property: JSCClassHasPropertyFunction, - pub delete_property: JSCClassDeletePropertyFunction, - pub enumerate_properties: JSCClassEnumeratePropertiesFunction, - pub _jsc_reserved0: Option, - pub _jsc_reserved1: Option, - pub _jsc_reserved2: Option, - pub _jsc_reserved3: Option, + pub get_property: JSCClassGetPropertyFunction, + pub set_property: JSCClassSetPropertyFunction, + pub has_property: JSCClassHasPropertyFunction, + pub delete_property: JSCClassDeletePropertyFunction, + pub enumerate_properties: JSCClassEnumeratePropertiesFunction, + pub _jsc_reserved0: Option, + pub _jsc_reserved1: Option, + pub _jsc_reserved2: Option, + pub _jsc_reserved3: Option, } impl ::std::fmt::Debug for JSCClassVTable { - fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { - f.debug_struct(&format!("JSCClassVTable @ {:p}", self)) - .field("get_property", &self.get_property) - .field("set_property", &self.set_property) - .field("has_property", &self.has_property) - .field("delete_property", &self.delete_property) - .field("enumerate_properties", &self.enumerate_properties) - .field("_jsc_reserved0", &self._jsc_reserved0) - .field("_jsc_reserved1", &self._jsc_reserved1) - .field("_jsc_reserved2", &self._jsc_reserved2) - .field("_jsc_reserved3", &self._jsc_reserved3) - .finish() - } + fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { + f.debug_struct(&format!("JSCClassVTable @ {self:p}")) + .field("get_property", &self.get_property) + .field("set_property", &self.set_property) + .field("has_property", &self.has_property) + .field("delete_property", &self.delete_property) + .field("enumerate_properties", &self.enumerate_properties) + .field("_jsc_reserved0", &self._jsc_reserved0) + .field("_jsc_reserved1", &self._jsc_reserved1) + .field("_jsc_reserved2", &self._jsc_reserved2) + .field("_jsc_reserved3", &self._jsc_reserved3) + .finish() + } } -#[repr(C)] #[derive(Copy, Clone)] +#[repr(C)] pub struct JSCContextClass { - pub parent_class: gobject::GObjectClass, - pub _jsc_reserved0: Option, - pub _jsc_reserved1: Option, - pub _jsc_reserved2: Option, - pub _jsc_reserved3: Option, + pub parent_class: gobject::GObjectClass, + pub _jsc_reserved0: Option, + pub _jsc_reserved1: Option, + pub _jsc_reserved2: Option, + pub _jsc_reserved3: Option, } impl ::std::fmt::Debug for JSCContextClass { - fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { - f.debug_struct(&format!("JSCContextClass @ {:p}", self)) - .field("parent_class", &self.parent_class) - .field("_jsc_reserved0", &self._jsc_reserved0) - .field("_jsc_reserved1", &self._jsc_reserved1) - .field("_jsc_reserved2", &self._jsc_reserved2) - .field("_jsc_reserved3", &self._jsc_reserved3) - .finish() - } + fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { + f.debug_struct(&format!("JSCContextClass @ {self:p}")) + .field("parent_class", &self.parent_class) + .field("_jsc_reserved0", &self._jsc_reserved0) + .field("_jsc_reserved1", &self._jsc_reserved1) + .field("_jsc_reserved2", &self._jsc_reserved2) + .field("_jsc_reserved3", &self._jsc_reserved3) + .finish() + } } #[repr(C)] -pub struct _JSCContextPrivate(c_void); +pub struct _JSCContextPrivate { + _data: [u8; 0], + _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>, +} pub type JSCContextPrivate = *mut _JSCContextPrivate; -#[repr(C)] #[derive(Copy, Clone)] +#[repr(C)] pub struct JSCExceptionClass { - pub parent_class: gobject::GObjectClass, - pub _jsc_reserved0: Option, - pub _jsc_reserved1: Option, - pub _jsc_reserved2: Option, - pub _jsc_reserved3: Option, + pub parent_class: gobject::GObjectClass, + pub _jsc_reserved0: Option, + pub _jsc_reserved1: Option, + pub _jsc_reserved2: Option, + pub _jsc_reserved3: Option, } impl ::std::fmt::Debug for JSCExceptionClass { - fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { - f.debug_struct(&format!("JSCExceptionClass @ {:p}", self)) - .field("parent_class", &self.parent_class) - .field("_jsc_reserved0", &self._jsc_reserved0) - .field("_jsc_reserved1", &self._jsc_reserved1) - .field("_jsc_reserved2", &self._jsc_reserved2) - .field("_jsc_reserved3", &self._jsc_reserved3) - .finish() - } + fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { + f.debug_struct(&format!("JSCExceptionClass @ {self:p}")) + .field("parent_class", &self.parent_class) + .field("_jsc_reserved0", &self._jsc_reserved0) + .field("_jsc_reserved1", &self._jsc_reserved1) + .field("_jsc_reserved2", &self._jsc_reserved2) + .field("_jsc_reserved3", &self._jsc_reserved3) + .finish() + } } #[repr(C)] -pub struct _JSCExceptionPrivate(c_void); +pub struct _JSCExceptionPrivate { + _data: [u8; 0], + _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>, +} pub type JSCExceptionPrivate = *mut _JSCExceptionPrivate; -#[repr(C)] #[derive(Copy, Clone)] +#[repr(C)] pub struct JSCValueClass { - pub parent_class: gobject::GObjectClass, - pub _jsc_reserved0: Option, - pub _jsc_reserved1: Option, - pub _jsc_reserved2: Option, - pub _jsc_reserved3: Option, + pub parent_class: gobject::GObjectClass, + pub _jsc_reserved0: Option, + pub _jsc_reserved1: Option, + pub _jsc_reserved2: Option, + pub _jsc_reserved3: Option, } impl ::std::fmt::Debug for JSCValueClass { - fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { - f.debug_struct(&format!("JSCValueClass @ {:p}", self)) - .field("parent_class", &self.parent_class) - .field("_jsc_reserved0", &self._jsc_reserved0) - .field("_jsc_reserved1", &self._jsc_reserved1) - .field("_jsc_reserved2", &self._jsc_reserved2) - .field("_jsc_reserved3", &self._jsc_reserved3) - .finish() - } + fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { + f.debug_struct(&format!("JSCValueClass @ {self:p}")) + .field("parent_class", &self.parent_class) + .field("_jsc_reserved0", &self._jsc_reserved0) + .field("_jsc_reserved1", &self._jsc_reserved1) + .field("_jsc_reserved2", &self._jsc_reserved2) + .field("_jsc_reserved3", &self._jsc_reserved3) + .finish() + } } #[repr(C)] -pub struct _JSCValuePrivate(c_void); +pub struct _JSCValuePrivate { + _data: [u8; 0], + _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>, +} pub type JSCValuePrivate = *mut _JSCValuePrivate; -#[repr(C)] #[derive(Copy, Clone)] +#[repr(C)] pub struct JSCVirtualMachineClass { - pub parent_class: gobject::GObjectClass, - pub _jsc_reserved0: Option, - pub _jsc_reserved1: Option, - pub _jsc_reserved2: Option, - pub _jsc_reserved3: Option, + pub parent_class: gobject::GObjectClass, + pub _jsc_reserved0: Option, + pub _jsc_reserved1: Option, + pub _jsc_reserved2: Option, + pub _jsc_reserved3: Option, } impl ::std::fmt::Debug for JSCVirtualMachineClass { - fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { - f.debug_struct(&format!("JSCVirtualMachineClass @ {:p}", self)) - .field("parent_class", &self.parent_class) - .field("_jsc_reserved0", &self._jsc_reserved0) - .field("_jsc_reserved1", &self._jsc_reserved1) - .field("_jsc_reserved2", &self._jsc_reserved2) - .field("_jsc_reserved3", &self._jsc_reserved3) - .finish() - } + fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { + f.debug_struct(&format!("JSCVirtualMachineClass @ {self:p}")) + .field("parent_class", &self.parent_class) + .field("_jsc_reserved0", &self._jsc_reserved0) + .field("_jsc_reserved1", &self._jsc_reserved1) + .field("_jsc_reserved2", &self._jsc_reserved2) + .field("_jsc_reserved3", &self._jsc_reserved3) + .finish() + } } #[repr(C)] -pub struct _JSCVirtualMachinePrivate(c_void); +pub struct _JSCVirtualMachinePrivate { + _data: [u8; 0], + _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>, +} pub type JSCVirtualMachinePrivate = *mut _JSCVirtualMachinePrivate; -#[repr(C)] #[derive(Copy, Clone)] +#[repr(C)] pub struct JSCWeakValueClass { - pub parent_class: gobject::GObjectClass, - pub _jsc_reserved0: Option, - pub _jsc_reserved1: Option, - pub _jsc_reserved2: Option, - pub _jsc_reserved3: Option, + pub parent_class: gobject::GObjectClass, + pub _jsc_reserved0: Option, + pub _jsc_reserved1: Option, + pub _jsc_reserved2: Option, + pub _jsc_reserved3: Option, } impl ::std::fmt::Debug for JSCWeakValueClass { - fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { - f.debug_struct(&format!("JSCWeakValueClass @ {:p}", self)) - .field("parent_class", &self.parent_class) - .field("_jsc_reserved0", &self._jsc_reserved0) - .field("_jsc_reserved1", &self._jsc_reserved1) - .field("_jsc_reserved2", &self._jsc_reserved2) - .field("_jsc_reserved3", &self._jsc_reserved3) - .finish() - } + fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { + f.debug_struct(&format!("JSCWeakValueClass @ {self:p}")) + .field("parent_class", &self.parent_class) + .field("_jsc_reserved0", &self._jsc_reserved0) + .field("_jsc_reserved1", &self._jsc_reserved1) + .field("_jsc_reserved2", &self._jsc_reserved2) + .field("_jsc_reserved3", &self._jsc_reserved3) + .finish() + } } #[repr(C)] -pub struct _JSCWeakValuePrivate(c_void); +pub struct _JSCWeakValuePrivate { + _data: [u8; 0], + _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>, +} pub type JSCWeakValuePrivate = *mut _JSCWeakValuePrivate; -#[repr(C)] -pub struct _JSGlobalContextRef(c_void); - -pub type JSGlobalContextRef = *mut _JSGlobalContextRef; - -#[repr(C)] -pub struct _JSStringRef(c_void); - -pub type JSStringRef = *mut _JSStringRef; - -#[repr(C)] -pub struct _JSValueRef(c_void); - -pub type JSValueRef = *mut _JSValueRef; - // Classes #[repr(C)] -pub struct JSCClass(c_void); - -impl ::std::fmt::Debug for JSCClass { - fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { - f.debug_struct(&format!("JSCClass @ {:p}", self)).finish() - } +pub struct JSCClass { + _data: [u8; 0], + _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>, +} + +impl ::std::fmt::Debug for JSCClass { + fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { + f.debug_struct(&format!("JSCClass @ {self:p}")) + .finish() + } } -#[repr(C)] #[derive(Copy, Clone)] +#[repr(C)] pub struct JSCContext { - pub parent: gobject::GObject, - pub priv_: *mut JSCContextPrivate, + pub parent: gobject::GObject, + pub priv_: *mut JSCContextPrivate, } impl ::std::fmt::Debug for JSCContext { - fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { - f.debug_struct(&format!("JSCContext @ {:p}", self)) - .field("parent", &self.parent) - .finish() - } + fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { + f.debug_struct(&format!("JSCContext @ {self:p}")) + .field("parent", &self.parent) + .finish() + } } -#[repr(C)] #[derive(Copy, Clone)] +#[repr(C)] pub struct JSCException { - pub parent: gobject::GObject, - pub priv_: *mut JSCExceptionPrivate, + pub parent: gobject::GObject, + pub priv_: *mut JSCExceptionPrivate, } impl ::std::fmt::Debug for JSCException { - fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { - f.debug_struct(&format!("JSCException @ {:p}", self)) - .field("parent", &self.parent) - .finish() - } + fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { + f.debug_struct(&format!("JSCException @ {self:p}")) + .field("parent", &self.parent) + .finish() + } } -#[repr(C)] #[derive(Copy, Clone)] +#[repr(C)] pub struct JSCValue { - pub parent: gobject::GObject, - pub priv_: *mut JSCValuePrivate, + pub parent: gobject::GObject, + pub priv_: *mut JSCValuePrivate, } impl ::std::fmt::Debug for JSCValue { - fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { - f.debug_struct(&format!("JSCValue @ {:p}", self)) - .field("parent", &self.parent) - .finish() - } + fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { + f.debug_struct(&format!("JSCValue @ {self:p}")) + .field("parent", &self.parent) + .finish() + } } -#[repr(C)] #[derive(Copy, Clone)] +#[repr(C)] pub struct JSCVirtualMachine { - pub parent: gobject::GObject, - pub priv_: *mut JSCVirtualMachinePrivate, + pub parent: gobject::GObject, + pub priv_: *mut JSCVirtualMachinePrivate, } impl ::std::fmt::Debug for JSCVirtualMachine { - fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { - f.debug_struct(&format!("JSCVirtualMachine @ {:p}", self)) - .field("parent", &self.parent) - .finish() - } + fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { + f.debug_struct(&format!("JSCVirtualMachine @ {self:p}")) + .field("parent", &self.parent) + .finish() + } } -#[repr(C)] #[derive(Copy, Clone)] +#[repr(C)] pub struct JSCWeakValue { - pub parent: gobject::GObject, - pub priv_: *mut JSCWeakValuePrivate, + pub parent: gobject::GObject, + pub priv_: *mut JSCWeakValuePrivate, } impl ::std::fmt::Debug for JSCWeakValue { - fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { - f.debug_struct(&format!("JSCWeakValue @ {:p}", self)) - .field("parent", &self.parent) - .finish() - } + fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { + f.debug_struct(&format!("JSCWeakValue @ {self:p}")) + .field("parent", &self.parent) + .finish() + } } #[link(name = "javascriptcoregtk-4.1")] extern "C" { - //========================================================================= - // JSGlobalContextRef - //========================================================================= - pub fn JSGlobalContextRetain(context: JSGlobalContextRef); - pub fn JSGlobalContextRelease(context: JSGlobalContextRef); + //========================================================================= + // JSCClass + //========================================================================= + pub fn jsc_class_get_type() -> GType; + pub fn jsc_class_add_constructor(jsc_class: *mut JSCClass, name: *const c_char, callback: gobject::GCallback, user_data: gpointer, destroy_notify: glib::GDestroyNotify, return_type: GType, n_params: c_uint, ...) -> *mut JSCValue; + pub fn jsc_class_add_constructor_variadic(jsc_class: *mut JSCClass, name: *const c_char, callback: gobject::GCallback, user_data: gpointer, destroy_notify: glib::GDestroyNotify, return_type: GType) -> *mut JSCValue; + pub fn jsc_class_add_constructorv(jsc_class: *mut JSCClass, name: *const c_char, callback: gobject::GCallback, user_data: gpointer, destroy_notify: glib::GDestroyNotify, return_type: GType, n_parameters: c_uint, parameter_types: *mut GType) -> *mut JSCValue; + pub fn jsc_class_add_method(jsc_class: *mut JSCClass, name: *const c_char, callback: gobject::GCallback, user_data: gpointer, destroy_notify: glib::GDestroyNotify, return_type: GType, n_params: c_uint, ...); + pub fn jsc_class_add_method_variadic(jsc_class: *mut JSCClass, name: *const c_char, callback: gobject::GCallback, user_data: gpointer, destroy_notify: glib::GDestroyNotify, return_type: GType); + pub fn jsc_class_add_methodv(jsc_class: *mut JSCClass, name: *const c_char, callback: gobject::GCallback, user_data: gpointer, destroy_notify: glib::GDestroyNotify, return_type: GType, n_parameters: c_uint, parameter_types: *mut GType); + pub fn jsc_class_add_property(jsc_class: *mut JSCClass, name: *const c_char, property_type: GType, getter: gobject::GCallback, setter: gobject::GCallback, user_data: gpointer, destroy_notify: glib::GDestroyNotify); + pub fn jsc_class_get_name(jsc_class: *mut JSCClass) -> *const c_char; + pub fn jsc_class_get_parent(jsc_class: *mut JSCClass) -> *mut JSCClass; - //========================================================================= - // JSStringRef - //========================================================================= - pub fn JSStringRetain(string: JSStringRef); - pub fn JSStringRelease(string: JSStringRef); - pub fn JSStringGetMaximumUTF8CStringSize(string: JSStringRef) -> size_t; - pub fn JSStringGetUTF8CString( - string: JSStringRef, - buffer: *mut *mut c_char, - buffer_size: size_t, - ) -> size_t; + //========================================================================= + // JSCContext + //========================================================================= + pub fn jsc_context_get_type() -> GType; + pub fn jsc_context_new() -> *mut JSCContext; + pub fn jsc_context_new_with_virtual_machine(vm: *mut JSCVirtualMachine) -> *mut JSCContext; + pub fn jsc_context_get_current() -> *mut JSCContext; + pub fn jsc_context_check_syntax(context: *mut JSCContext, code: *const c_char, length: ssize_t, mode: JSCCheckSyntaxMode, uri: *const c_char, line_number: c_uint, exception: *mut *mut JSCException) -> JSCCheckSyntaxResult; + pub fn jsc_context_clear_exception(context: *mut JSCContext); + pub fn jsc_context_evaluate(context: *mut JSCContext, code: *const c_char, length: ssize_t) -> *mut JSCValue; + pub fn jsc_context_evaluate_in_object(context: *mut JSCContext, code: *const c_char, length: ssize_t, object_instance: gpointer, object_class: *mut JSCClass, uri: *const c_char, line_number: c_uint, object: *mut *mut JSCValue) -> *mut JSCValue; + pub fn jsc_context_evaluate_with_source_uri(context: *mut JSCContext, code: *const c_char, length: ssize_t, uri: *const c_char, line_number: c_uint) -> *mut JSCValue; + pub fn jsc_context_get_exception(context: *mut JSCContext) -> *mut JSCException; + pub fn jsc_context_get_global_object(context: *mut JSCContext) -> *mut JSCValue; + pub fn jsc_context_get_value(context: *mut JSCContext, name: *const c_char) -> *mut JSCValue; + pub fn jsc_context_get_virtual_machine(context: *mut JSCContext) -> *mut JSCVirtualMachine; + pub fn jsc_context_pop_exception_handler(context: *mut JSCContext); + pub fn jsc_context_push_exception_handler(context: *mut JSCContext, handler: JSCExceptionHandler, user_data: gpointer, destroy_notify: glib::GDestroyNotify); + pub fn jsc_context_register_class(context: *mut JSCContext, name: *const c_char, parent_class: *mut JSCClass, vtable: *mut JSCClassVTable, destroy_notify: glib::GDestroyNotify) -> *mut JSCClass; + pub fn jsc_context_set_value(context: *mut JSCContext, name: *const c_char, value: *mut JSCValue); + pub fn jsc_context_throw(context: *mut JSCContext, error_message: *const c_char); + pub fn jsc_context_throw_exception(context: *mut JSCContext, exception: *mut JSCException); + pub fn jsc_context_throw_printf(context: *mut JSCContext, format: *const c_char, ...); + pub fn jsc_context_throw_with_name(context: *mut JSCContext, error_name: *const c_char, error_message: *const c_char); + pub fn jsc_context_throw_with_name_printf(context: *mut JSCContext, error_name: *const c_char, format: *const c_char, ...); - //========================================================================= - // JSValueRef - //========================================================================= - pub fn JSValueIsArray(ctx: JSGlobalContextRef, value: JSValueRef) -> gboolean; - pub fn JSValueProtect(context: JSGlobalContextRef, value: JSValueRef); - pub fn JSValueUnprotect(context: JSGlobalContextRef, value: JSValueRef); - pub fn JSValueIsBoolean(ctx: JSGlobalContextRef, value: JSValueRef) -> gboolean; - pub fn JSValueIsDate(ctx: JSGlobalContextRef, value: JSValueRef) -> gboolean; - pub fn JSValueIsObject(ctx: JSGlobalContextRef, value: JSValueRef) -> gboolean; - pub fn JSValueIsNull(ctx: JSGlobalContextRef, value: JSValueRef) -> gboolean; - pub fn JSValueIsNumber(ctx: JSGlobalContextRef, value: JSValueRef) -> gboolean; - pub fn JSValueIsString(ctx: JSGlobalContextRef, value: JSValueRef) -> gboolean; - pub fn JSValueIsUndefined(ctx: JSGlobalContextRef, value: JSValueRef) -> gboolean; - pub fn JSValueToBoolean(ctx: JSGlobalContextRef, value: JSValueRef) -> gboolean; - pub fn JSValueToNumber( - ctx: JSGlobalContextRef, - value: JSValueRef, - exception: *mut *mut JSCException, - ) -> c_double; - pub fn JSValueToStringCopy( - ctx: JSGlobalContextRef, - value: JSValueRef, - exception: *mut JSValueRef, - ) -> JSStringRef; + //========================================================================= + // JSCException + //========================================================================= + pub fn jsc_exception_get_type() -> GType; + pub fn jsc_exception_new(context: *mut JSCContext, message: *const c_char) -> *mut JSCException; + pub fn jsc_exception_new_printf(context: *mut JSCContext, format: *const c_char, ...) -> *mut JSCException; + //pub fn jsc_exception_new_vprintf(context: *mut JSCContext, format: *const c_char, args: /*Unimplemented*/va_list) -> *mut JSCException; + pub fn jsc_exception_new_with_name(context: *mut JSCContext, name: *const c_char, message: *const c_char) -> *mut JSCException; + pub fn jsc_exception_new_with_name_printf(context: *mut JSCContext, name: *const c_char, format: *const c_char, ...) -> *mut JSCException; + //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; + pub fn jsc_exception_get_backtrace_string(exception: *mut JSCException) -> *const c_char; + pub fn jsc_exception_get_column_number(exception: *mut JSCException) -> c_uint; + pub fn jsc_exception_get_line_number(exception: *mut JSCException) -> c_uint; + pub fn jsc_exception_get_message(exception: *mut JSCException) -> *const c_char; + pub fn jsc_exception_get_name(exception: *mut JSCException) -> *const c_char; + pub fn jsc_exception_get_source_uri(exception: *mut JSCException) -> *const c_char; + pub fn jsc_exception_report(exception: *mut JSCException) -> *mut c_char; + pub fn jsc_exception_to_string(exception: *mut JSCException) -> *mut c_char; - //========================================================================= - // JSCClass - //========================================================================= - pub fn jsc_class_get_type() -> GType; - pub fn jsc_class_add_constructor( - jsc_class: *mut JSCClass, - name: *const c_char, - callback: gobject::GCallback, - user_data: gpointer, - destroy_notify: glib::GDestroyNotify, - return_type: GType, - n_params: c_uint, - ... - ) -> *mut JSCValue; - pub fn jsc_class_add_constructor_variadic( - jsc_class: *mut JSCClass, - name: *const c_char, - callback: JSCConstructor, - user_data: gpointer, - destroy_notify: glib::GDestroyNotify, - return_type: GType, - ) -> *mut JSCValue; - pub fn jsc_class_add_constructorv( - jsc_class: *mut JSCClass, - name: *const c_char, - callback: gobject::GCallback, - user_data: gpointer, - destroy_notify: glib::GDestroyNotify, - return_type: GType, - n_parameters: c_uint, - parameter_types: *mut GType, - ) -> *mut JSCValue; - pub fn jsc_class_add_method( - jsc_class: *mut JSCClass, - name: *const c_char, - callback: gobject::GCallback, - user_data: gpointer, - destroy_notify: glib::GDestroyNotify, - return_type: GType, - n_params: c_uint, - ... - ); - pub fn jsc_class_add_method_variadic( - jsc_class: *mut JSCClass, - name: *const c_char, - callback: JSCClassVariadicFunction, - user_data: gpointer, - destroy_notify: glib::GDestroyNotify, - return_type: GType, - ); - pub fn jsc_class_add_methodv( - jsc_class: *mut JSCClass, - name: *const c_char, - callback: gobject::GCallback, - user_data: gpointer, - destroy_notify: glib::GDestroyNotify, - return_type: GType, - n_parameters: c_uint, - parameter_types: *mut GType, - ); - pub fn jsc_class_add_property( - jsc_class: *mut JSCClass, - name: *const c_char, - property_type: GType, - getter: JSCPropertyGetter, - setter: JSCPropertySetter, - user_data: gpointer, - destroy_notify: glib::GDestroyNotify, - ); - pub fn jsc_class_get_name(jsc_class: *mut JSCClass) -> *const c_char; - pub fn jsc_class_get_parent(jsc_class: *mut JSCClass) -> *mut JSCClass; + //========================================================================= + // JSCValue + //========================================================================= + pub fn jsc_value_get_type() -> GType; + pub fn jsc_value_new_array(context: *mut JSCContext, first_item_type: GType, ...) -> *mut JSCValue; + #[cfg(any(feature = "v2_38", feature = "dox"))] + #[cfg_attr(feature = "dox", doc(cfg(feature = "v2_38")))] + pub fn jsc_value_new_array_buffer(context: *mut JSCContext, data: gpointer, size: size_t, destroy_notify: glib::GDestroyNotify, user_data: gpointer) -> *mut JSCValue; + pub fn jsc_value_new_array_from_garray(context: *mut JSCContext, array: *mut glib::GPtrArray) -> *mut JSCValue; + pub fn jsc_value_new_array_from_strv(context: *mut JSCContext, strv: *const *const c_char) -> *mut JSCValue; + pub fn jsc_value_new_boolean(context: *mut JSCContext, value: gboolean) -> *mut JSCValue; + #[cfg(any(feature = "v2_28", feature = "dox"))] + #[cfg_attr(feature = "dox", doc(cfg(feature = "v2_28")))] + pub fn jsc_value_new_from_json(context: *mut JSCContext, json: *const c_char) -> *mut JSCValue; + pub fn jsc_value_new_function(context: *mut JSCContext, name: *const c_char, callback: gobject::GCallback, user_data: gpointer, destroy_notify: glib::GDestroyNotify, return_type: GType, n_params: c_uint, ...) -> *mut JSCValue; + pub fn jsc_value_new_function_variadic(context: *mut JSCContext, name: *const c_char, callback: gobject::GCallback, user_data: gpointer, destroy_notify: glib::GDestroyNotify, return_type: GType) -> *mut JSCValue; + pub fn jsc_value_new_functionv(context: *mut JSCContext, name: *const c_char, callback: gobject::GCallback, user_data: gpointer, destroy_notify: glib::GDestroyNotify, return_type: GType, n_parameters: c_uint, parameter_types: *mut GType) -> *mut JSCValue; + pub fn jsc_value_new_null(context: *mut JSCContext) -> *mut JSCValue; + pub fn jsc_value_new_number(context: *mut JSCContext, number: c_double) -> *mut JSCValue; + pub fn jsc_value_new_object(context: *mut JSCContext, instance: gpointer, jsc_class: *mut JSCClass) -> *mut JSCValue; + pub fn jsc_value_new_string(context: *mut JSCContext, string: *const c_char) -> *mut JSCValue; + pub fn jsc_value_new_string_from_bytes(context: *mut JSCContext, bytes: *mut glib::GBytes) -> *mut JSCValue; + #[cfg(any(feature = "v2_38", feature = "dox"))] + #[cfg_attr(feature = "dox", doc(cfg(feature = "v2_38")))] + pub fn jsc_value_new_typed_array(context: *mut JSCContext, type_: JSCTypedArrayType, length: size_t) -> *mut JSCValue; + pub fn jsc_value_new_undefined(context: *mut JSCContext) -> *mut JSCValue; + #[cfg(any(feature = "v2_38", feature = "dox"))] + #[cfg_attr(feature = "dox", doc(cfg(feature = "v2_38")))] + pub fn jsc_value_array_buffer_get_data(value: *mut JSCValue, size: *mut size_t) -> gpointer; + #[cfg(any(feature = "v2_38", feature = "dox"))] + #[cfg_attr(feature = "dox", doc(cfg(feature = "v2_38")))] + pub fn jsc_value_array_buffer_get_size(value: *mut JSCValue) -> size_t; + pub fn jsc_value_constructor_call(value: *mut JSCValue, first_parameter_type: GType, ...) -> *mut JSCValue; + pub fn jsc_value_constructor_callv(value: *mut JSCValue, n_parameters: c_uint, parameters: *mut *mut JSCValue) -> *mut JSCValue; + pub fn jsc_value_function_call(value: *mut JSCValue, first_parameter_type: GType, ...) -> *mut JSCValue; + pub fn jsc_value_function_callv(value: *mut JSCValue, n_parameters: c_uint, parameters: *mut *mut JSCValue) -> *mut JSCValue; + pub fn jsc_value_get_context(value: *mut JSCValue) -> *mut JSCContext; + pub fn jsc_value_is_array(value: *mut JSCValue) -> gboolean; + #[cfg(any(feature = "v2_38", feature = "dox"))] + #[cfg_attr(feature = "dox", doc(cfg(feature = "v2_38")))] + pub fn jsc_value_is_array_buffer(value: *mut JSCValue) -> gboolean; + pub fn jsc_value_is_boolean(value: *mut JSCValue) -> gboolean; + pub fn jsc_value_is_constructor(value: *mut JSCValue) -> gboolean; + pub fn jsc_value_is_function(value: *mut JSCValue) -> gboolean; + pub fn jsc_value_is_null(value: *mut JSCValue) -> gboolean; + pub fn jsc_value_is_number(value: *mut JSCValue) -> gboolean; + pub fn jsc_value_is_object(value: *mut JSCValue) -> gboolean; + pub fn jsc_value_is_string(value: *mut JSCValue) -> gboolean; + #[cfg(any(feature = "v2_38", feature = "dox"))] + #[cfg_attr(feature = "dox", doc(cfg(feature = "v2_38")))] + pub fn jsc_value_is_typed_array(value: *mut JSCValue) -> gboolean; + pub fn jsc_value_is_undefined(value: *mut JSCValue) -> gboolean; + #[cfg(any(feature = "v2_38", feature = "dox"))] + #[cfg_attr(feature = "dox", doc(cfg(feature = "v2_38")))] + pub fn jsc_value_new_typed_array_with_buffer(array_buffer: *mut JSCValue, type_: JSCTypedArrayType, offset: size_t, length: ssize_t) -> *mut JSCValue; + pub fn jsc_value_object_define_property_accessor(value: *mut JSCValue, property_name: *const c_char, flags: JSCValuePropertyFlags, property_type: GType, getter: gobject::GCallback, setter: gobject::GCallback, user_data: gpointer, destroy_notify: glib::GDestroyNotify); + pub fn jsc_value_object_define_property_data(value: *mut JSCValue, property_name: *const c_char, flags: JSCValuePropertyFlags, property_value: *mut JSCValue); + pub fn jsc_value_object_delete_property(value: *mut JSCValue, name: *const c_char) -> gboolean; + pub fn jsc_value_object_enumerate_properties(value: *mut JSCValue) -> *mut *mut c_char; + pub fn jsc_value_object_get_property(value: *mut JSCValue, name: *const c_char) -> *mut JSCValue; + pub fn jsc_value_object_get_property_at_index(value: *mut JSCValue, index: c_uint) -> *mut JSCValue; + pub fn jsc_value_object_has_property(value: *mut JSCValue, name: *const c_char) -> gboolean; + pub fn jsc_value_object_invoke_method(value: *mut JSCValue, name: *const c_char, first_parameter_type: GType, ...) -> *mut JSCValue; + pub fn jsc_value_object_invoke_methodv(value: *mut JSCValue, name: *const c_char, n_parameters: c_uint, parameters: *mut *mut JSCValue) -> *mut JSCValue; + pub fn jsc_value_object_is_instance_of(value: *mut JSCValue, name: *const c_char) -> gboolean; + pub fn jsc_value_object_set_property(value: *mut JSCValue, name: *const c_char, property: *mut JSCValue); + pub fn jsc_value_object_set_property_at_index(value: *mut JSCValue, index: c_uint, property: *mut JSCValue); + pub fn jsc_value_to_boolean(value: *mut JSCValue) -> gboolean; + pub fn jsc_value_to_double(value: *mut JSCValue) -> c_double; + pub fn jsc_value_to_int32(value: *mut JSCValue) -> i32; + #[cfg(any(feature = "v2_28", feature = "dox"))] + #[cfg_attr(feature = "dox", doc(cfg(feature = "v2_28")))] + pub fn jsc_value_to_json(value: *mut JSCValue, indent: c_uint) -> *mut c_char; + pub fn jsc_value_to_string(value: *mut JSCValue) -> *mut c_char; + pub fn jsc_value_to_string_as_bytes(value: *mut JSCValue) -> *mut glib::GBytes; + #[cfg(any(feature = "v2_38", feature = "dox"))] + #[cfg_attr(feature = "dox", doc(cfg(feature = "v2_38")))] + pub fn jsc_value_typed_array_get_buffer(value: *mut JSCValue) -> *mut JSCValue; + #[cfg(any(feature = "v2_38", feature = "dox"))] + #[cfg_attr(feature = "dox", doc(cfg(feature = "v2_38")))] + pub fn jsc_value_typed_array_get_data(value: *mut JSCValue, length: *mut size_t) -> gpointer; + #[cfg(any(feature = "v2_38", feature = "dox"))] + #[cfg_attr(feature = "dox", doc(cfg(feature = "v2_38")))] + pub fn jsc_value_typed_array_get_length(value: *mut JSCValue) -> size_t; + #[cfg(any(feature = "v2_38", feature = "dox"))] + #[cfg_attr(feature = "dox", doc(cfg(feature = "v2_38")))] + pub fn jsc_value_typed_array_get_offset(value: *mut JSCValue) -> size_t; + #[cfg(any(feature = "v2_38", feature = "dox"))] + #[cfg_attr(feature = "dox", doc(cfg(feature = "v2_38")))] + pub fn jsc_value_typed_array_get_size(value: *mut JSCValue) -> size_t; + #[cfg(any(feature = "v2_38", feature = "dox"))] + #[cfg_attr(feature = "dox", doc(cfg(feature = "v2_38")))] + pub fn jsc_value_typed_array_get_type(value: *mut JSCValue) -> JSCTypedArrayType; - //========================================================================= - // JSCContext - //========================================================================= - pub fn jsc_context_get_type() -> GType; - pub fn jsc_context_new() -> *mut JSCContext; - pub fn jsc_context_new_with_virtual_machine(vm: *mut JSCVirtualMachine) -> *mut JSCContext; - pub fn jsc_context_get_current() -> *mut JSCContext; - pub fn jsc_context_check_syntax( - context: *mut JSCContext, - code: *const c_char, - length: ssize_t, - mode: JSCCheckSyntaxMode, - uri: *const c_char, - line_number: c_uint, - exception: *mut *mut JSCException, - ) -> JSCCheckSyntaxResult; - pub fn jsc_context_clear_exception(context: *mut JSCContext); - pub fn jsc_context_evaluate( - context: *mut JSCContext, - code: *const c_char, - length: ssize_t, - ) -> *mut JSCValue; - pub fn jsc_context_evaluate_in_object( - context: *mut JSCContext, - code: *const c_char, - length: ssize_t, - object_instance: gpointer, - object_class: *mut JSCClass, - uri: *const c_char, - line_number: c_uint, - object: *mut *mut JSCValue, - ) -> *mut JSCValue; - pub fn jsc_context_evaluate_with_source_uri( - context: *mut JSCContext, - code: *const c_char, - length: ssize_t, - uri: *const c_char, - line_number: c_uint, - ) -> *mut JSCValue; - pub fn jsc_context_get_exception(context: *mut JSCContext) -> *mut JSCException; - pub fn jsc_context_get_global_object(context: *mut JSCContext) -> *mut JSCValue; - pub fn jsc_context_get_value(context: *mut JSCContext, name: *const c_char) -> *mut JSCValue; - pub fn jsc_context_get_virtual_machine(context: *mut JSCContext) -> *mut JSCVirtualMachine; - pub fn jsc_context_pop_exception_handler(context: *mut JSCContext); - pub fn jsc_context_push_exception_handler( - context: *mut JSCContext, - handler: JSCExceptionHandler, - user_data: gpointer, - destroy_notify: glib::GDestroyNotify, - ); - pub fn jsc_context_register_class( - context: *mut JSCContext, - name: *const c_char, - parent_class: *mut JSCClass, - vtable: *mut JSCClassVTable, - destroy_notify: glib::GDestroyNotify, - ) -> *mut JSCClass; - pub fn jsc_context_set_value(context: *mut JSCContext, name: *const c_char, value: *mut JSCValue); - pub fn jsc_context_throw(context: *mut JSCContext, error_message: *const c_char); - pub fn jsc_context_throw_exception(context: *mut JSCContext, exception: *mut JSCException); - pub fn jsc_context_throw_printf(context: *mut JSCContext, format: *const c_char, ...); - pub fn jsc_context_throw_with_name( - context: *mut JSCContext, - error_name: *const c_char, - error_message: *const c_char, - ); - pub fn jsc_context_throw_with_name_printf( - context: *mut JSCContext, - error_name: *const c_char, - format: *const c_char, - ... - ); + //========================================================================= + // JSCVirtualMachine + //========================================================================= + pub fn jsc_virtual_machine_get_type() -> GType; + pub fn jsc_virtual_machine_new() -> *mut JSCVirtualMachine; - //========================================================================= - // JSCException - //========================================================================= - pub fn jsc_exception_get_type() -> GType; - pub fn jsc_exception_new(context: *mut JSCContext, message: *const c_char) -> *mut JSCException; - pub fn jsc_exception_new_printf( - context: *mut JSCContext, - format: *const c_char, - ... - ) -> *mut JSCException; - //pub fn jsc_exception_new_vprintf(context: *mut JSCContext, format: *const c_char, args: /*Unimplemented*/va_list) -> *mut JSCException; - pub fn jsc_exception_new_with_name( - context: *mut JSCContext, - name: *const c_char, - message: *const c_char, - ) -> *mut JSCException; - pub fn jsc_exception_new_with_name_printf( - context: *mut JSCContext, - name: *const c_char, - format: *const c_char, - ... - ) -> *mut JSCException; - //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; - pub fn jsc_exception_get_backtrace_string(exception: *mut JSCException) -> *const c_char; - pub fn jsc_exception_get_column_number(exception: *mut JSCException) -> c_uint; - pub fn jsc_exception_get_line_number(exception: *mut JSCException) -> c_uint; - pub fn jsc_exception_get_message(exception: *mut JSCException) -> *const c_char; - pub fn jsc_exception_get_name(exception: *mut JSCException) -> *const c_char; - pub fn jsc_exception_get_source_uri(exception: *mut JSCException) -> *const c_char; - pub fn jsc_exception_report(exception: *mut JSCException) -> *mut c_char; - pub fn jsc_exception_to_string(exception: *mut JSCException) -> *mut c_char; + //========================================================================= + // JSCWeakValue + //========================================================================= + pub fn jsc_weak_value_get_type() -> GType; + pub fn jsc_weak_value_new(value: *mut JSCValue) -> *mut JSCWeakValue; + pub fn jsc_weak_value_get_value(weak_value: *mut JSCWeakValue) -> *mut JSCValue; - //========================================================================= - // JSCValue - //========================================================================= - pub fn jsc_value_get_type() -> GType; - pub fn jsc_value_new_array( - context: *mut JSCContext, - first_item_type: GType, - ... - ) -> *mut JSCValue; - pub fn jsc_value_new_array_from_garray( - context: *mut JSCContext, - array: *mut glib::GPtrArray, - ) -> *mut JSCValue; - pub fn jsc_value_new_array_from_strv( - context: *mut JSCContext, - strv: *const *const c_char, - ) -> *mut JSCValue; - pub fn jsc_value_new_boolean(context: *mut JSCContext, value: gboolean) -> *mut JSCValue; - #[cfg(any(feature = "v2_28", feature = "dox"))] - #[cfg_attr(feature = "dox", doc(cfg(feature = "v2_28")))] - pub fn jsc_value_new_from_json(context: *mut JSCContext, json: *const c_char) -> *mut JSCValue; - pub fn jsc_value_new_function( - context: *mut JSCContext, - name: *const c_char, - callback: gobject::GCallback, - user_data: gpointer, - destroy_notify: glib::GDestroyNotify, - return_type: GType, - n_params: c_uint, - ... - ) -> *mut JSCValue; - pub fn jsc_value_new_function_variadic( - context: *mut JSCContext, - name: *const c_char, - callback: JSCVariadicFunction, - user_data: gpointer, - destroy_notify: glib::GDestroyNotify, - return_type: GType, - ) -> *mut JSCValue; - pub fn jsc_value_new_functionv( - context: *mut JSCContext, - name: *const c_char, - callback: gobject::GCallback, - user_data: gpointer, - destroy_notify: glib::GDestroyNotify, - return_type: GType, - n_parameters: c_uint, - parameter_types: *mut GType, - ) -> *mut JSCValue; - pub fn jsc_value_new_null(context: *mut JSCContext) -> *mut JSCValue; - pub fn jsc_value_new_number(context: *mut JSCContext, number: c_double) -> *mut JSCValue; - pub fn jsc_value_new_object( - context: *mut JSCContext, - instance: gpointer, - jsc_class: *mut JSCClass, - ) -> *mut JSCValue; - pub fn jsc_value_new_string(context: *mut JSCContext, string: *const c_char) -> *mut JSCValue; - pub fn jsc_value_new_string_from_bytes( - context: *mut JSCContext, - bytes: *mut glib::GBytes, - ) -> *mut JSCValue; - pub fn jsc_value_new_undefined(context: *mut JSCContext) -> *mut JSCValue; - pub fn jsc_value_constructor_call( - value: *mut JSCValue, - first_parameter_type: GType, - ... - ) -> *mut JSCValue; - pub fn jsc_value_constructor_callv( - value: *mut JSCValue, - n_parameters: c_uint, - parameters: *mut *mut JSCValue, - ) -> *mut JSCValue; - pub fn jsc_value_function_call( - value: *mut JSCValue, - first_parameter_type: GType, - ... - ) -> *mut JSCValue; - pub fn jsc_value_function_callv( - value: *mut JSCValue, - n_parameters: c_uint, - parameters: *mut *mut JSCValue, - ) -> *mut JSCValue; - pub fn jsc_value_get_context(value: *mut JSCValue) -> *mut JSCContext; - pub fn jsc_value_is_array(value: *mut JSCValue) -> gboolean; - pub fn jsc_value_is_boolean(value: *mut JSCValue) -> gboolean; - pub fn jsc_value_is_constructor(value: *mut JSCValue) -> gboolean; - pub fn jsc_value_is_function(value: *mut JSCValue) -> gboolean; - pub fn jsc_value_is_null(value: *mut JSCValue) -> gboolean; - pub fn jsc_value_is_number(value: *mut JSCValue) -> gboolean; - pub fn jsc_value_is_object(value: *mut JSCValue) -> gboolean; - pub fn jsc_value_is_string(value: *mut JSCValue) -> gboolean; - pub fn jsc_value_is_undefined(value: *mut JSCValue) -> gboolean; - pub fn jsc_value_object_define_property_accessor( - value: *mut JSCValue, - property_name: *const c_char, - flags: JSCValuePropertyFlags, - property_type: GType, - getter: JSCGetter, - setter: JSCSetter, - user_data: gpointer, - destroy_notify: glib::GDestroyNotify, - ); - pub fn jsc_value_object_define_property_data( - value: *mut JSCValue, - property_name: *const c_char, - flags: JSCValuePropertyFlags, - property_value: *mut JSCValue, - ); - pub fn jsc_value_object_delete_property(value: *mut JSCValue, name: *const c_char) -> gboolean; - pub fn jsc_value_object_enumerate_properties(value: *mut JSCValue) -> *mut *mut c_char; - pub fn jsc_value_object_get_property(value: *mut JSCValue, name: *const c_char) -> *mut JSCValue; - pub fn jsc_value_object_get_property_at_index( - value: *mut JSCValue, - index: c_uint, - ) -> *mut JSCValue; - pub fn jsc_value_object_has_property(value: *mut JSCValue, name: *const c_char) -> gboolean; - pub fn jsc_value_object_invoke_method( - value: *mut JSCValue, - name: *const c_char, - first_parameter_type: GType, - ... - ) -> *mut JSCValue; - pub fn jsc_value_object_invoke_methodv( - value: *mut JSCValue, - name: *const c_char, - n_parameters: c_uint, - parameters: *mut *mut JSCValue, - ) -> *mut JSCValue; - pub fn jsc_value_object_is_instance_of(value: *mut JSCValue, name: *const c_char) -> gboolean; - pub fn jsc_value_object_set_property( - value: *mut JSCValue, - name: *const c_char, - property: *mut JSCValue, - ); - pub fn jsc_value_object_set_property_at_index( - value: *mut JSCValue, - index: c_uint, - property: *mut JSCValue, - ); - pub fn jsc_value_to_boolean(value: *mut JSCValue) -> gboolean; - pub fn jsc_value_to_double(value: *mut JSCValue) -> c_double; - pub fn jsc_value_to_int32(value: *mut JSCValue) -> i32; - #[cfg(any(feature = "v2_28", feature = "dox"))] - #[cfg_attr(feature = "dox", doc(cfg(feature = "v2_28")))] - pub fn jsc_value_to_json(value: *mut JSCValue, indent: c_uint) -> *mut c_char; - pub fn jsc_value_to_string(value: *mut JSCValue) -> *mut c_char; - pub fn jsc_value_to_string_as_bytes(value: *mut JSCValue) -> *mut glib::GBytes; - - //========================================================================= - // JSCVirtualMachine - //========================================================================= - pub fn jsc_virtual_machine_get_type() -> GType; - pub fn jsc_virtual_machine_new() -> *mut JSCVirtualMachine; - - //========================================================================= - // JSCWeakValue - //========================================================================= - pub fn jsc_weak_value_get_type() -> GType; - pub fn jsc_weak_value_new(value: *mut JSCValue) -> *mut JSCWeakValue; - pub fn jsc_weak_value_get_value(weak_value: *mut JSCWeakValue) -> *mut JSCValue; - - //========================================================================= - // Other functions - //========================================================================= - pub fn jsc_get_major_version() -> c_uint; - pub fn jsc_get_micro_version() -> c_uint; - pub fn jsc_get_minor_version() -> c_uint; - pub fn jsc_options_foreach(function: JSCOptionsFunc, user_data: gpointer); - pub fn jsc_options_get_boolean(option: *const c_char, value: *mut gboolean) -> gboolean; - pub fn jsc_options_get_double(option: *const c_char, value: *mut c_double) -> gboolean; - pub fn jsc_options_get_int(option: *const c_char, value: *mut c_int) -> gboolean; - pub fn jsc_options_get_option_group() -> *mut glib::GOptionGroup; - pub fn jsc_options_get_range_string(option: *const c_char, value: *mut *mut c_char) -> gboolean; - pub fn jsc_options_get_size(option: *const c_char, value: *mut size_t) -> gboolean; - pub fn jsc_options_get_string(option: *const c_char, value: *mut *mut c_char) -> gboolean; - pub fn jsc_options_get_uint(option: *const c_char, value: *mut c_uint) -> gboolean; - pub fn jsc_options_set_boolean(option: *const c_char, value: gboolean) -> gboolean; - pub fn jsc_options_set_double(option: *const c_char, value: c_double) -> gboolean; - pub fn jsc_options_set_int(option: *const c_char, value: c_int) -> gboolean; - pub fn jsc_options_set_range_string(option: *const c_char, value: *const c_char) -> gboolean; - pub fn jsc_options_set_size(option: *const c_char, value: size_t) -> gboolean; - pub fn jsc_options_set_string(option: *const c_char, value: *const c_char) -> gboolean; - pub fn jsc_options_set_uint(option: *const c_char, value: c_uint) -> gboolean; + //========================================================================= + // Other functions + //========================================================================= + pub fn jsc_get_major_version() -> c_uint; + pub fn jsc_get_micro_version() -> c_uint; + pub fn jsc_get_minor_version() -> c_uint; + pub fn jsc_options_foreach(function: JSCOptionsFunc, user_data: gpointer); + pub fn jsc_options_get_boolean(option: *const c_char, value: *mut gboolean) -> gboolean; + pub fn jsc_options_get_double(option: *const c_char, value: *mut c_double) -> gboolean; + pub fn jsc_options_get_int(option: *const c_char, value: *mut c_int) -> gboolean; + pub fn jsc_options_get_option_group() -> *mut glib::GOptionGroup; + pub fn jsc_options_get_range_string(option: *const c_char, value: *mut *mut c_char) -> gboolean; + pub fn jsc_options_get_size(option: *const c_char, value: *mut size_t) -> gboolean; + pub fn jsc_options_get_string(option: *const c_char, value: *mut *mut c_char) -> gboolean; + pub fn jsc_options_get_uint(option: *const c_char, value: *mut c_uint) -> gboolean; + pub fn jsc_options_set_boolean(option: *const c_char, value: gboolean) -> gboolean; + pub fn jsc_options_set_double(option: *const c_char, value: c_double) -> gboolean; + pub fn jsc_options_set_int(option: *const c_char, value: c_int) -> gboolean; + pub fn jsc_options_set_range_string(option: *const c_char, value: *const c_char) -> gboolean; + pub fn jsc_options_set_size(option: *const c_char, value: size_t) -> gboolean; + pub fn jsc_options_set_string(option: *const c_char, value: *const c_char) -> gboolean; + pub fn jsc_options_set_uint(option: *const c_char, value: c_uint) -> gboolean; } diff --git a/sys/tests/abi.rs b/sys/tests/abi.rs index 286f845..ae5ddef 100644 --- a/sys/tests/abi.rs +++ b/sys/tests/abi.rs @@ -1,350 +1,263 @@ -// Generated by gir (https://github.com/gtk-rs/gir @ a97e6087cf6b) -// from gir-files (https://github.com/vhdirk/gir-files @ 5c5c482b7f4a) +// Generated by gir (https://github.com/gtk-rs/gir @ 92965146f2fb) +// from ../gir-files (@ 8be196040235) // DO NOT EDIT use javascriptcore_rs_sys::*; -use std::{ - env, - error::Error, - ffi::OsString, - mem::{align_of, size_of}, - path::Path, - process::Command, - str, -}; +use std::mem::{align_of, size_of}; +use std::env; +use std::error::Error; +use std::ffi::OsString; +use std::path::Path; +use std::process::Command; +use std::str; use tempfile::Builder; static PACKAGES: &[&str] = &["javascriptcoregtk-4.1"]; #[derive(Clone, Debug)] struct Compiler { - pub args: Vec, + pub args: Vec, } impl Compiler { - pub fn new() -> Result> { - let mut args = get_var("CC", "cc")?; - args.push("-Wno-deprecated-declarations".to_owned()); - // For _Generic - args.push("-std=c11".to_owned()); - // For %z support in printf when using MinGW. - args.push("-D__USE_MINGW_ANSI_STDIO".to_owned()); - args.extend(get_var("CFLAGS", "")?); - args.extend(get_var("CPPFLAGS", "")?); - args.extend(pkg_config_cflags(PACKAGES)?); - Ok(Self { args }) - } - - pub fn compile(&self, src: &Path, out: &Path) -> Result<(), Box> { - let mut cmd = self.to_command(); - cmd.arg(src); - cmd.arg("-o"); - cmd.arg(out); - let status = cmd.spawn()?.wait()?; - if !status.success() { - return Err(format!("compilation command {:?} failed, {}", &cmd, status).into()); + pub fn new() -> Result> { + let mut args = get_var("CC", "cc")?; + args.push("-Wno-deprecated-declarations".to_owned()); + // For _Generic + args.push("-std=c11".to_owned()); + // For %z support in printf when using MinGW. + args.push("-D__USE_MINGW_ANSI_STDIO".to_owned()); + args.extend(get_var("CFLAGS", "")?); + args.extend(get_var("CPPFLAGS", "")?); + args.extend(pkg_config_cflags(PACKAGES)?); + Ok(Self { args }) } - Ok(()) - } - fn to_command(&self) -> Command { - let mut cmd = Command::new(&self.args[0]); - cmd.args(&self.args[1..]); - cmd - } + pub fn compile(&self, src: &Path, out: &Path) -> Result<(), Box> { + let mut cmd = self.to_command(); + cmd.arg(src); + cmd.arg("-o"); + cmd.arg(out); + let status = cmd.spawn()?.wait()?; + if !status.success() { + return Err(format!("compilation command {cmd:?} failed, {status}").into()); + } + Ok(()) + } + + fn to_command(&self) -> Command { + let mut cmd = Command::new(&self.args[0]); + cmd.args(&self.args[1..]); + cmd + } } fn get_var(name: &str, default: &str) -> Result, Box> { - match env::var(name) { - Ok(value) => Ok(shell_words::split(&value)?), - Err(env::VarError::NotPresent) => Ok(shell_words::split(default)?), - Err(err) => Err(format!("{} {}", name, err).into()), - } + match env::var(name) { + Ok(value) => Ok(shell_words::split(&value)?), + Err(env::VarError::NotPresent) => Ok(shell_words::split(default)?), + Err(err) => Err(format!("{name} {err}").into()), + } } fn pkg_config_cflags(packages: &[&str]) -> Result, Box> { - if packages.is_empty() { - return Ok(Vec::new()); - } - let pkg_config = env::var_os("PKG_CONFIG").unwrap_or_else(|| OsString::from("pkg-config")); - let mut cmd = Command::new(pkg_config); - cmd.arg("--cflags"); - cmd.args(packages); - let out = cmd.output()?; - if !out.status.success() { - return Err(format!("command {:?} returned {}", &cmd, out.status).into()); - } - let stdout = str::from_utf8(&out.stdout)?; - Ok(shell_words::split(stdout.trim())?) + if packages.is_empty() { + return Ok(Vec::new()); + } + let pkg_config = env::var_os("PKG_CONFIG") + .unwrap_or_else(|| OsString::from("pkg-config")); + let mut cmd = Command::new(pkg_config); + cmd.arg("--cflags"); + cmd.args(packages); + let out = cmd.output()?; + if !out.status.success() { + return Err(format!("command {cmd:?} returned {}", out.status).into()); + } + let stdout = str::from_utf8(&out.stdout)?; + Ok(shell_words::split(stdout.trim())?) } + #[derive(Copy, Clone, Debug, Eq, PartialEq)] struct Layout { - size: usize, - alignment: usize, + size: usize, + alignment: usize, } #[derive(Copy, Clone, Debug, Default, Eq, PartialEq)] struct Results { - /// Number of successfully completed tests. - passed: usize, - /// Total number of failed tests (including those that failed to compile). - failed: usize, + /// Number of successfully completed tests. + passed: usize, + /// Total number of failed tests (including those that failed to compile). + failed: usize, } impl Results { - fn record_passed(&mut self) { - self.passed += 1; - } - fn record_failed(&mut self) { - self.failed += 1; - } - fn summary(&self) -> String { - format!("{} passed; {} failed", self.passed, self.failed) - } - fn expect_total_success(&self) { - if self.failed == 0 { - println!("OK: {}", self.summary()); - } else { - panic!("FAILED: {}", self.summary()); - }; - } + fn record_passed(&mut self) { + self.passed += 1; + } + fn record_failed(&mut self) { + self.failed += 1; + } + fn summary(&self) -> String { + format!("{} passed; {} failed", self.passed, self.failed) + } + fn expect_total_success(&self) { + if self.failed == 0 { + println!("OK: {}", self.summary()); + } else { + panic!("FAILED: {}", self.summary()); + }; + } } #[test] +#[cfg(target_os = "linux")] fn cross_validate_constants_with_c() { - let mut c_constants: Vec<(String, String)> = Vec::new(); + let mut c_constants: Vec<(String, String)> = Vec::new(); - for l in get_c_output("constant").unwrap().lines() { - let mut words = l.trim().split(';'); - let name = words.next().expect("Failed to parse name").to_owned(); - let value = words - .next() - .and_then(|s| s.parse().ok()) - .expect("Failed to parse value"); - c_constants.push((name, value)); - } - - let mut results = Results::default(); - - for ((rust_name, rust_value), (c_name, c_value)) in RUST_CONSTANTS.iter().zip(c_constants.iter()) - { - if rust_name != c_name { - results.record_failed(); - eprintln!("Name mismatch:\nRust: {:?}\nC: {:?}", rust_name, c_name,); - continue; + for l in get_c_output("constant").unwrap().lines() { + let (name, value) = l.split_once(';').expect("Missing ';' separator"); + c_constants.push((name.to_owned(), value.to_owned())); } - if rust_value != c_value { - results.record_failed(); - eprintln!( - "Constant value mismatch for {}\nRust: {:?}\nC: {:?}", - rust_name, rust_value, &c_value - ); - continue; + let mut results = Results::default(); + + for ((rust_name, rust_value), (c_name, c_value)) in + RUST_CONSTANTS.iter().zip(c_constants.iter()) + { + if rust_name != c_name { + results.record_failed(); + eprintln!("Name mismatch:\nRust: {rust_name:?}\nC: {c_name:?}"); + continue; + } + + if rust_value != c_value { + results.record_failed(); + eprintln!( + "Constant value mismatch for {rust_name}\nRust: {rust_value:?}\nC: {c_value:?}", + ); + continue; + } + + results.record_passed(); } - results.record_passed(); - } - - results.expect_total_success(); + results.expect_total_success(); } #[test] +#[cfg(target_os = "linux")] fn cross_validate_layout_with_c() { - let mut c_layouts = Vec::new(); + let mut c_layouts = Vec::new(); - for l in get_c_output("layout").unwrap().lines() { - let mut words = l.trim().split(';'); - let name = words.next().expect("Failed to parse name").to_owned(); - let size = words - .next() - .and_then(|s| s.parse().ok()) - .expect("Failed to parse size"); - let alignment = words - .next() - .and_then(|s| s.parse().ok()) - .expect("Failed to parse alignment"); - c_layouts.push((name, Layout { size, alignment })); - } - - let mut results = Results::default(); - - for ((rust_name, rust_layout), (c_name, c_layout)) in RUST_LAYOUTS.iter().zip(c_layouts.iter()) { - if rust_name != c_name { - results.record_failed(); - eprintln!("Name mismatch:\nRust: {:?}\nC: {:?}", rust_name, c_name,); - continue; + for l in get_c_output("layout").unwrap().lines() { + let (name, value) = l.split_once(';').expect("Missing first ';' separator"); + let (size, alignment) = value.split_once(';').expect("Missing second ';' separator"); + let size = size.parse().expect("Failed to parse size"); + let alignment = alignment.parse().expect("Failed to parse alignment"); + c_layouts.push((name.to_owned(), Layout { size, alignment })); } - if rust_layout != c_layout { - results.record_failed(); - eprintln!( - "Layout mismatch for {}\nRust: {:?}\nC: {:?}", - rust_name, rust_layout, &c_layout - ); - continue; + let mut results = Results::default(); + + for ((rust_name, rust_layout), (c_name, c_layout)) in + RUST_LAYOUTS.iter().zip(c_layouts.iter()) + { + if rust_name != c_name { + results.record_failed(); + eprintln!("Name mismatch:\nRust: {rust_name:?}\nC: {c_name:?}"); + continue; + } + + if rust_layout != c_layout { + results.record_failed(); + eprintln!( + "Layout mismatch for {rust_name}\nRust: {rust_layout:?}\nC: {c_layout:?}", + ); + continue; + } + + results.record_passed(); } - results.record_passed(); - } - - results.expect_total_success(); + results.expect_total_success(); } fn get_c_output(name: &str) -> Result> { - let tmpdir = Builder::new().prefix("abi").tempdir()?; - let exe = tmpdir.path().join(name); - let c_file = Path::new("tests").join(name).with_extension("c"); + let tmpdir = Builder::new().prefix("abi").tempdir()?; + let exe = tmpdir.path().join(name); + let c_file = Path::new("tests").join(name).with_extension("c"); - let cc = Compiler::new().expect("configured compiler"); - cc.compile(&c_file, &exe)?; + let cc = Compiler::new().expect("configured compiler"); + cc.compile(&c_file, &exe)?; - let mut abi_cmd = Command::new(exe); - let output = abi_cmd.output()?; - if !output.status.success() { - return Err(format!("command {:?} failed, {:?}", &abi_cmd, &output).into()); - } + let mut abi_cmd = Command::new(exe); + let output = abi_cmd.output()?; + if !output.status.success() { + return Err(format!("command {abi_cmd:?} failed, {output:?}").into()); + } - Ok(String::from_utf8(output.stdout)?) + Ok(String::from_utf8(output.stdout)?) } const RUST_LAYOUTS: &[(&str, Layout)] = &[ - ( - "JSCCheckSyntaxMode", - Layout { - size: size_of::(), - alignment: align_of::(), - }, - ), - ( - "JSCCheckSyntaxResult", - Layout { - size: size_of::(), - alignment: align_of::(), - }, - ), - ( - "JSCClassVTable", - Layout { - size: size_of::(), - alignment: align_of::(), - }, - ), - ( - "JSCContext", - Layout { - size: size_of::(), - alignment: align_of::(), - }, - ), - ( - "JSCContextClass", - Layout { - size: size_of::(), - alignment: align_of::(), - }, - ), - ( - "JSCException", - Layout { - size: size_of::(), - alignment: align_of::(), - }, - ), - ( - "JSCExceptionClass", - Layout { - size: size_of::(), - alignment: align_of::(), - }, - ), - ( - "JSCOptionType", - Layout { - size: size_of::(), - alignment: align_of::(), - }, - ), - ( - "JSCValue", - Layout { - size: size_of::(), - alignment: align_of::(), - }, - ), - ( - "JSCValueClass", - Layout { - size: size_of::(), - alignment: align_of::(), - }, - ), - ( - "JSCValuePropertyFlags", - Layout { - size: size_of::(), - alignment: align_of::(), - }, - ), - ( - "JSCVirtualMachine", - Layout { - size: size_of::(), - alignment: align_of::(), - }, - ), - ( - "JSCVirtualMachineClass", - Layout { - size: size_of::(), - alignment: align_of::(), - }, - ), - ( - "JSCWeakValue", - Layout { - size: size_of::(), - alignment: align_of::(), - }, - ), - ( - "JSCWeakValueClass", - Layout { - size: size_of::(), - alignment: align_of::(), - }, - ), + ("JSCCheckSyntaxMode", Layout {size: size_of::(), alignment: align_of::()}), + ("JSCCheckSyntaxResult", Layout {size: size_of::(), alignment: align_of::()}), + ("JSCClassVTable", Layout {size: size_of::(), alignment: align_of::()}), + ("JSCContext", Layout {size: size_of::(), alignment: align_of::()}), + ("JSCContextClass", Layout {size: size_of::(), alignment: align_of::()}), + ("JSCException", Layout {size: size_of::(), alignment: align_of::()}), + ("JSCExceptionClass", Layout {size: size_of::(), alignment: align_of::()}), + ("JSCOptionType", Layout {size: size_of::(), alignment: align_of::()}), + ("JSCTypedArrayType", Layout {size: size_of::(), alignment: align_of::()}), + ("JSCValue", Layout {size: size_of::(), alignment: align_of::()}), + ("JSCValueClass", Layout {size: size_of::(), alignment: align_of::()}), + ("JSCValuePropertyFlags", Layout {size: size_of::(), alignment: align_of::()}), + ("JSCVirtualMachine", Layout {size: size_of::(), alignment: align_of::()}), + ("JSCVirtualMachineClass", Layout {size: size_of::(), alignment: align_of::()}), + ("JSCWeakValue", Layout {size: size_of::(), alignment: align_of::()}), + ("JSCWeakValueClass", Layout {size: size_of::(), alignment: align_of::()}), ]; -// It'd be nice to have a bit more documentation on this const RUST_CONSTANTS: &[(&str, &str)] = &[ - ("(gint) JSC_CHECK_SYNTAX_MODE_MODULE", "1"), - ("(gint) JSC_CHECK_SYNTAX_MODE_SCRIPT", "0"), - ("(gint) JSC_CHECK_SYNTAX_RESULT_IRRECOVERABLE_ERROR", "2"), - ("(gint) JSC_CHECK_SYNTAX_RESULT_OUT_OF_MEMORY_ERROR", "4"), - ("(gint) JSC_CHECK_SYNTAX_RESULT_RECOVERABLE_ERROR", "1"), - ("(gint) JSC_CHECK_SYNTAX_RESULT_STACK_OVERFLOW_ERROR", "5"), - ("(gint) JSC_CHECK_SYNTAX_RESULT_SUCCESS", "0"), - ( - "(gint) JSC_CHECK_SYNTAX_RESULT_UNTERMINATED_LITERAL_ERROR", - "3", - ), - ("JSC_MAJOR_VERSION", "2"), - ("JSC_MICRO_VERSION", "2"), - ("JSC_MINOR_VERSION", "38"), - ("JSC_OPTIONS_USE_DFG", "useDFGJIT"), - ("JSC_OPTIONS_USE_FTL", "useFTLJIT"), - ("JSC_OPTIONS_USE_JIT", "useJIT"), - ("JSC_OPTIONS_USE_LLINT", "useLLInt"), - ("(gint) JSC_OPTION_BOOLEAN", "0"), - ("(gint) JSC_OPTION_DOUBLE", "4"), - ("(gint) JSC_OPTION_INT", "1"), - ("(gint) JSC_OPTION_RANGE_STRING", "6"), - ("(gint) JSC_OPTION_SIZE", "3"), - ("(gint) JSC_OPTION_STRING", "5"), - ("(gint) JSC_OPTION_UINT", "2"), - ("(guint) JSC_VALUE_PROPERTY_CONFIGURABLE", "1"), - ("(guint) JSC_VALUE_PROPERTY_ENUMERABLE", "2"), - ("(guint) JSC_VALUE_PROPERTY_WRITABLE", "4"), + ("(gint) JSC_CHECK_SYNTAX_MODE_MODULE", "1"), + ("(gint) JSC_CHECK_SYNTAX_MODE_SCRIPT", "0"), + ("(gint) JSC_CHECK_SYNTAX_RESULT_IRRECOVERABLE_ERROR", "2"), + ("(gint) JSC_CHECK_SYNTAX_RESULT_OUT_OF_MEMORY_ERROR", "4"), + ("(gint) JSC_CHECK_SYNTAX_RESULT_RECOVERABLE_ERROR", "1"), + ("(gint) JSC_CHECK_SYNTAX_RESULT_STACK_OVERFLOW_ERROR", "5"), + ("(gint) JSC_CHECK_SYNTAX_RESULT_SUCCESS", "0"), + ("(gint) JSC_CHECK_SYNTAX_RESULT_UNTERMINATED_LITERAL_ERROR", "3"), + ("JSC_MAJOR_VERSION", "2"), + ("JSC_MICRO_VERSION", "1"), + ("JSC_MINOR_VERSION", "38"), + ("JSC_OPTIONS_USE_DFG", "useDFGJIT"), + ("JSC_OPTIONS_USE_FTL", "useFTLJIT"), + ("JSC_OPTIONS_USE_JIT", "useJIT"), + ("JSC_OPTIONS_USE_LLINT", "useLLInt"), + ("(gint) JSC_OPTION_BOOLEAN", "0"), + ("(gint) JSC_OPTION_DOUBLE", "4"), + ("(gint) JSC_OPTION_INT", "1"), + ("(gint) JSC_OPTION_RANGE_STRING", "6"), + ("(gint) JSC_OPTION_SIZE", "3"), + ("(gint) JSC_OPTION_STRING", "5"), + ("(gint) JSC_OPTION_UINT", "2"), + ("(gint) JSC_TYPED_ARRAY_FLOAT32", "10"), + ("(gint) JSC_TYPED_ARRAY_FLOAT64", "11"), + ("(gint) JSC_TYPED_ARRAY_INT16", "2"), + ("(gint) JSC_TYPED_ARRAY_INT32", "3"), + ("(gint) JSC_TYPED_ARRAY_INT64", "4"), + ("(gint) JSC_TYPED_ARRAY_INT8", "1"), + ("(gint) JSC_TYPED_ARRAY_NONE", "0"), + ("(gint) JSC_TYPED_ARRAY_UINT16", "7"), + ("(gint) JSC_TYPED_ARRAY_UINT32", "8"), + ("(gint) JSC_TYPED_ARRAY_UINT64", "9"), + ("(gint) JSC_TYPED_ARRAY_UINT8", "5"), + ("(gint) JSC_TYPED_ARRAY_UINT8_CLAMPED", "6"), + ("(guint) JSC_VALUE_PROPERTY_CONFIGURABLE", "1"), + ("(guint) JSC_VALUE_PROPERTY_ENUMERABLE", "2"), + ("(guint) JSC_VALUE_PROPERTY_WRITABLE", "4"), ]; + + diff --git a/sys/tests/constant.c b/sys/tests/constant.c index 957d686..f82f0e6 100644 --- a/sys/tests/constant.c +++ b/sys/tests/constant.c @@ -1,5 +1,5 @@ -// Generated by gir (https://github.com/gtk-rs/gir @ a97e6087cf6b) -// from gir-files (https://github.com/vhdirk/gir-files @ 5c5c482b7f4a) +// Generated by gir (https://github.com/gtk-rs/gir @ 92965146f2fb) +// from ../gir-files (@ 8be196040235) // DO NOT EDIT #include "manual.h" @@ -50,6 +50,18 @@ int main() { PRINT_CONSTANT((gint) JSC_OPTION_SIZE); PRINT_CONSTANT((gint) JSC_OPTION_STRING); PRINT_CONSTANT((gint) JSC_OPTION_UINT); + PRINT_CONSTANT((gint) JSC_TYPED_ARRAY_FLOAT32); + PRINT_CONSTANT((gint) JSC_TYPED_ARRAY_FLOAT64); + PRINT_CONSTANT((gint) JSC_TYPED_ARRAY_INT16); + PRINT_CONSTANT((gint) JSC_TYPED_ARRAY_INT32); + PRINT_CONSTANT((gint) JSC_TYPED_ARRAY_INT64); + PRINT_CONSTANT((gint) JSC_TYPED_ARRAY_INT8); + PRINT_CONSTANT((gint) JSC_TYPED_ARRAY_NONE); + PRINT_CONSTANT((gint) JSC_TYPED_ARRAY_UINT16); + PRINT_CONSTANT((gint) JSC_TYPED_ARRAY_UINT32); + PRINT_CONSTANT((gint) JSC_TYPED_ARRAY_UINT64); + PRINT_CONSTANT((gint) JSC_TYPED_ARRAY_UINT8); + PRINT_CONSTANT((gint) JSC_TYPED_ARRAY_UINT8_CLAMPED); PRINT_CONSTANT((guint) JSC_VALUE_PROPERTY_CONFIGURABLE); PRINT_CONSTANT((guint) JSC_VALUE_PROPERTY_ENUMERABLE); PRINT_CONSTANT((guint) JSC_VALUE_PROPERTY_WRITABLE); diff --git a/sys/tests/layout.c b/sys/tests/layout.c index bdd7b0a..d2af17e 100644 --- a/sys/tests/layout.c +++ b/sys/tests/layout.c @@ -1,5 +1,5 @@ -// Generated by gir (https://github.com/gtk-rs/gir @ a97e6087cf6b) -// from gir-files (https://github.com/vhdirk/gir-files @ 5c5c482b7f4a) +// Generated by gir (https://github.com/gtk-rs/gir @ 92965146f2fb) +// from ../gir-files (@ 8be196040235) // DO NOT EDIT #include "manual.h" @@ -15,6 +15,7 @@ int main() { printf("%s;%zu;%zu\n", "JSCException", sizeof(JSCException), alignof(JSCException)); printf("%s;%zu;%zu\n", "JSCExceptionClass", sizeof(JSCExceptionClass), alignof(JSCExceptionClass)); printf("%s;%zu;%zu\n", "JSCOptionType", sizeof(JSCOptionType), alignof(JSCOptionType)); + printf("%s;%zu;%zu\n", "JSCTypedArrayType", sizeof(JSCTypedArrayType), alignof(JSCTypedArrayType)); printf("%s;%zu;%zu\n", "JSCValue", sizeof(JSCValue), alignof(JSCValue)); printf("%s;%zu;%zu\n", "JSCValueClass", sizeof(JSCValueClass), alignof(JSCValueClass)); printf("%s;%zu;%zu\n", "JSCValuePropertyFlags", sizeof(JSCValuePropertyFlags), alignof(JSCValuePropertyFlags));