use crate::common::*;
use crate::Foundation::*;
ns_enum!(
#[underlying(NSInteger)]
pub enum NSOperationQueuePriority {
NSOperationQueuePriorityVeryLow = -8,
NSOperationQueuePriorityLow = -4,
NSOperationQueuePriorityNormal = 0,
NSOperationQueuePriorityHigh = 4,
NSOperationQueuePriorityVeryHigh = 8,
}
);
extern_class!(
#[derive(Debug, PartialEq, Eq, Hash)]
#[cfg(feature = "Foundation_NSOperation")]
pub struct NSOperation;
#[cfg(feature = "Foundation_NSOperation")]
unsafe impl ClassType for NSOperation {
type Super = NSObject;
type Mutability = InteriorMutable;
}
);
#[cfg(feature = "Foundation_NSOperation")]
unsafe impl Send for NSOperation {}
#[cfg(feature = "Foundation_NSOperation")]
unsafe impl Sync for NSOperation {}
#[cfg(feature = "Foundation_NSOperation")]
unsafe impl NSObjectProtocol for NSOperation {}
extern_methods!(
#[cfg(feature = "Foundation_NSOperation")]
unsafe impl NSOperation {
#[method(start)]
pub unsafe fn start(&self);
#[method(main)]
pub unsafe fn main(&self);
#[method(isCancelled)]
pub unsafe fn isCancelled(&self) -> bool;
#[method(cancel)]
pub unsafe fn cancel(&self);
#[method(isExecuting)]
pub unsafe fn isExecuting(&self) -> bool;
#[method(isFinished)]
pub unsafe fn isFinished(&self) -> bool;
#[method(isConcurrent)]
pub unsafe fn isConcurrent(&self) -> bool;
#[method(isAsynchronous)]
pub unsafe fn isAsynchronous(&self) -> bool;
#[method(isReady)]
pub unsafe fn isReady(&self) -> bool;
#[method(addDependency:)]
pub unsafe fn addDependency(&self, op: &NSOperation);
#[method(removeDependency:)]
pub unsafe fn removeDependency(&self, op: &NSOperation);
#[cfg(feature = "Foundation_NSArray")]
#[method_id(@__retain_semantics Other dependencies)]
pub unsafe fn dependencies(&self) -> Id<NSArray<NSOperation>>;
#[method(queuePriority)]
pub unsafe fn queuePriority(&self) -> NSOperationQueuePriority;
#[method(setQueuePriority:)]
pub unsafe fn setQueuePriority(&self, queue_priority: NSOperationQueuePriority);
#[method(completionBlock)]
pub unsafe fn completionBlock(&self) -> *mut Block<(), ()>;
#[method(setCompletionBlock:)]
pub unsafe fn setCompletionBlock(&self, completion_block: Option<&Block<(), ()>>);
#[method(waitUntilFinished)]
pub unsafe fn waitUntilFinished(&self);
#[deprecated = "Not supported"]
#[method(threadPriority)]
pub unsafe fn threadPriority(&self) -> c_double;
#[deprecated = "Not supported"]
#[method(setThreadPriority:)]
pub unsafe fn setThreadPriority(&self, thread_priority: c_double);
#[method(qualityOfService)]
pub unsafe fn qualityOfService(&self) -> NSQualityOfService;
#[method(setQualityOfService:)]
pub unsafe fn setQualityOfService(&self, quality_of_service: NSQualityOfService);
#[cfg(feature = "Foundation_NSString")]
#[method_id(@__retain_semantics Other name)]
pub unsafe fn name(&self) -> Option<Id<NSString>>;
#[cfg(feature = "Foundation_NSString")]
#[method(setName:)]
pub unsafe fn setName(&self, name: Option<&NSString>);
}
);
extern_methods!(
#[cfg(feature = "Foundation_NSOperation")]
unsafe impl NSOperation {
#[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_NSBlockOperation")]
pub struct NSBlockOperation;
#[cfg(feature = "Foundation_NSBlockOperation")]
unsafe impl ClassType for NSBlockOperation {
#[inherits(NSObject)]
type Super = NSOperation;
type Mutability = InteriorMutable;
}
);
#[cfg(feature = "Foundation_NSBlockOperation")]
unsafe impl Send for NSBlockOperation {}
#[cfg(feature = "Foundation_NSBlockOperation")]
unsafe impl Sync for NSBlockOperation {}
#[cfg(feature = "Foundation_NSBlockOperation")]
unsafe impl NSObjectProtocol for NSBlockOperation {}
extern_methods!(
#[cfg(feature = "Foundation_NSBlockOperation")]
unsafe impl NSBlockOperation {
#[method_id(@__retain_semantics Other blockOperationWithBlock:)]
pub unsafe fn blockOperationWithBlock(block: &Block<(), ()>) -> Id<Self>;
#[method(addExecutionBlock:)]
pub unsafe fn addExecutionBlock(&self, block: &Block<(), ()>);
}
);
extern_methods!(
#[cfg(feature = "Foundation_NSBlockOperation")]
unsafe impl NSBlockOperation {
#[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_NSInvocationOperation")]
pub struct NSInvocationOperation;
#[cfg(feature = "Foundation_NSInvocationOperation")]
unsafe impl ClassType for NSInvocationOperation {
#[inherits(NSObject)]
type Super = NSOperation;
type Mutability = InteriorMutable;
}
);
#[cfg(feature = "Foundation_NSInvocationOperation")]
unsafe impl NSObjectProtocol for NSInvocationOperation {}
extern_methods!(
#[cfg(feature = "Foundation_NSInvocationOperation")]
unsafe impl NSInvocationOperation {
#[method_id(@__retain_semantics Init initWithTarget:selector:object:)]
pub unsafe fn initWithTarget_selector_object(
this: Allocated<Self>,
target: &AnyObject,
sel: Sel,
arg: Option<&AnyObject>,
) -> Option<Id<Self>>;
#[cfg(feature = "Foundation_NSInvocation")]
#[method_id(@__retain_semantics Init initWithInvocation:)]
pub unsafe fn initWithInvocation(this: Allocated<Self>, inv: &NSInvocation) -> Id<Self>;
#[cfg(feature = "Foundation_NSInvocation")]
#[method_id(@__retain_semantics Other invocation)]
pub unsafe fn invocation(&self) -> Id<NSInvocation>;
#[method_id(@__retain_semantics Other result)]
pub unsafe fn result(&self) -> Option<Id<AnyObject>>;
}
);
extern_methods!(
#[cfg(feature = "Foundation_NSInvocationOperation")]
unsafe impl NSInvocationOperation {
#[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_static!(NSInvocationOperationVoidResultException: &'static NSExceptionName);
extern_static!(NSInvocationOperationCancelledException: &'static NSExceptionName);
extern_static!(NSOperationQueueDefaultMaxConcurrentOperationCount: NSInteger = -1);
extern_class!(
#[derive(Debug, PartialEq, Eq, Hash)]
#[cfg(feature = "Foundation_NSOperationQueue")]
pub struct NSOperationQueue;
#[cfg(feature = "Foundation_NSOperationQueue")]
unsafe impl ClassType for NSOperationQueue {
type Super = NSObject;
type Mutability = InteriorMutable;
}
);
#[cfg(feature = "Foundation_NSOperationQueue")]
unsafe impl Send for NSOperationQueue {}
#[cfg(feature = "Foundation_NSOperationQueue")]
unsafe impl Sync for NSOperationQueue {}
#[cfg(feature = "Foundation_NSOperationQueue")]
unsafe impl NSObjectProtocol for NSOperationQueue {}
#[cfg(feature = "Foundation_NSOperationQueue")]
unsafe impl NSProgressReporting for NSOperationQueue {}
extern_methods!(
#[cfg(feature = "Foundation_NSOperationQueue")]
unsafe impl NSOperationQueue {
#[cfg(feature = "Foundation_NSProgress")]
#[method_id(@__retain_semantics Other progress)]
pub unsafe fn progress(&self) -> Id<NSProgress>;
#[cfg(feature = "Foundation_NSOperation")]
#[method(addOperation:)]
pub unsafe fn addOperation(&self, op: &NSOperation);
#[cfg(all(feature = "Foundation_NSArray", feature = "Foundation_NSOperation"))]
#[method(addOperations:waitUntilFinished:)]
pub unsafe fn addOperations_waitUntilFinished(
&self,
ops: &NSArray<NSOperation>,
wait: bool,
);
#[method(addOperationWithBlock:)]
pub unsafe fn addOperationWithBlock(&self, block: &Block<(), ()>);
#[method(addBarrierBlock:)]
pub unsafe fn addBarrierBlock(&self, barrier: &Block<(), ()>);
#[method(maxConcurrentOperationCount)]
pub unsafe fn maxConcurrentOperationCount(&self) -> NSInteger;
#[method(setMaxConcurrentOperationCount:)]
pub unsafe fn setMaxConcurrentOperationCount(
&self,
max_concurrent_operation_count: NSInteger,
);
#[method(isSuspended)]
pub unsafe fn isSuspended(&self) -> bool;
#[method(setSuspended:)]
pub unsafe fn setSuspended(&self, suspended: bool);
#[cfg(feature = "Foundation_NSString")]
#[method_id(@__retain_semantics Other name)]
pub unsafe fn name(&self) -> Option<Id<NSString>>;
#[cfg(feature = "Foundation_NSString")]
#[method(setName:)]
pub unsafe fn setName(&self, name: Option<&NSString>);
#[method(qualityOfService)]
pub unsafe fn qualityOfService(&self) -> NSQualityOfService;
#[method(setQualityOfService:)]
pub unsafe fn setQualityOfService(&self, quality_of_service: NSQualityOfService);
#[method(cancelAllOperations)]
pub unsafe fn cancelAllOperations(&self);
#[method(waitUntilAllOperationsAreFinished)]
pub unsafe fn waitUntilAllOperationsAreFinished(&self);
#[method_id(@__retain_semantics Other currentQueue)]
pub unsafe fn currentQueue() -> Option<Id<NSOperationQueue>>;
#[method_id(@__retain_semantics Other mainQueue)]
pub unsafe fn mainQueue() -> Id<NSOperationQueue>;
}
);
extern_methods!(
#[cfg(feature = "Foundation_NSOperationQueue")]
unsafe impl NSOperationQueue {
#[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_methods!(
#[cfg(feature = "Foundation_NSOperationQueue")]
unsafe impl NSOperationQueue {
#[cfg(all(feature = "Foundation_NSArray", feature = "Foundation_NSOperation"))]
#[deprecated = "access to operations is inherently a race condition, it should not be used. For barrier style behaviors please use addBarrierBlock: instead"]
#[method_id(@__retain_semantics Other operations)]
pub unsafe fn operations(&self) -> Id<NSArray<NSOperation>>;
#[deprecated]
#[method(operationCount)]
pub unsafe fn operationCount(&self) -> NSUInteger;
}
);