use objc2::__framework_prelude::*;
use objc2_foundation::*;
use crate::*;
extern_protocol!(
pub unsafe trait GCPhysicalInputElement: NSObjectProtocol {
#[method_id(@__retain_semantics Other aliases)]
unsafe fn aliases(&self) -> Id<NSSet<NSString>>;
#[method_id(@__retain_semantics Other localizedName)]
unsafe fn localizedName(&self) -> Option<Id<NSString>>;
#[method_id(@__retain_semantics Other sfSymbolsName)]
unsafe fn sfSymbolsName(&self) -> Option<Id<NSString>>;
}
unsafe impl ProtocolType for dyn GCPhysicalInputElement {}
);
__inner_extern_class!(
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct GCPhysicalInputElementCollection<
Key: ?Sized = AnyObject,
Element: ?Sized = AnyObject,
> {
__superclass: NSObject,
_inner0: PhantomData<*mut Key>,
_inner1: PhantomData<*mut Element>,
notunwindsafe: PhantomData<&'static mut ()>,
}
unsafe impl<Key: ?Sized + Message, Element: ?Sized + Message> ClassType
for GCPhysicalInputElementCollection<Key, Element>
{
type Super = NSObject;
type Mutability = InteriorMutable;
fn as_super(&self) -> &Self::Super {
&self.__superclass
}
fn as_super_mut(&mut self) -> &mut Self::Super {
&mut self.__superclass
}
}
);
unsafe impl<Key: ?Sized, Element: ?Sized> NSFastEnumeration
for GCPhysicalInputElementCollection<Key, Element>
{
}
unsafe impl<Key: ?Sized, Element: ?Sized> NSObjectProtocol
for GCPhysicalInputElementCollection<Key, Element>
{
}
extern_methods!(
unsafe impl<Key: Message, Element: Message> GCPhysicalInputElementCollection<Key, Element> {
#[method_id(@__retain_semantics New new)]
pub unsafe fn new() -> Id<Self>;
#[method_id(@__retain_semantics Init init)]
pub unsafe fn init(this: Allocated<Self>) -> Id<Self>;
#[method(count)]
pub unsafe fn count(&self) -> NSUInteger;
#[method_id(@__retain_semantics Other elementForAlias:)]
pub unsafe fn elementForAlias(&self, alias: &Key) -> Option<Id<Element>>;
#[method_id(@__retain_semantics Other objectForKeyedSubscript:)]
pub unsafe fn objectForKeyedSubscript(&self, key: &Key) -> Option<Id<Element>>;
#[method_id(@__retain_semantics Other elementEnumerator)]
pub unsafe fn elementEnumerator(&self) -> Id<NSEnumerator<Element>>;
}
);