use core::ffi::*;
use core::ptr::NonNull;
use objc2::__framework_prelude::*;
use objc2_foundation::*;
use crate::*;
extern_protocol!(
pub unsafe trait NSFileProviderServiceSource {
#[unsafe(method(serviceName))]
#[unsafe(method_family = none)]
unsafe fn serviceName(&self) -> Retained<NSFileProviderServiceName>;
#[unsafe(method(makeListenerEndpointAndReturnError:_))]
#[unsafe(method_family = none)]
unsafe fn makeListenerEndpointAndReturnError(
&self,
) -> Result<Retained<NSXPCListenerEndpoint>, Retained<NSError>>;
#[optional]
#[unsafe(method(isRestricted))]
#[unsafe(method_family = none)]
unsafe fn isRestricted(&self) -> bool;
}
);
#[cfg(feature = "Extension")]
impl NSFileProviderExtension {
extern_methods!(
#[cfg(feature = "NSFileProviderItem")]
#[unsafe(method(supportedServiceSourcesForItemIdentifier:error:_))]
#[unsafe(method_family = none)]
pub unsafe fn supportedServiceSourcesForItemIdentifier_error(
&self,
item_identifier: &NSFileProviderItemIdentifier,
) -> Result<
Retained<NSArray<ProtocolObject<dyn NSFileProviderServiceSource>>>,
Retained<NSError>,
>;
);
}
#[cfg(feature = "Extension")]
impl NSFileProviderManager {
extern_methods!(
#[cfg(all(feature = "NSFileProviderItem", feature = "block2"))]
#[unsafe(method(getServiceWithName:itemIdentifier:completionHandler:))]
#[unsafe(method_family = none)]
pub unsafe fn getServiceWithName_itemIdentifier_completionHandler(
&self,
service_name: &NSFileProviderServiceName,
item_identifier: &NSFileProviderItemIdentifier,
completion_handler: &block2::DynBlock<dyn Fn(*mut NSFileProviderService, *mut NSError)>,
);
);
}