#[cfg(feature = "block2")]
use block2::*;
use objc2::__framework_prelude::*;
use objc2_foundation::*;
use crate::*;
extern_protocol!(
#[cfg(feature = "GCDevicePhysicalInputState")]
pub unsafe trait GCDevicePhysicalInput: GCDevicePhysicalInputState {
#[cfg(feature = "GCDevice")]
#[method_id(@__retain_semantics Other device)]
unsafe fn device(&self) -> Option<Id<ProtocolObject<dyn GCDevice>>>;
#[cfg(all(feature = "GCPhysicalInputElement", feature = "block2"))]
#[method(elementValueDidChangeHandler)]
unsafe fn elementValueDidChangeHandler(
&self,
) -> *mut Block<
dyn Fn(
NonNull<ProtocolObject<dyn GCDevicePhysicalInput>>,
NonNull<ProtocolObject<dyn GCPhysicalInputElement>>,
),
>;
#[cfg(all(feature = "GCPhysicalInputElement", feature = "block2"))]
#[method(setElementValueDidChangeHandler:)]
unsafe fn setElementValueDidChangeHandler(
&self,
element_value_did_change_handler: Option<
&Block<
dyn Fn(
NonNull<ProtocolObject<dyn GCDevicePhysicalInput>>,
NonNull<ProtocolObject<dyn GCPhysicalInputElement>>,
),
>,
>,
);
#[method_id(@__retain_semantics Other capture)]
unsafe fn capture(&self) -> Id<ProtocolObject<dyn GCDevicePhysicalInputState>>;
#[cfg(feature = "block2")]
#[method(inputStateAvailableHandler)]
unsafe fn inputStateAvailableHandler(
&self,
) -> *mut Block<dyn Fn(NonNull<ProtocolObject<dyn GCDevicePhysicalInput>>)>;
#[cfg(feature = "block2")]
#[method(setInputStateAvailableHandler:)]
unsafe fn setInputStateAvailableHandler(
&self,
input_state_available_handler: Option<
&Block<dyn Fn(NonNull<ProtocolObject<dyn GCDevicePhysicalInput>>)>,
>,
);
#[method(inputStateQueueDepth)]
unsafe fn inputStateQueueDepth(&self) -> NSInteger;
#[method(setInputStateQueueDepth:)]
unsafe fn setInputStateQueueDepth(&self, input_state_queue_depth: NSInteger);
#[cfg(feature = "GCDevicePhysicalInputStateDiff")]
#[method_id(@__retain_semantics Other nextInputState)]
unsafe fn nextInputState(&self) -> Option<Id<TodoProtocols>>;
}
#[cfg(feature = "GCDevicePhysicalInputState")]
unsafe impl ProtocolType for dyn GCDevicePhysicalInput {}
);