use objc2::__framework_prelude::*;
use crate::*;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct NSKeyValueObservingOptions(pub NSUInteger);
bitflags::bitflags! {
impl NSKeyValueObservingOptions: NSUInteger {
const NSKeyValueObservingOptionNew = 0x01;
const NSKeyValueObservingOptionOld = 0x02;
const NSKeyValueObservingOptionInitial = 0x04;
const NSKeyValueObservingOptionPrior = 0x08;
}
}
unsafe impl Encode for NSKeyValueObservingOptions {
const ENCODING: Encoding = NSUInteger::ENCODING;
}
unsafe impl RefEncode for NSKeyValueObservingOptions {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct NSKeyValueChange(pub NSUInteger);
impl NSKeyValueChange {
#[doc(alias = "NSKeyValueChangeSetting")]
pub const Setting: Self = Self(1);
#[doc(alias = "NSKeyValueChangeInsertion")]
pub const Insertion: Self = Self(2);
#[doc(alias = "NSKeyValueChangeRemoval")]
pub const Removal: Self = Self(3);
#[doc(alias = "NSKeyValueChangeReplacement")]
pub const Replacement: Self = Self(4);
}
unsafe impl Encode for NSKeyValueChange {
const ENCODING: Encoding = NSUInteger::ENCODING;
}
unsafe impl RefEncode for NSKeyValueChange {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct NSKeyValueSetMutationKind(pub NSUInteger);
impl NSKeyValueSetMutationKind {
pub const NSKeyValueUnionSetMutation: Self = Self(1);
pub const NSKeyValueMinusSetMutation: Self = Self(2);
pub const NSKeyValueIntersectSetMutation: Self = Self(3);
pub const NSKeyValueSetSetMutation: Self = Self(4);
}
unsafe impl Encode for NSKeyValueSetMutationKind {
const ENCODING: Encoding = NSUInteger::ENCODING;
}
unsafe impl RefEncode for NSKeyValueSetMutationKind {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[cfg(feature = "NSString")]
pub type NSKeyValueChangeKey = NSString;
extern "C" {
#[cfg(feature = "NSString")]
pub static NSKeyValueChangeKindKey: &'static NSKeyValueChangeKey;
}
extern "C" {
#[cfg(feature = "NSString")]
pub static NSKeyValueChangeNewKey: &'static NSKeyValueChangeKey;
}
extern "C" {
#[cfg(feature = "NSString")]
pub static NSKeyValueChangeOldKey: &'static NSKeyValueChangeKey;
}
extern "C" {
#[cfg(feature = "NSString")]
pub static NSKeyValueChangeIndexesKey: &'static NSKeyValueChangeKey;
}
extern "C" {
#[cfg(feature = "NSString")]
pub static NSKeyValueChangeNotificationIsPriorKey: &'static NSKeyValueChangeKey;
}
extern_category!(
#[doc(alias = "NSKeyValueObserving")]
pub unsafe trait NSObjectNSKeyValueObserving {
#[cfg(all(feature = "NSDictionary", feature = "NSString"))]
#[method(observeValueForKeyPath:ofObject:change:context:)]
unsafe fn observeValueForKeyPath_ofObject_change_context(
&self,
key_path: Option<&NSString>,
object: Option<&AnyObject>,
change: Option<&NSDictionary<NSKeyValueChangeKey, AnyObject>>,
context: *mut c_void,
);
}
unsafe impl NSObjectNSKeyValueObserving for NSObject {}
);
extern_category!(
#[doc(alias = "NSKeyValueObserverRegistration")]
pub unsafe trait NSObjectNSKeyValueObserverRegistration {
#[cfg(feature = "NSString")]
#[method(addObserver:forKeyPath:options:context:)]
unsafe fn addObserver_forKeyPath_options_context(
&self,
observer: &NSObject,
key_path: &NSString,
options: NSKeyValueObservingOptions,
context: *mut c_void,
);
#[cfg(feature = "NSString")]
#[method(removeObserver:forKeyPath:context:)]
unsafe fn removeObserver_forKeyPath_context(
&self,
observer: &NSObject,
key_path: &NSString,
context: *mut c_void,
);
#[cfg(feature = "NSString")]
#[method(removeObserver:forKeyPath:)]
unsafe fn removeObserver_forKeyPath(&self, observer: &NSObject, key_path: &NSString);
}
unsafe impl NSObjectNSKeyValueObserverRegistration for NSObject {}
);
extern_methods!(
#[cfg(feature = "NSArray")]
unsafe impl<ObjectType: Message> NSArray<ObjectType> {
#[cfg(all(feature = "NSIndexSet", feature = "NSString"))]
#[method(addObserver:toObjectsAtIndexes:forKeyPath:options:context:)]
pub unsafe fn addObserver_toObjectsAtIndexes_forKeyPath_options_context(
&self,
observer: &NSObject,
indexes: &NSIndexSet,
key_path: &NSString,
options: NSKeyValueObservingOptions,
context: *mut c_void,
);
#[cfg(all(feature = "NSIndexSet", feature = "NSString"))]
#[method(removeObserver:fromObjectsAtIndexes:forKeyPath:context:)]
pub unsafe fn removeObserver_fromObjectsAtIndexes_forKeyPath_context(
&self,
observer: &NSObject,
indexes: &NSIndexSet,
key_path: &NSString,
context: *mut c_void,
);
#[cfg(all(feature = "NSIndexSet", feature = "NSString"))]
#[method(removeObserver:fromObjectsAtIndexes:forKeyPath:)]
pub unsafe fn removeObserver_fromObjectsAtIndexes_forKeyPath(
&self,
observer: &NSObject,
indexes: &NSIndexSet,
key_path: &NSString,
);
#[cfg(feature = "NSString")]
#[method(addObserver:forKeyPath:options:context:)]
pub unsafe fn addObserver_forKeyPath_options_context(
&self,
observer: &NSObject,
key_path: &NSString,
options: NSKeyValueObservingOptions,
context: *mut c_void,
);
#[cfg(feature = "NSString")]
#[method(removeObserver:forKeyPath:context:)]
pub unsafe fn removeObserver_forKeyPath_context(
&self,
observer: &NSObject,
key_path: &NSString,
context: *mut c_void,
);
#[cfg(feature = "NSString")]
#[method(removeObserver:forKeyPath:)]
pub unsafe fn removeObserver_forKeyPath(&self, observer: &NSObject, key_path: &NSString);
}
);
extern_methods!(
#[cfg(feature = "NSOrderedSet")]
unsafe impl<ObjectType: Message> NSOrderedSet<ObjectType> {
#[cfg(feature = "NSString")]
#[method(addObserver:forKeyPath:options:context:)]
pub unsafe fn addObserver_forKeyPath_options_context(
&self,
observer: &NSObject,
key_path: &NSString,
options: NSKeyValueObservingOptions,
context: *mut c_void,
);
#[cfg(feature = "NSString")]
#[method(removeObserver:forKeyPath:context:)]
pub unsafe fn removeObserver_forKeyPath_context(
&self,
observer: &NSObject,
key_path: &NSString,
context: *mut c_void,
);
#[cfg(feature = "NSString")]
#[method(removeObserver:forKeyPath:)]
pub unsafe fn removeObserver_forKeyPath(&self, observer: &NSObject, key_path: &NSString);
}
);
extern_methods!(
#[cfg(feature = "NSSet")]
unsafe impl<ObjectType: Message> NSSet<ObjectType> {
#[cfg(feature = "NSString")]
#[method(addObserver:forKeyPath:options:context:)]
pub unsafe fn addObserver_forKeyPath_options_context(
&self,
observer: &NSObject,
key_path: &NSString,
options: NSKeyValueObservingOptions,
context: *mut c_void,
);
#[cfg(feature = "NSString")]
#[method(removeObserver:forKeyPath:context:)]
pub unsafe fn removeObserver_forKeyPath_context(
&self,
observer: &NSObject,
key_path: &NSString,
context: *mut c_void,
);
#[cfg(feature = "NSString")]
#[method(removeObserver:forKeyPath:)]
pub unsafe fn removeObserver_forKeyPath(&self, observer: &NSObject, key_path: &NSString);
}
);
extern_category!(
#[doc(alias = "NSKeyValueObserverNotification")]
pub unsafe trait NSObjectNSKeyValueObserverNotification {
#[cfg(feature = "NSString")]
#[method(willChangeValueForKey:)]
unsafe fn willChangeValueForKey(&self, key: &NSString);
#[cfg(feature = "NSString")]
#[method(didChangeValueForKey:)]
unsafe fn didChangeValueForKey(&self, key: &NSString);
#[cfg(all(feature = "NSIndexSet", feature = "NSString"))]
#[method(willChange:valuesAtIndexes:forKey:)]
unsafe fn willChange_valuesAtIndexes_forKey(
&self,
change_kind: NSKeyValueChange,
indexes: &NSIndexSet,
key: &NSString,
);
#[cfg(all(feature = "NSIndexSet", feature = "NSString"))]
#[method(didChange:valuesAtIndexes:forKey:)]
unsafe fn didChange_valuesAtIndexes_forKey(
&self,
change_kind: NSKeyValueChange,
indexes: &NSIndexSet,
key: &NSString,
);
#[cfg(all(feature = "NSSet", feature = "NSString"))]
#[method(willChangeValueForKey:withSetMutation:usingObjects:)]
unsafe fn willChangeValueForKey_withSetMutation_usingObjects(
&self,
key: &NSString,
mutation_kind: NSKeyValueSetMutationKind,
objects: &NSSet,
);
#[cfg(all(feature = "NSSet", feature = "NSString"))]
#[method(didChangeValueForKey:withSetMutation:usingObjects:)]
unsafe fn didChangeValueForKey_withSetMutation_usingObjects(
&self,
key: &NSString,
mutation_kind: NSKeyValueSetMutationKind,
objects: &NSSet,
);
}
unsafe impl NSObjectNSKeyValueObserverNotification for NSObject {}
);
extern_category!(
#[doc(alias = "NSKeyValueObservingCustomization")]
pub unsafe trait NSObjectNSKeyValueObservingCustomization {
#[cfg(all(feature = "NSSet", feature = "NSString"))]
#[method_id(@__retain_semantics Other keyPathsForValuesAffectingValueForKey:)]
unsafe fn keyPathsForValuesAffectingValueForKey(
key: &NSString,
) -> Retained<NSSet<NSString>>;
#[cfg(feature = "NSString")]
#[method(automaticallyNotifiesObserversForKey:)]
unsafe fn automaticallyNotifiesObserversForKey(key: &NSString) -> bool;
#[method(observationInfo)]
unsafe fn observationInfo(&self) -> *mut c_void;
#[method(setObservationInfo:)]
unsafe fn setObservationInfo(&self, observation_info: *mut c_void);
}
unsafe impl NSObjectNSKeyValueObservingCustomization for NSObject {}
);