use objc2::__framework_prelude::*;
use crate::*;
extern "C" {
#[cfg(all(feature = "NSObjCRuntime", feature = "NSString"))]
pub static NSDefaultRunLoopMode: &'static NSRunLoopMode;
}
extern "C" {
#[cfg(all(feature = "NSObjCRuntime", feature = "NSString"))]
pub static NSRunLoopCommonModes: &'static NSRunLoopMode;
}
extern_class!(
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct NSRunLoop;
unsafe impl ClassType for NSRunLoop {
type Super = NSObject;
type Mutability = InteriorMutable;
}
);
unsafe impl NSObjectProtocol for NSRunLoop {}
extern_methods!(
unsafe impl NSRunLoop {
#[method_id(@__retain_semantics Other currentRunLoop)]
pub unsafe fn currentRunLoop() -> Retained<NSRunLoop>;
#[method_id(@__retain_semantics Other mainRunLoop)]
pub unsafe fn mainRunLoop() -> Retained<NSRunLoop>;
#[cfg(all(feature = "NSObjCRuntime", feature = "NSString"))]
#[method_id(@__retain_semantics Other currentMode)]
pub unsafe fn currentMode(&self) -> Option<Retained<NSRunLoopMode>>;
#[cfg(all(feature = "NSObjCRuntime", feature = "NSString", feature = "NSTimer"))]
#[method(addTimer:forMode:)]
pub unsafe fn addTimer_forMode(&self, timer: &NSTimer, mode: &NSRunLoopMode);
#[cfg(all(feature = "NSObjCRuntime", feature = "NSPort", feature = "NSString"))]
#[method(addPort:forMode:)]
pub unsafe fn addPort_forMode(&self, a_port: &NSPort, mode: &NSRunLoopMode);
#[cfg(all(feature = "NSObjCRuntime", feature = "NSPort", feature = "NSString"))]
#[method(removePort:forMode:)]
pub unsafe fn removePort_forMode(&self, a_port: &NSPort, mode: &NSRunLoopMode);
#[cfg(all(feature = "NSDate", feature = "NSObjCRuntime", feature = "NSString"))]
#[method_id(@__retain_semantics Other limitDateForMode:)]
pub unsafe fn limitDateForMode(&self, mode: &NSRunLoopMode) -> Option<Retained<NSDate>>;
#[cfg(all(feature = "NSDate", feature = "NSObjCRuntime", feature = "NSString"))]
#[method(acceptInputForMode:beforeDate:)]
pub unsafe fn acceptInputForMode_beforeDate(
&self,
mode: &NSRunLoopMode,
limit_date: &NSDate,
);
}
);
extern_methods!(
unsafe impl NSRunLoop {
#[method_id(@__retain_semantics Init init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
#[method_id(@__retain_semantics New new)]
pub unsafe fn new() -> Retained<Self>;
}
);
extern_methods!(
unsafe impl NSRunLoop {
#[method(run)]
pub unsafe fn run(&self);
#[cfg(feature = "NSDate")]
#[method(runUntilDate:)]
pub unsafe fn runUntilDate(&self, limit_date: &NSDate);
#[cfg(all(feature = "NSDate", feature = "NSObjCRuntime", feature = "NSString"))]
#[method(runMode:beforeDate:)]
pub unsafe fn runMode_beforeDate(&self, mode: &NSRunLoopMode, limit_date: &NSDate) -> bool;
#[deprecated = "Not supported"]
#[method(configureAsServer)]
pub unsafe fn configureAsServer(&self);
#[cfg(all(
feature = "NSArray",
feature = "NSObjCRuntime",
feature = "NSString",
feature = "block2"
))]
#[method(performInModes:block:)]
pub unsafe fn performInModes_block(
&self,
modes: &NSArray<NSRunLoopMode>,
block: &block2::Block<dyn Fn()>,
);
#[cfg(feature = "block2")]
#[method(performBlock:)]
pub unsafe fn performBlock(&self, block: &block2::Block<dyn Fn()>);
}
);
extern_category!(
#[doc(alias = "NSDelayedPerforming")]
pub unsafe trait NSObjectNSDelayedPerforming {
#[cfg(all(
feature = "NSArray",
feature = "NSDate",
feature = "NSObjCRuntime",
feature = "NSString"
))]
#[method(performSelector:withObject:afterDelay:inModes:)]
unsafe fn performSelector_withObject_afterDelay_inModes(
&self,
a_selector: Sel,
an_argument: Option<&AnyObject>,
delay: NSTimeInterval,
modes: &NSArray<NSRunLoopMode>,
);
#[cfg(feature = "NSDate")]
#[method(performSelector:withObject:afterDelay:)]
unsafe fn performSelector_withObject_afterDelay(
&self,
a_selector: Sel,
an_argument: Option<&AnyObject>,
delay: NSTimeInterval,
);
#[method(cancelPreviousPerformRequestsWithTarget:selector:object:)]
unsafe fn cancelPreviousPerformRequestsWithTarget_selector_object(
a_target: &AnyObject,
a_selector: Sel,
an_argument: Option<&AnyObject>,
);
#[method(cancelPreviousPerformRequestsWithTarget:)]
unsafe fn cancelPreviousPerformRequestsWithTarget(a_target: &AnyObject);
}
unsafe impl NSObjectNSDelayedPerforming for NSObject {}
);
extern_methods!(
unsafe impl NSRunLoop {
#[cfg(all(feature = "NSArray", feature = "NSObjCRuntime", feature = "NSString"))]
#[method(performSelector:target:argument:order:modes:)]
pub unsafe fn performSelector_target_argument_order_modes(
&self,
a_selector: Sel,
target: &AnyObject,
arg: Option<&AnyObject>,
order: NSUInteger,
modes: &NSArray<NSRunLoopMode>,
);
#[method(cancelPerformSelector:target:argument:)]
pub unsafe fn cancelPerformSelector_target_argument(
&self,
a_selector: Sel,
target: &AnyObject,
arg: Option<&AnyObject>,
);
#[method(cancelPerformSelectorsWithTarget:)]
pub unsafe fn cancelPerformSelectorsWithTarget(&self, target: &AnyObject);
}
);