icrate 0.1.2

Bindings to Apple's frameworks
Documentation
//! This file has been automatically generated by `objc2`'s `header-translator`.
//! DO NOT EDIT
use crate::common::*;
use crate::Foundation::*;

pub type NSSocketNativeHandle = c_int;

extern_static!(NSPortDidBecomeInvalidNotification: &'static NSNotificationName);

extern_class!(
    #[derive(Debug, PartialEq, Eq, Hash)]
    #[cfg(feature = "Foundation_NSPort")]
    pub struct NSPort;

    #[cfg(feature = "Foundation_NSPort")]
    unsafe impl ClassType for NSPort {
        type Super = NSObject;
        type Mutability = InteriorMutable;
    }
);

#[cfg(feature = "Foundation_NSPort")]
unsafe impl NSCoding for NSPort {}

#[cfg(feature = "Foundation_NSPort")]
unsafe impl NSCopying for NSPort {}

#[cfg(feature = "Foundation_NSPort")]
unsafe impl NSObjectProtocol for NSPort {}

extern_methods!(
    #[cfg(feature = "Foundation_NSPort")]
    unsafe impl NSPort {
        #[method_id(@__retain_semantics Other port)]
        pub unsafe fn port() -> Id<NSPort>;

        #[method(invalidate)]
        pub unsafe fn invalidate(&self);

        #[method(isValid)]
        pub unsafe fn isValid(&self) -> bool;

        #[method(setDelegate:)]
        pub unsafe fn setDelegate(&self, an_object: Option<&ProtocolObject<dyn NSPortDelegate>>);

        #[method_id(@__retain_semantics Other delegate)]
        pub unsafe fn delegate(&self) -> Option<Id<ProtocolObject<dyn NSPortDelegate>>>;

        #[cfg(feature = "Foundation_NSRunLoop")]
        #[method(scheduleInRunLoop:forMode:)]
        pub unsafe fn scheduleInRunLoop_forMode(&self, run_loop: &NSRunLoop, mode: &NSRunLoopMode);

        #[cfg(feature = "Foundation_NSRunLoop")]
        #[method(removeFromRunLoop:forMode:)]
        pub unsafe fn removeFromRunLoop_forMode(&self, run_loop: &NSRunLoop, mode: &NSRunLoopMode);

        #[method(reservedSpaceLength)]
        pub unsafe fn reservedSpaceLength(&self) -> NSUInteger;

        #[cfg(all(feature = "Foundation_NSDate", feature = "Foundation_NSMutableArray"))]
        #[method(sendBeforeDate:components:from:reserved:)]
        pub unsafe fn sendBeforeDate_components_from_reserved(
            &self,
            limit_date: &NSDate,
            components: Option<&NSMutableArray>,
            receive_port: Option<&NSPort>,
            header_space_reserved: NSUInteger,
        ) -> bool;

        #[cfg(all(feature = "Foundation_NSDate", feature = "Foundation_NSMutableArray"))]
        #[method(sendBeforeDate:msgid:components:from:reserved:)]
        pub unsafe fn sendBeforeDate_msgid_components_from_reserved(
            &self,
            limit_date: &NSDate,
            msg_id: NSUInteger,
            components: Option<&NSMutableArray>,
            receive_port: Option<&NSPort>,
            header_space_reserved: NSUInteger,
        ) -> bool;

        #[cfg(all(feature = "Foundation_NSConnection", feature = "Foundation_NSRunLoop"))]
        #[deprecated = "Use NSXPCConnection instead"]
        #[method(addConnection:toRunLoop:forMode:)]
        pub unsafe fn addConnection_toRunLoop_forMode(
            &self,
            conn: &NSConnection,
            run_loop: &NSRunLoop,
            mode: &NSRunLoopMode,
        );

        #[cfg(all(feature = "Foundation_NSConnection", feature = "Foundation_NSRunLoop"))]
        #[deprecated = "Use NSXPCConnection instead"]
        #[method(removeConnection:fromRunLoop:forMode:)]
        pub unsafe fn removeConnection_fromRunLoop_forMode(
            &self,
            conn: &NSConnection,
            run_loop: &NSRunLoop,
            mode: &NSRunLoopMode,
        );
    }
);

extern_methods!(
    /// Methods declared on superclass `NSObject`
    #[cfg(feature = "Foundation_NSPort")]
    unsafe impl NSPort {
        #[method_id(@__retain_semantics Init init)]
        pub unsafe fn init(this: Allocated<Self>) -> Id<Self>;

        #[method_id(@__retain_semantics New new)]
        pub unsafe fn new() -> Id<Self>;
    }
);

extern_protocol!(
    pub unsafe trait NSPortDelegate: NSObjectProtocol {
        #[cfg(feature = "Foundation_NSPortMessage")]
        #[optional]
        #[method(handlePortMessage:)]
        unsafe fn handlePortMessage(&self, message: &NSPortMessage);
    }

    unsafe impl ProtocolType for dyn NSPortDelegate {}
);

ns_options!(
    #[underlying(NSUInteger)]
    pub enum NSMachPortOptions {
        NSMachPortDeallocateNone = 0,
        NSMachPortDeallocateSendRight = 1 << 0,
        NSMachPortDeallocateReceiveRight = 1 << 1,
    }
);

extern_class!(
    #[derive(Debug, PartialEq, Eq, Hash)]
    #[cfg(feature = "Foundation_NSMachPort")]
    pub struct NSMachPort;

    #[cfg(feature = "Foundation_NSMachPort")]
    unsafe impl ClassType for NSMachPort {
        #[inherits(NSObject)]
        type Super = NSPort;
        type Mutability = InteriorMutable;
    }
);

#[cfg(feature = "Foundation_NSMachPort")]
unsafe impl NSCoding for NSMachPort {}

#[cfg(feature = "Foundation_NSMachPort")]
unsafe impl NSCopying for NSMachPort {}

#[cfg(feature = "Foundation_NSMachPort")]
unsafe impl NSObjectProtocol for NSMachPort {}

extern_methods!(
    #[cfg(feature = "Foundation_NSMachPort")]
    unsafe impl NSMachPort {
        #[method_id(@__retain_semantics Other portWithMachPort:)]
        pub unsafe fn portWithMachPort(mach_port: u32) -> Id<NSPort>;

        #[method_id(@__retain_semantics Init initWithMachPort:)]
        pub unsafe fn initWithMachPort(this: Allocated<Self>, mach_port: u32) -> Id<Self>;

        #[method(setDelegate:)]
        pub unsafe fn setDelegate(
            &self,
            an_object: Option<&ProtocolObject<dyn NSMachPortDelegate>>,
        );

        #[method_id(@__retain_semantics Other delegate)]
        pub unsafe fn delegate(&self) -> Option<Id<ProtocolObject<dyn NSMachPortDelegate>>>;

        #[method_id(@__retain_semantics Other portWithMachPort:options:)]
        pub unsafe fn portWithMachPort_options(mach_port: u32, f: NSMachPortOptions) -> Id<NSPort>;

        #[method_id(@__retain_semantics Init initWithMachPort:options:)]
        pub unsafe fn initWithMachPort_options(
            this: Allocated<Self>,
            mach_port: u32,
            f: NSMachPortOptions,
        ) -> Id<Self>;

        #[method(machPort)]
        pub unsafe fn machPort(&self) -> u32;

        #[cfg(feature = "Foundation_NSRunLoop")]
        #[method(scheduleInRunLoop:forMode:)]
        pub unsafe fn scheduleInRunLoop_forMode(&self, run_loop: &NSRunLoop, mode: &NSRunLoopMode);

        #[cfg(feature = "Foundation_NSRunLoop")]
        #[method(removeFromRunLoop:forMode:)]
        pub unsafe fn removeFromRunLoop_forMode(&self, run_loop: &NSRunLoop, mode: &NSRunLoopMode);
    }
);

extern_methods!(
    /// Methods declared on superclass `NSObject`
    #[cfg(feature = "Foundation_NSMachPort")]
    unsafe impl NSMachPort {
        #[method_id(@__retain_semantics Init init)]
        pub unsafe fn init(this: Allocated<Self>) -> Id<Self>;

        #[method_id(@__retain_semantics New new)]
        pub unsafe fn new() -> Id<Self>;
    }
);

extern_protocol!(
    pub unsafe trait NSMachPortDelegate: NSPortDelegate {
        #[optional]
        #[method(handleMachMessage:)]
        unsafe fn handleMachMessage(&self, msg: NonNull<c_void>);
    }

    unsafe impl ProtocolType for dyn NSMachPortDelegate {}
);

extern_class!(
    #[derive(Debug, PartialEq, Eq, Hash)]
    #[cfg(feature = "Foundation_NSMessagePort")]
    pub struct NSMessagePort;

    #[cfg(feature = "Foundation_NSMessagePort")]
    unsafe impl ClassType for NSMessagePort {
        #[inherits(NSObject)]
        type Super = NSPort;
        type Mutability = InteriorMutable;
    }
);

#[cfg(feature = "Foundation_NSMessagePort")]
unsafe impl NSCoding for NSMessagePort {}

#[cfg(feature = "Foundation_NSMessagePort")]
unsafe impl NSCopying for NSMessagePort {}

#[cfg(feature = "Foundation_NSMessagePort")]
unsafe impl NSObjectProtocol for NSMessagePort {}

extern_methods!(
    #[cfg(feature = "Foundation_NSMessagePort")]
    unsafe impl NSMessagePort {}
);

extern_methods!(
    /// Methods declared on superclass `NSObject`
    #[cfg(feature = "Foundation_NSMessagePort")]
    unsafe impl NSMessagePort {
        #[method_id(@__retain_semantics Init init)]
        pub unsafe fn init(this: Allocated<Self>) -> Id<Self>;

        #[method_id(@__retain_semantics New new)]
        pub unsafe fn new() -> Id<Self>;
    }
);

extern_class!(
    #[derive(Debug, PartialEq, Eq, Hash)]
    #[cfg(feature = "Foundation_NSSocketPort")]
    pub struct NSSocketPort;

    #[cfg(feature = "Foundation_NSSocketPort")]
    unsafe impl ClassType for NSSocketPort {
        #[inherits(NSObject)]
        type Super = NSPort;
        type Mutability = InteriorMutable;
    }
);

#[cfg(feature = "Foundation_NSSocketPort")]
unsafe impl NSCoding for NSSocketPort {}

#[cfg(feature = "Foundation_NSSocketPort")]
unsafe impl NSCopying for NSSocketPort {}

#[cfg(feature = "Foundation_NSSocketPort")]
unsafe impl NSObjectProtocol for NSSocketPort {}

extern_methods!(
    #[cfg(feature = "Foundation_NSSocketPort")]
    unsafe impl NSSocketPort {
        #[method_id(@__retain_semantics Init init)]
        pub unsafe fn init(this: Allocated<Self>) -> Id<Self>;

        #[method_id(@__retain_semantics Init initWithTCPPort:)]
        pub unsafe fn initWithTCPPort(this: Allocated<Self>, port: c_ushort) -> Option<Id<Self>>;

        #[cfg(feature = "Foundation_NSData")]
        #[method_id(@__retain_semantics Init initWithProtocolFamily:socketType:protocol:address:)]
        pub unsafe fn initWithProtocolFamily_socketType_protocol_address(
            this: Allocated<Self>,
            family: c_int,
            r#type: c_int,
            protocol: c_int,
            address: &NSData,
        ) -> Option<Id<Self>>;

        #[method_id(@__retain_semantics Init initWithProtocolFamily:socketType:protocol:socket:)]
        pub unsafe fn initWithProtocolFamily_socketType_protocol_socket(
            this: Allocated<Self>,
            family: c_int,
            r#type: c_int,
            protocol: c_int,
            sock: NSSocketNativeHandle,
        ) -> Option<Id<Self>>;

        #[cfg(feature = "Foundation_NSString")]
        #[method_id(@__retain_semantics Init initRemoteWithTCPPort:host:)]
        pub unsafe fn initRemoteWithTCPPort_host(
            this: Allocated<Self>,
            port: c_ushort,
            host_name: Option<&NSString>,
        ) -> Option<Id<Self>>;

        #[cfg(feature = "Foundation_NSData")]
        #[method_id(@__retain_semantics Init initRemoteWithProtocolFamily:socketType:protocol:address:)]
        pub unsafe fn initRemoteWithProtocolFamily_socketType_protocol_address(
            this: Allocated<Self>,
            family: c_int,
            r#type: c_int,
            protocol: c_int,
            address: &NSData,
        ) -> Id<Self>;

        #[method(protocolFamily)]
        pub unsafe fn protocolFamily(&self) -> c_int;

        #[method(socketType)]
        pub unsafe fn socketType(&self) -> c_int;

        #[method(protocol)]
        pub unsafe fn protocol(&self) -> c_int;

        #[cfg(feature = "Foundation_NSData")]
        #[method_id(@__retain_semantics Other address)]
        pub unsafe fn address(&self) -> Id<NSData>;

        #[method(socket)]
        pub unsafe fn socket(&self) -> NSSocketNativeHandle;
    }
);

extern_methods!(
    /// Methods declared on superclass `NSObject`
    #[cfg(feature = "Foundation_NSSocketPort")]
    unsafe impl NSSocketPort {
        #[method_id(@__retain_semantics New new)]
        pub unsafe fn new() -> Id<Self>;
    }
);