use objc2::__framework_prelude::*;
use objc2_foundation::*;
use crate::*;
extern_class!(
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct NSPasteboardItem;
unsafe impl ClassType for NSPasteboardItem {
type Super = NSObject;
type Mutability = InteriorMutable;
}
);
unsafe impl NSObjectProtocol for NSPasteboardItem {}
#[cfg(feature = "NSPasteboard")]
unsafe impl NSPasteboardReading for NSPasteboardItem {}
#[cfg(feature = "NSPasteboard")]
unsafe impl NSPasteboardWriting for NSPasteboardItem {}
extern_methods!(
unsafe impl NSPasteboardItem {
#[cfg(feature = "NSPasteboard")]
#[method_id(@__retain_semantics Other types)]
pub unsafe fn types(&self) -> Id<NSArray<NSPasteboardType>>;
#[cfg(feature = "NSPasteboard")]
#[method_id(@__retain_semantics Other availableTypeFromArray:)]
pub unsafe fn availableTypeFromArray(
&self,
types: &NSArray<NSPasteboardType>,
) -> Option<Id<NSPasteboardType>>;
#[cfg(feature = "NSPasteboard")]
#[method(setDataProvider:forTypes:)]
pub unsafe fn setDataProvider_forTypes(
&self,
data_provider: &ProtocolObject<dyn NSPasteboardItemDataProvider>,
types: &NSArray<NSPasteboardType>,
) -> bool;
#[cfg(feature = "NSPasteboard")]
#[method(setData:forType:)]
pub unsafe fn setData_forType(&self, data: &NSData, r#type: &NSPasteboardType) -> bool;
#[cfg(feature = "NSPasteboard")]
#[method(setString:forType:)]
pub unsafe fn setString_forType(
&self,
string: &NSString,
r#type: &NSPasteboardType,
) -> bool;
#[cfg(feature = "NSPasteboard")]
#[method(setPropertyList:forType:)]
pub unsafe fn setPropertyList_forType(
&self,
property_list: &AnyObject,
r#type: &NSPasteboardType,
) -> bool;
#[cfg(feature = "NSPasteboard")]
#[method_id(@__retain_semantics Other dataForType:)]
pub unsafe fn dataForType(&self, r#type: &NSPasteboardType) -> Option<Id<NSData>>;
#[cfg(feature = "NSPasteboard")]
#[method_id(@__retain_semantics Other stringForType:)]
pub unsafe fn stringForType(&self, r#type: &NSPasteboardType) -> Option<Id<NSString>>;
#[cfg(feature = "NSPasteboard")]
#[method_id(@__retain_semantics Other propertyListForType:)]
pub unsafe fn propertyListForType(
&self,
r#type: &NSPasteboardType,
) -> Option<Id<AnyObject>>;
}
);
extern_methods!(
unsafe impl NSPasteboardItem {
#[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 NSPasteboardItemDataProvider: NSObjectProtocol {
#[cfg(feature = "NSPasteboard")]
#[method(pasteboard:item:provideDataForType:)]
unsafe fn pasteboard_item_provideDataForType(
&self,
pasteboard: Option<&NSPasteboard>,
item: &NSPasteboardItem,
r#type: &NSPasteboardType,
);
#[cfg(feature = "NSPasteboard")]
#[optional]
#[method(pasteboardFinishedWithDataProvider:)]
unsafe fn pasteboardFinishedWithDataProvider(&self, pasteboard: &NSPasteboard);
}
unsafe impl ProtocolType for dyn NSPasteboardItemDataProvider {}
);