use core::ffi::*;
use core::ptr::NonNull;
use objc2::__framework_prelude::*;
use objc2_foundation::*;
use crate::*;
#[cfg(all(feature = "GCPhysicalInputProfile", feature = "block2"))]
pub type GCMouseMoved = *mut block2::DynBlock<dyn Fn(NonNull<GCMouseInput>, c_float, c_float)>;
extern_class!(
#[unsafe(super(GCPhysicalInputProfile, NSObject))]
#[derive(Debug, PartialEq, Eq, Hash)]
#[cfg(feature = "GCPhysicalInputProfile")]
pub struct GCMouseInput;
);
#[cfg(feature = "GCPhysicalInputProfile")]
extern_conformance!(
unsafe impl NSObjectProtocol for GCMouseInput {}
);
#[cfg(feature = "GCPhysicalInputProfile")]
impl GCMouseInput {
extern_methods!(
#[cfg(feature = "block2")]
#[unsafe(method(mouseMovedHandler))]
#[unsafe(method_family = none)]
pub unsafe fn mouseMovedHandler(&self) -> GCMouseMoved;
#[cfg(feature = "block2")]
#[unsafe(method(setMouseMovedHandler:))]
#[unsafe(method_family = none)]
pub unsafe fn setMouseMovedHandler(&self, mouse_moved_handler: GCMouseMoved);
#[cfg(all(
feature = "GCControllerDirectionPad",
feature = "GCControllerElement",
feature = "GCDeviceCursor"
))]
#[unsafe(method(scroll))]
#[unsafe(method_family = none)]
pub unsafe fn scroll(&self) -> Retained<GCDeviceCursor>;
#[cfg(all(feature = "GCControllerButtonInput", feature = "GCControllerElement"))]
#[unsafe(method(leftButton))]
#[unsafe(method_family = none)]
pub unsafe fn leftButton(&self) -> Retained<GCControllerButtonInput>;
#[cfg(all(feature = "GCControllerButtonInput", feature = "GCControllerElement"))]
#[unsafe(method(rightButton))]
#[unsafe(method_family = none)]
pub unsafe fn rightButton(&self) -> Option<Retained<GCControllerButtonInput>>;
#[cfg(all(feature = "GCControllerButtonInput", feature = "GCControllerElement"))]
#[unsafe(method(middleButton))]
#[unsafe(method_family = none)]
pub unsafe fn middleButton(&self) -> Option<Retained<GCControllerButtonInput>>;
#[cfg(all(feature = "GCControllerButtonInput", feature = "GCControllerElement"))]
#[unsafe(method(auxiliaryButtons))]
#[unsafe(method_family = none)]
pub unsafe fn auxiliaryButtons(&self)
-> Option<Retained<NSArray<GCControllerButtonInput>>>;
);
}
#[cfg(feature = "GCPhysicalInputProfile")]
impl GCMouseInput {
extern_methods!(
#[unsafe(method(init))]
#[unsafe(method_family = init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
#[unsafe(method(new))]
#[unsafe(method_family = new)]
pub unsafe fn new() -> Retained<Self>;
);
}