use crate::common::*;
use crate::Foundation::*;
ns_options!(
#[underlying(NSUInteger)]
pub enum NSPointerFunctionsOptions {
NSPointerFunctionsStrongMemory = 0 << 0,
NSPointerFunctionsZeroingWeakMemory = 1 << 0,
NSPointerFunctionsOpaqueMemory = 2 << 0,
NSPointerFunctionsMallocMemory = 3 << 0,
NSPointerFunctionsMachVirtualMemory = 4 << 0,
NSPointerFunctionsWeakMemory = 5 << 0,
NSPointerFunctionsObjectPersonality = 0 << 8,
NSPointerFunctionsOpaquePersonality = 1 << 8,
NSPointerFunctionsObjectPointerPersonality = 2 << 8,
NSPointerFunctionsCStringPersonality = 3 << 8,
NSPointerFunctionsStructPersonality = 4 << 8,
NSPointerFunctionsIntegerPersonality = 5 << 8,
NSPointerFunctionsCopyIn = 1 << 16,
}
);
extern_class!(
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct NSPointerFunctions;
unsafe impl ClassType for NSPointerFunctions {
type Super = NSObject;
}
);
extern_methods!(
unsafe impl NSPointerFunctions {
#[method_id(@__retain_semantics Init initWithOptions:)]
pub unsafe fn initWithOptions(
this: Option<Allocated<Self>>,
options: NSPointerFunctionsOptions,
) -> Id<Self, Shared>;
#[method_id(@__retain_semantics Other pointerFunctionsWithOptions:)]
pub unsafe fn pointerFunctionsWithOptions(
options: NSPointerFunctionsOptions,
) -> Id<NSPointerFunctions, Shared>;
#[method(hashFunction)]
pub unsafe fn hashFunction(
&self,
) -> Option<
unsafe extern "C" fn(
NonNull<c_void>,
Option<unsafe extern "C" fn(NonNull<c_void>) -> NSUInteger>,
) -> NSUInteger,
>;
#[method(setHashFunction:)]
pub unsafe fn setHashFunction(
&self,
hashFunction: Option<
unsafe extern "C" fn(
NonNull<c_void>,
Option<unsafe extern "C" fn(NonNull<c_void>) -> NSUInteger>,
) -> NSUInteger,
>,
);
#[method(isEqualFunction)]
pub unsafe fn isEqualFunction(
&self,
) -> Option<
unsafe extern "C" fn(
NonNull<c_void>,
NonNull<c_void>,
Option<unsafe extern "C" fn(NonNull<c_void>) -> NSUInteger>,
) -> Bool,
>;
#[method(setIsEqualFunction:)]
pub unsafe fn setIsEqualFunction(
&self,
isEqualFunction: Option<
unsafe extern "C" fn(
NonNull<c_void>,
NonNull<c_void>,
Option<unsafe extern "C" fn(NonNull<c_void>) -> NSUInteger>,
) -> Bool,
>,
);
#[method(sizeFunction)]
pub unsafe fn sizeFunction(
&self,
) -> Option<unsafe extern "C" fn(NonNull<c_void>) -> NSUInteger>;
#[method(setSizeFunction:)]
pub unsafe fn setSizeFunction(
&self,
sizeFunction: Option<unsafe extern "C" fn(NonNull<c_void>) -> NSUInteger>,
);
#[method(descriptionFunction)]
pub unsafe fn descriptionFunction(
&self,
) -> Option<unsafe extern "C" fn(NonNull<c_void>) -> *mut NSString>;
#[method(setDescriptionFunction:)]
pub unsafe fn setDescriptionFunction(
&self,
descriptionFunction: Option<unsafe extern "C" fn(NonNull<c_void>) -> *mut NSString>,
);
#[method(relinquishFunction)]
pub unsafe fn relinquishFunction(
&self,
) -> Option<
unsafe extern "C" fn(
NonNull<c_void>,
Option<unsafe extern "C" fn(NonNull<c_void>) -> NSUInteger>,
),
>;
#[method(setRelinquishFunction:)]
pub unsafe fn setRelinquishFunction(
&self,
relinquishFunction: Option<
unsafe extern "C" fn(
NonNull<c_void>,
Option<unsafe extern "C" fn(NonNull<c_void>) -> NSUInteger>,
),
>,
);
#[method(acquireFunction)]
pub unsafe fn acquireFunction(
&self,
) -> Option<
unsafe extern "C" fn(
NonNull<c_void>,
Option<unsafe extern "C" fn(NonNull<c_void>) -> NSUInteger>,
Bool,
) -> NonNull<c_void>,
>;
#[method(setAcquireFunction:)]
pub unsafe fn setAcquireFunction(
&self,
acquireFunction: Option<
unsafe extern "C" fn(
NonNull<c_void>,
Option<unsafe extern "C" fn(NonNull<c_void>) -> NSUInteger>,
Bool,
) -> NonNull<c_void>,
>,
);
#[method(usesStrongWriteBarrier)]
pub unsafe fn usesStrongWriteBarrier(&self) -> bool;
#[method(setUsesStrongWriteBarrier:)]
pub unsafe fn setUsesStrongWriteBarrier(&self, usesStrongWriteBarrier: bool);
#[method(usesWeakReadAndWriteBarriers)]
pub unsafe fn usesWeakReadAndWriteBarriers(&self) -> bool;
#[method(setUsesWeakReadAndWriteBarriers:)]
pub unsafe fn setUsesWeakReadAndWriteBarriers(&self, usesWeakReadAndWriteBarriers: bool);
}
);