use objc2::__framework_prelude::*;
use objc2_foundation::*;
#[cfg(feature = "objc2-uniform-type-identifiers")]
use objc2_uniform_type_identifiers::*;
use crate::*;
pub type NSFileProviderItemIdentifier = NSString;
extern "C" {
pub static NSFileProviderRootContainerItemIdentifier: &'static NSFileProviderItemIdentifier;
}
extern "C" {
pub static NSFileProviderWorkingSetContainerItemIdentifier:
&'static NSFileProviderItemIdentifier;
}
extern "C" {
pub static NSFileProviderTrashContainerItemIdentifier: &'static NSFileProviderItemIdentifier;
}
extern_class!(
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct NSFileProviderItemVersion;
unsafe impl ClassType for NSFileProviderItemVersion {
type Super = NSObject;
type Mutability = InteriorMutable;
}
);
unsafe impl NSObjectProtocol for NSFileProviderItemVersion {}
extern_methods!(
unsafe impl NSFileProviderItemVersion {
#[method_id(@__retain_semantics Other beforeFirstSyncComponent)]
pub unsafe fn beforeFirstSyncComponent() -> Id<NSData>;
#[method_id(@__retain_semantics Init initWithContentVersion:metadataVersion:)]
pub unsafe fn initWithContentVersion_metadataVersion(
this: Allocated<Self>,
content_version: &NSData,
metadata_version: &NSData,
) -> Id<Self>;
#[method_id(@__retain_semantics Other contentVersion)]
pub unsafe fn contentVersion(&self) -> Id<NSData>;
#[method_id(@__retain_semantics Other metadataVersion)]
pub unsafe fn metadataVersion(&self) -> Id<NSData>;
}
);
extern_methods!(
unsafe impl NSFileProviderItemVersion {
#[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 "C" {
pub static NSFileProviderFavoriteRankUnranked: c_ulonglong;
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct NSFileProviderItemCapabilities(pub NSUInteger);
impl NSFileProviderItemCapabilities {
#[doc(alias = "NSFileProviderItemCapabilitiesAllowsReading")]
pub const AllowsReading: Self = Self(1 << 0);
#[doc(alias = "NSFileProviderItemCapabilitiesAllowsWriting")]
pub const AllowsWriting: Self = Self(1 << 1);
#[doc(alias = "NSFileProviderItemCapabilitiesAllowsReparenting")]
pub const AllowsReparenting: Self = Self(1 << 2);
#[doc(alias = "NSFileProviderItemCapabilitiesAllowsRenaming")]
pub const AllowsRenaming: Self = Self(1 << 3);
#[doc(alias = "NSFileProviderItemCapabilitiesAllowsTrashing")]
pub const AllowsTrashing: Self = Self(1 << 4);
#[doc(alias = "NSFileProviderItemCapabilitiesAllowsDeleting")]
pub const AllowsDeleting: Self = Self(1 << 5);
#[deprecated = "use NSFileProviderContentPolicy instead"]
#[doc(alias = "NSFileProviderItemCapabilitiesAllowsEvicting")]
pub const AllowsEvicting: Self = Self(1 << 6);
#[doc(alias = "NSFileProviderItemCapabilitiesAllowsExcludingFromSync")]
pub const AllowsExcludingFromSync: Self = Self(1 << 7);
#[doc(alias = "NSFileProviderItemCapabilitiesAllowsAddingSubItems")]
pub const AllowsAddingSubItems: Self = Self(NSFileProviderItemCapabilities::AllowsWriting.0);
#[doc(alias = "NSFileProviderItemCapabilitiesAllowsContentEnumerating")]
pub const AllowsContentEnumerating: Self =
Self(NSFileProviderItemCapabilities::AllowsReading.0);
#[deprecated = "This capability is no longer supported, and does not contain all capabilities. Please migrate to directly specifying each of the individual capabilities that should be allowed for the item."]
#[doc(alias = "NSFileProviderItemCapabilitiesAllowsAll")]
pub const AllowsAll: Self = Self(
NSFileProviderItemCapabilities::AllowsReading.0
| NSFileProviderItemCapabilities::AllowsWriting.0
| NSFileProviderItemCapabilities::AllowsReparenting.0
| NSFileProviderItemCapabilities::AllowsRenaming.0
| NSFileProviderItemCapabilities::AllowsTrashing.0
| NSFileProviderItemCapabilities::AllowsDeleting.0,
);
}
unsafe impl Encode for NSFileProviderItemCapabilities {
const ENCODING: Encoding = NSUInteger::ENCODING;
}
unsafe impl RefEncode for NSFileProviderItemCapabilities {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct NSFileProviderItemFields(pub NSUInteger);
impl NSFileProviderItemFields {
pub const NSFileProviderItemContents: Self = Self(1 << 0);
pub const NSFileProviderItemFilename: Self = Self(1 << 1);
pub const NSFileProviderItemParentItemIdentifier: Self = Self(1 << 2);
pub const NSFileProviderItemLastUsedDate: Self = Self(1 << 3);
pub const NSFileProviderItemTagData: Self = Self(1 << 4);
pub const NSFileProviderItemFavoriteRank: Self = Self(1 << 5);
pub const NSFileProviderItemCreationDate: Self = Self(1 << 6);
pub const NSFileProviderItemContentModificationDate: Self = Self(1 << 7);
pub const NSFileProviderItemFileSystemFlags: Self = Self(1 << 8);
pub const NSFileProviderItemExtendedAttributes: Self = Self(1 << 9);
pub const NSFileProviderItemTypeAndCreator: Self = Self(1 << 10);
}
unsafe impl Encode for NSFileProviderItemFields {
const ENCODING: Encoding = NSUInteger::ENCODING;
}
unsafe impl RefEncode for NSFileProviderItemFields {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct NSFileProviderFileSystemFlags(pub NSUInteger);
impl NSFileProviderFileSystemFlags {
pub const NSFileProviderFileSystemUserExecutable: Self = Self(1 << 0);
pub const NSFileProviderFileSystemUserReadable: Self = Self(1 << 1);
pub const NSFileProviderFileSystemUserWritable: Self = Self(1 << 2);
pub const NSFileProviderFileSystemHidden: Self = Self(1 << 3);
pub const NSFileProviderFileSystemPathExtensionHidden: Self = Self(1 << 4);
}
unsafe impl Encode for NSFileProviderFileSystemFlags {
const ENCODING: Encoding = NSUInteger::ENCODING;
}
unsafe impl RefEncode for NSFileProviderFileSystemFlags {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct NSFileProviderTypeAndCreator {
pub r#type: OSType,
pub creator: OSType,
}
unsafe impl Encode for NSFileProviderTypeAndCreator {
const ENCODING: Encoding = Encoding::Struct(
"NSFileProviderTypeAndCreator",
&[<OSType>::ENCODING, <OSType>::ENCODING],
);
}
unsafe impl RefEncode for NSFileProviderTypeAndCreator {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct NSFileProviderContentPolicy(pub NSInteger);
impl NSFileProviderContentPolicy {
#[doc(alias = "NSFileProviderContentPolicyInherited")]
pub const Inherited: Self = Self(0);
#[doc(alias = "NSFileProviderContentPolicyDownloadLazily")]
pub const DownloadLazily: Self = Self(1);
#[doc(alias = "NSFileProviderContentPolicyDownloadLazilyAndEvictOnRemoteUpdate")]
pub const DownloadLazilyAndEvictOnRemoteUpdate: Self = Self(2);
#[doc(alias = "NSFileProviderContentPolicyDownloadEagerlyAndKeepDownloaded")]
pub const DownloadEagerlyAndKeepDownloaded: Self = Self(3);
}
unsafe impl Encode for NSFileProviderContentPolicy {
const ENCODING: Encoding = NSInteger::ENCODING;
}
unsafe impl RefEncode for NSFileProviderContentPolicy {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
extern_protocol!(
pub unsafe trait NSFileProviderItemProtocol: NSObjectProtocol {
#[method_id(@__retain_semantics Other itemIdentifier)]
unsafe fn itemIdentifier(&self) -> Id<NSFileProviderItemIdentifier>;
#[method_id(@__retain_semantics Other parentItemIdentifier)]
unsafe fn parentItemIdentifier(&self) -> Id<NSFileProviderItemIdentifier>;
#[method_id(@__retain_semantics Other filename)]
unsafe fn filename(&self) -> Id<NSString>;
#[cfg(feature = "objc2-uniform-type-identifiers")]
#[optional]
#[method_id(@__retain_semantics Other contentType)]
unsafe fn contentType(&self) -> Id<UTType>;
#[deprecated]
#[optional]
#[method_id(@__retain_semantics Other typeIdentifier)]
unsafe fn typeIdentifier(&self) -> Id<NSString>;
#[optional]
#[method(typeAndCreator)]
unsafe fn typeAndCreator(&self) -> NSFileProviderTypeAndCreator;
#[optional]
#[method(capabilities)]
unsafe fn capabilities(&self) -> NSFileProviderItemCapabilities;
#[optional]
#[method(fileSystemFlags)]
unsafe fn fileSystemFlags(&self) -> NSFileProviderFileSystemFlags;
#[optional]
#[method_id(@__retain_semantics Other documentSize)]
unsafe fn documentSize(&self) -> Option<Id<NSNumber>>;
#[optional]
#[method_id(@__retain_semantics Other childItemCount)]
unsafe fn childItemCount(&self) -> Option<Id<NSNumber>>;
#[optional]
#[method_id(@__retain_semantics Other creationDate)]
unsafe fn creationDate(&self) -> Option<Id<NSDate>>;
#[optional]
#[method_id(@__retain_semantics Other contentModificationDate)]
unsafe fn contentModificationDate(&self) -> Option<Id<NSDate>>;
#[optional]
#[method_id(@__retain_semantics Other extendedAttributes)]
unsafe fn extendedAttributes(&self) -> Id<NSDictionary<NSString, NSData>>;
#[optional]
#[method_id(@__retain_semantics Other lastUsedDate)]
unsafe fn lastUsedDate(&self) -> Option<Id<NSDate>>;
#[optional]
#[method_id(@__retain_semantics Other tagData)]
unsafe fn tagData(&self) -> Option<Id<NSData>>;
#[optional]
#[method_id(@__retain_semantics Other favoriteRank)]
unsafe fn favoriteRank(&self) -> Option<Id<NSNumber>>;
#[optional]
#[method(isTrashed)]
unsafe fn isTrashed(&self) -> bool;
#[optional]
#[method(isUploaded)]
unsafe fn isUploaded(&self) -> bool;
#[optional]
#[method(isUploading)]
unsafe fn isUploading(&self) -> bool;
#[optional]
#[method_id(@__retain_semantics Other uploadingError)]
unsafe fn uploadingError(&self) -> Option<Id<NSError>>;
#[optional]
#[method(isDownloaded)]
unsafe fn isDownloaded(&self) -> bool;
#[optional]
#[method(isDownloading)]
unsafe fn isDownloading(&self) -> bool;
#[optional]
#[method_id(@__retain_semantics Other downloadingError)]
unsafe fn downloadingError(&self) -> Option<Id<NSError>>;
#[optional]
#[method(isMostRecentVersionDownloaded)]
unsafe fn isMostRecentVersionDownloaded(&self) -> bool;
#[optional]
#[method(isShared)]
unsafe fn isShared(&self) -> bool;
#[optional]
#[method(isSharedByCurrentUser)]
unsafe fn isSharedByCurrentUser(&self) -> bool;
#[optional]
#[method_id(@__retain_semantics Other ownerNameComponents)]
unsafe fn ownerNameComponents(&self) -> Option<Id<NSPersonNameComponents>>;
#[optional]
#[method_id(@__retain_semantics Other mostRecentEditorNameComponents)]
unsafe fn mostRecentEditorNameComponents(&self) -> Option<Id<NSPersonNameComponents>>;
#[optional]
#[method_id(@__retain_semantics Other versionIdentifier)]
unsafe fn versionIdentifier(&self) -> Option<Id<NSData>>;
#[optional]
#[method_id(@__retain_semantics Other itemVersion)]
unsafe fn itemVersion(&self) -> Id<NSFileProviderItemVersion>;
#[optional]
#[method_id(@__retain_semantics Other symlinkTargetPath)]
unsafe fn symlinkTargetPath(&self) -> Option<Id<NSString>>;
#[optional]
#[method_id(@__retain_semantics Other userInfo)]
unsafe fn userInfo(&self) -> Option<Id<NSDictionary>>;
#[optional]
#[method(contentPolicy)]
unsafe fn contentPolicy(&self) -> NSFileProviderContentPolicy;
}
unsafe impl ProtocolType for dyn NSFileProviderItemProtocol {
const NAME: &'static str = "NSFileProviderItem";
}
);
pub type NSFileProviderItem = ProtocolObject<dyn NSFileProviderItemProtocol>;