use crate::{
objc_class, objc_ivar, objc_method, objc_object, objc_property, objc_protocol, objc_selector,
};
#[cfg(apple)]
mod inner {
#[cfg(any(
// aarch64-apple-*
target_arch = "aarch64",
// + x86_64-apple-ios (but not x86_64-apple-ios-macabi)
all(target_os = "ios", target_pointer_width = "64", not(target_abi_macabi)),
// + x86_64-apple-tvos
all(target_os = "tvos", target_pointer_width = "64"),
// + *-apple-watchos (no Rust targets with this yet)
target_os = "watchos",
))]
pub type BOOL = bool;
#[cfg(not(any(
target_arch = "aarch64",
all(target_os = "ios", target_pointer_width = "64", not(target_abi_macabi)),
all(target_os = "tvos", target_pointer_width = "64"),
target_os = "watchos",
)))]
pub type BOOL = i8;
}
#[cfg(all(any(gnustep, winobjc), libobjc2_strict_apple_compat))]
mod inner {
pub type BOOL = i8;
}
#[cfg(all(any(gnustep, winobjc), not(libobjc2_strict_apple_compat)))]
mod inner {
#[cfg(all(windows, not(all(target_pointer_width = "64", target_env = "gnu"))))]
pub type BOOL = std::os::raw::c_int;
#[cfg(not(all(windows, not(all(target_pointer_width = "64", target_env = "gnu")))))]
pub type BOOL = u8;
}
#[cfg(objfw)]
mod inner {
pub type BOOL = todo!();
}
pub type BOOL = inner::BOOL;
pub type SEL = *const objc_selector;
pub type Class = *mut objc_class;
pub type id = *mut objc_object;
pub type Ivar = *const objc_ivar;
pub type Method = *mut objc_method;
pub type Protocol = objc_protocol;
pub type objc_property_t = *mut objc_property;