use core::cell::UnsafeCell;
use core::ffi::*;
use core::marker::{PhantomData, PhantomPinned};
#[cfg(feature = "objc2")]
use objc2::__framework_prelude::*;
use crate::*;
#[repr(C)]
#[derive(Debug)]
pub struct OpaqueJSContextGroup {
inner: [u8; 0],
_p: UnsafeCell<PhantomData<(*const UnsafeCell<()>, PhantomPinned)>>,
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for OpaqueJSContextGroup {
const ENCODING_REF: Encoding =
Encoding::Pointer(&Encoding::Struct("OpaqueJSContextGroup", &[]));
}
pub type JSContextGroupRef = *const OpaqueJSContextGroup;
#[repr(C)]
#[derive(Debug)]
pub struct OpaqueJSContext {
inner: [u8; 0],
_p: UnsafeCell<PhantomData<(*const UnsafeCell<()>, PhantomPinned)>>,
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for OpaqueJSContext {
const ENCODING_REF: Encoding = Encoding::Pointer(&Encoding::Struct("OpaqueJSContext", &[]));
}
pub type JSContextRef = *const OpaqueJSContext;
#[repr(C)]
#[derive(Debug)]
pub struct OpaqueJSString {
inner: [u8; 0],
_p: UnsafeCell<PhantomData<(*const UnsafeCell<()>, PhantomPinned)>>,
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for OpaqueJSString {
const ENCODING_REF: Encoding = Encoding::Pointer(&Encoding::Struct("OpaqueJSString", &[]));
}
pub type JSStringRef = *mut OpaqueJSString;
#[repr(C)]
#[derive(Debug)]
pub struct OpaqueJSClass {
inner: [u8; 0],
_p: UnsafeCell<PhantomData<(*const UnsafeCell<()>, PhantomPinned)>>,
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for OpaqueJSClass {
const ENCODING_REF: Encoding = Encoding::Pointer(&Encoding::Struct("OpaqueJSClass", &[]));
}
pub type JSClassRef = *mut OpaqueJSClass;
#[repr(C)]
#[derive(Debug)]
pub struct OpaqueJSPropertyNameArray {
inner: [u8; 0],
_p: UnsafeCell<PhantomData<(*const UnsafeCell<()>, PhantomPinned)>>,
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for OpaqueJSPropertyNameArray {
const ENCODING_REF: Encoding =
Encoding::Pointer(&Encoding::Struct("OpaqueJSPropertyNameArray", &[]));
}
pub type JSPropertyNameArrayRef = *mut OpaqueJSPropertyNameArray;
#[repr(C)]
#[derive(Debug)]
pub struct OpaqueJSPropertyNameAccumulator {
inner: [u8; 0],
_p: UnsafeCell<PhantomData<(*const UnsafeCell<()>, PhantomPinned)>>,
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for OpaqueJSPropertyNameAccumulator {
const ENCODING_REF: Encoding =
Encoding::Pointer(&Encoding::Struct("OpaqueJSPropertyNameAccumulator", &[]));
}
pub type JSPropertyNameAccumulatorRef = *mut OpaqueJSPropertyNameAccumulator;
pub type JSTypedArrayBytesDeallocator =
Option<unsafe extern "C-unwind" fn(*mut c_void, *mut c_void)>;
#[repr(C)]
#[derive(Debug)]
pub struct OpaqueJSValue {
inner: [u8; 0],
_p: UnsafeCell<PhantomData<(*const UnsafeCell<()>, PhantomPinned)>>,
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for OpaqueJSValue {
const ENCODING_REF: Encoding = Encoding::Pointer(&Encoding::Struct("OpaqueJSValue", &[]));
}
pub type JSValueRef = *const OpaqueJSValue;
extern "C-unwind" {
pub fn JSEvaluateScript(
ctx: JSContextRef,
script: JSStringRef,
this_object: JSObjectRef,
source_url: JSStringRef,
starting_line_number: c_int,
exception: *mut JSValueRef,
) -> JSValueRef;
}
extern "C-unwind" {
pub fn JSCheckScriptSyntax(
ctx: JSContextRef,
script: JSStringRef,
source_url: JSStringRef,
starting_line_number: c_int,
exception: *mut JSValueRef,
) -> bool;
}
extern "C-unwind" {
pub fn JSGarbageCollect(ctx: JSContextRef);
}