objc2-foundation 0.2.2

Bindings to the Foundation framework
Documentation
//! This file has been automatically generated by `objc2`'s `header-translator`.
//! DO NOT EDIT
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!(
    /// Methods declared on superclass `NSObject`
    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!(
    /// NSRunLoopConveniences
    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!(
    /// Category "NSDelayedPerforming" on [`NSObject`].
    #[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!(
    /// NSOrderedPerform
    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);
    }
);