sdl3-bindgen-sys-0.0.0.1: src/SDL3/Sys/Bindgen/Hidapi.hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE DerivingVia #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE EmptyDataDecls #-}
{-# LANGUAGE ExplicitForAll #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE MagicHash #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UnboxedTuples #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE NoFieldSelectors #-}
-- | Header file for SDL HIDAPI functions.
--
-- This is an adaptation of the original HIDAPI interface by Alan Ott, and includes source code licensed under the following license:
--
-- @
-- HIDAPI - Multi-Platform library for
-- communication with HID devices.
--
-- Copyright 2009, Alan Ott, Signal 11 Software.
-- All Rights Reserved.
--
-- This software may be used by anyone for any reason so
-- long as the copyright notice in the source files
-- remains intact.
-- @
--
-- (Note that this license is the same as item three of SDL\'s zlib license, so it adds no new requirements on the user.)
--
-- If you would like a version of SDL without this code, you can build SDL with SDL_HIDAPI_DISABLED defined to 1. You might want to do this for example on iOS or tvOS to avoid a dependency on the CoreBluetooth framework. An opaque handle representing an open HID device.
--
-- @since 3.2.0
module SDL3.Sys.Bindgen.Hidapi (
SDL3.Sys.Bindgen.Hidapi.SDL_hid_device,
SDL3.Sys.Bindgen.Hidapi.SDL_hid_bus_type (..),
pattern SDL3.Sys.Bindgen.Hidapi.SDL_HID_API_BUS_UNKNOWN,
pattern SDL3.Sys.Bindgen.Hidapi.SDL_HID_API_BUS_USB,
pattern SDL3.Sys.Bindgen.Hidapi.SDL_HID_API_BUS_BLUETOOTH,
pattern SDL3.Sys.Bindgen.Hidapi.SDL_HID_API_BUS_I2C,
pattern SDL3.Sys.Bindgen.Hidapi.SDL_HID_API_BUS_SPI,
SDL3.Sys.Bindgen.Hidapi.SDL_hid_device_info (..),
SDL3.Sys.Bindgen.Hidapi.sDL_PROP_HIDAPI_LIBUSB_DEVICE_HANDLE_POINTER,
)
where
import HsBindgen.Runtime.CEnum qualified as CEnum
import HsBindgen.Runtime.HasCField qualified as HasCField
import HsBindgen.Runtime.LibC qualified
import HsBindgen.Runtime.Marshal qualified as Marshal
import HsBindgen.Runtime.Support qualified as BG
import HsBindgen.Runtime.Support.CompatHasField qualified as BG.CompatHasField
-- | [C declaration]: @struct SDL_hid_device@, defined at @SDL3\/SDL_hidapi.h 71:16@
data SDL_hid_device
-- | HID underlying bus types.
--
-- @since 3.2.0
--
-- [C declaration]: @enum SDL_hid_bus_type@, defined at @SDL3\/SDL_hidapi.h 78:14@
newtype SDL_hid_bus_type = SDL_hid_bus_type
{ unwrap :: BG.CUInt
}
deriving stock (BG.Generic, Eq, Ord)
deriving newtype (BG.HasFFIType)
instance Marshal.StaticSize SDL_hid_bus_type where
staticSizeOf = \_ -> (4 :: Int)
staticAlignment = \_ -> (4 :: Int)
instance Marshal.ReadRaw SDL_hid_bus_type where
readRaw =
\ptr0 ->
pure SDL_hid_bus_type
<*> Marshal.readRawByteOff ptr0 (0 :: Int)
instance Marshal.WriteRaw SDL_hid_bus_type where
writeRaw =
\ptr0 ->
\s1 ->
case s1 of
SDL_hid_bus_type unwrap2 ->
Marshal.writeRawByteOff ptr0 (0 :: Int) unwrap2
deriving via Marshal.EquivStorable SDL_hid_bus_type instance BG.Storable SDL_hid_bus_type
deriving via BG.CUInt instance BG.Prim SDL_hid_bus_type
instance CEnum.CEnum SDL_hid_bus_type where
type CEnumZ SDL_hid_bus_type = BG.CUInt
toCEnum = SDL_hid_bus_type
fromCEnum = BG.getField @"unwrap"
declaredValues =
\_ ->
CEnum.declaredValuesFromList
[ (0, BG.singleton "SDL_HID_API_BUS_UNKNOWN")
, (1, BG.singleton "SDL_HID_API_BUS_USB")
, (2, BG.singleton "SDL_HID_API_BUS_BLUETOOTH")
, (3, BG.singleton "SDL_HID_API_BUS_I2C")
, (4, BG.singleton "SDL_HID_API_BUS_SPI")
]
showsUndeclared =
CEnum.showsWrappedUndeclared "SDL_hid_bus_type"
readPrecUndeclared =
CEnum.readPrecWrappedUndeclared "SDL_hid_bus_type"
isDeclared = CEnum.seqIsDeclared
mkDeclared = CEnum.seqMkDeclared
instance CEnum.SequentialCEnum SDL_hid_bus_type where
minDeclaredValue = SDL_HID_API_BUS_UNKNOWN
maxDeclaredValue = SDL_HID_API_BUS_SPI
instance Show SDL_hid_bus_type where
showsPrec = CEnum.shows
instance Read SDL_hid_bus_type where
readPrec = CEnum.readPrec
readList = BG.readListDefault
readListPrec = BG.readListPrecDefault
instance
(ty ~ BG.CUInt)
=> BG.CompatHasField.HasField "unwrap" SDL_hid_bus_type ty
where
hasField =
\x0 ->
( \y1 ->
SDL_hid_bus_type{unwrap = y1}
, BG.getField @"unwrap" x0
)
instance
(ty ~ BG.CUInt)
=> BG.HasField "unwrap" (BG.Ptr SDL_hid_bus_type) (BG.Ptr ty)
where
getField = HasCField.fromPtr (BG.Proxy @"unwrap")
instance HasCField.HasCField SDL_hid_bus_type "unwrap" where
type CFieldType SDL_hid_bus_type "unwrap" = BG.CUInt
offset# = \_ -> \_ -> 0
-- | Unknown bus type
--
-- [C declaration]: @SDL_HID_API_BUS_UNKNOWN@, defined at @SDL3\/SDL_hidapi.h 80:5@
pattern SDL_HID_API_BUS_UNKNOWN :: SDL_hid_bus_type
pattern SDL_HID_API_BUS_UNKNOWN = SDL_hid_bus_type 0
-- | USB bus Specifications: [https:\/\/usb.org\/hid](https://usb.org/hid)
--
-- [C declaration]: @SDL_HID_API_BUS_USB@, defined at @SDL3\/SDL_hidapi.h 85:5@
pattern SDL_HID_API_BUS_USB :: SDL_hid_bus_type
pattern SDL_HID_API_BUS_USB = SDL_hid_bus_type 1
-- | Bluetooth or Bluetooth LE bus Specifications: [https:\/\/www.bluetooth.com\/specifications\/specs\/human-interface-device-profile-1-1-1\/](https://www.bluetooth.com/specifications/specs/human-interface-device-profile-1-1-1/) [https:\/\/www.bluetooth.com\/specifications\/specs\/hid-service-1-0\/](https://www.bluetooth.com/specifications/specs/hid-service-1-0/) [https:\/\/www.bluetooth.com\/specifications\/specs\/hid-over-gatt-profile-1-0\/](https://www.bluetooth.com/specifications/specs/hid-over-gatt-profile-1-0/)
--
-- [C declaration]: @SDL_HID_API_BUS_BLUETOOTH@, defined at @SDL3\/SDL_hidapi.h 92:5@
pattern SDL_HID_API_BUS_BLUETOOTH :: SDL_hid_bus_type
pattern SDL_HID_API_BUS_BLUETOOTH = SDL_hid_bus_type 2
-- | I2C bus Specifications: [https:\/\/docs.microsoft.com\/previous-versions\/windows\/hardware\/design\/dn642101(v=vs.85)](https://docs.microsoft.com/previous-versions/windows/hardware/design/dn642101(v=vs.85))
--
-- [C declaration]: @SDL_HID_API_BUS_I2C@, defined at @SDL3\/SDL_hidapi.h 97:5@
pattern SDL_HID_API_BUS_I2C :: SDL_hid_bus_type
pattern SDL_HID_API_BUS_I2C = SDL_hid_bus_type 3
-- | SPI bus Specifications: [https:\/\/www.microsoft.com\/download\/details.aspx?id=103325](https://www.microsoft.com/download/details.aspx?id=103325)
--
-- [C declaration]: @SDL_HID_API_BUS_SPI@, defined at @SDL3\/SDL_hidapi.h 102:5@
pattern SDL_HID_API_BUS_SPI :: SDL_hid_bus_type
pattern SDL_HID_API_BUS_SPI = SDL_hid_bus_type 4
-- | hidapi info structure Information about a connected HID device
--
-- @since 3.2.0
--
-- [C declaration]: @struct SDL_hid_device_info@, defined at @SDL3\/SDL_hidapi.h 113:16@
data SDL_hid_device_info = SDL_hid_device_info
{ path :: BG.Ptr BG.CChar
-- ^ Platform-specific device path
--
-- [C declaration]: @path@, defined at @SDL3\/SDL_hidapi.h 116:11@
, vendor_id :: BG.CUShort
-- ^ Device Vendor ID
--
-- [C declaration]: @vendor_id@, defined at @SDL3\/SDL_hidapi.h 118:20@
, product_id :: BG.CUShort
-- ^ Device Product ID
--
-- [C declaration]: @product_id@, defined at @SDL3\/SDL_hidapi.h 120:20@
, serial_number :: BG.Ptr HsBindgen.Runtime.LibC.CWchar
-- ^ Serial Number
--
-- [C declaration]: @serial_number@, defined at @SDL3\/SDL_hidapi.h 122:14@
, release_number :: BG.CUShort
-- ^ Device Release Number in binary-coded decimal, also known as Device Version Number
--
-- [C declaration]: @release_number@, defined at @SDL3\/SDL_hidapi.h 125:20@
, manufacturer_string :: BG.Ptr HsBindgen.Runtime.LibC.CWchar
-- ^ Manufacturer String
--
-- [C declaration]: @manufacturer_string@, defined at @SDL3\/SDL_hidapi.h 127:14@
, product_string :: BG.Ptr HsBindgen.Runtime.LibC.CWchar
-- ^ Product string
--
-- [C declaration]: @product_string@, defined at @SDL3\/SDL_hidapi.h 129:14@
, usage_page :: BG.CUShort
-- ^ Usage Page for this Device\/Interface (Windows\/Mac\/hidraw only)
--
-- [C declaration]: @usage_page@, defined at @SDL3\/SDL_hidapi.h 132:20@
, usage :: BG.CUShort
-- ^ Usage for this Device\/Interface (Windows\/Mac\/hidraw only)
--
-- [C declaration]: @usage@, defined at @SDL3\/SDL_hidapi.h 135:20@
, interface_number :: BG.CInt
-- ^ The USB interface which this logical device represents.
--
-- Valid only if the device is a USB HID device. Set to -1 in all other cases.
--
-- [C declaration]: @interface_number@, defined at @SDL3\/SDL_hidapi.h 142:9@
, interface_class :: BG.CInt
-- ^ Additional information about the USB interface. Valid on libusb and Android implementations.
--
-- [C declaration]: @interface_class@, defined at @SDL3\/SDL_hidapi.h 146:9@
, interface_subclass :: BG.CInt
-- ^ [C declaration]: @interface_subclass@, defined at @SDL3\/SDL_hidapi.h 147:9@
, interface_protocol :: BG.CInt
-- ^ [C declaration]: @interface_protocol@, defined at @SDL3\/SDL_hidapi.h 148:9@
, bus_type :: SDL_hid_bus_type
-- ^ Underlying bus type
--
-- [C declaration]: @bus_type@, defined at @SDL3\/SDL_hidapi.h 151:22@
, next :: BG.Ptr SDL_hid_device_info
-- ^ Pointer to the next device
--
-- [C declaration]: @next@, defined at @SDL3\/SDL_hidapi.h 154:33@
}
deriving stock (BG.Generic, Eq, Show)
instance Marshal.StaticSize SDL_hid_device_info where
staticSizeOf = \_ -> (80 :: Int)
staticAlignment = \_ -> (8 :: Int)
instance Marshal.ReadRaw SDL_hid_device_info where
readRaw =
\ptr0 ->
pure SDL_hid_device_info
<*> HasCField.readRaw (BG.Proxy @"path") ptr0
<*> HasCField.readRaw (BG.Proxy @"vendor_id") ptr0
<*> HasCField.readRaw (BG.Proxy @"product_id") ptr0
<*> HasCField.readRaw (BG.Proxy @"serial_number") ptr0
<*> HasCField.readRaw (BG.Proxy @"release_number") ptr0
<*> HasCField.readRaw (BG.Proxy @"manufacturer_string") ptr0
<*> HasCField.readRaw (BG.Proxy @"product_string") ptr0
<*> HasCField.readRaw (BG.Proxy @"usage_page") ptr0
<*> HasCField.readRaw (BG.Proxy @"usage") ptr0
<*> HasCField.readRaw (BG.Proxy @"interface_number") ptr0
<*> HasCField.readRaw (BG.Proxy @"interface_class") ptr0
<*> HasCField.readRaw (BG.Proxy @"interface_subclass") ptr0
<*> HasCField.readRaw (BG.Proxy @"interface_protocol") ptr0
<*> HasCField.readRaw (BG.Proxy @"bus_type") ptr0
<*> HasCField.readRaw (BG.Proxy @"next") ptr0
instance Marshal.WriteRaw SDL_hid_device_info where
writeRaw =
\ptr0 ->
\s1 ->
case s1 of
SDL_hid_device_info
path2
vendor_id3
product_id4
serial_number5
release_number6
manufacturer_string7
product_string8
usage_page9
usage10
interface_number11
interface_class12
interface_subclass13
interface_protocol14
bus_type15
next16 ->
HasCField.writeRaw (BG.Proxy @"path") ptr0 path2
>> HasCField.writeRaw (BG.Proxy @"vendor_id") ptr0 vendor_id3
>> HasCField.writeRaw (BG.Proxy @"product_id") ptr0 product_id4
>> HasCField.writeRaw (BG.Proxy @"serial_number") ptr0 serial_number5
>> HasCField.writeRaw (BG.Proxy @"release_number") ptr0 release_number6
>> HasCField.writeRaw (BG.Proxy @"manufacturer_string") ptr0 manufacturer_string7
>> HasCField.writeRaw (BG.Proxy @"product_string") ptr0 product_string8
>> HasCField.writeRaw (BG.Proxy @"usage_page") ptr0 usage_page9
>> HasCField.writeRaw (BG.Proxy @"usage") ptr0 usage10
>> HasCField.writeRaw (BG.Proxy @"interface_number") ptr0 interface_number11
>> HasCField.writeRaw (BG.Proxy @"interface_class") ptr0 interface_class12
>> HasCField.writeRaw (BG.Proxy @"interface_subclass") ptr0 interface_subclass13
>> HasCField.writeRaw (BG.Proxy @"interface_protocol") ptr0 interface_protocol14
>> HasCField.writeRaw (BG.Proxy @"bus_type") ptr0 bus_type15
>> HasCField.writeRaw (BG.Proxy @"next") ptr0 next16
deriving via Marshal.EquivStorable SDL_hid_device_info instance BG.Storable SDL_hid_device_info
instance
(ty ~ BG.Ptr BG.CChar)
=> BG.CompatHasField.HasField "path" SDL_hid_device_info ty
where
hasField =
\x0 ->
( \y1 ->
SDL_hid_device_info
{ path = y1
, vendor_id = BG.getField @"vendor_id" x0
, product_id = BG.getField @"product_id" x0
, serial_number = BG.getField @"serial_number" x0
, release_number = BG.getField @"release_number" x0
, manufacturer_string = BG.getField @"manufacturer_string" x0
, product_string = BG.getField @"product_string" x0
, usage_page = BG.getField @"usage_page" x0
, usage = BG.getField @"usage" x0
, interface_number = BG.getField @"interface_number" x0
, interface_class = BG.getField @"interface_class" x0
, interface_subclass = BG.getField @"interface_subclass" x0
, interface_protocol = BG.getField @"interface_protocol" x0
, bus_type = BG.getField @"bus_type" x0
, next = BG.getField @"next" x0
}
, BG.getField @"path" x0
)
instance
(ty ~ BG.Ptr BG.CChar)
=> BG.HasField "path" (BG.Ptr SDL_hid_device_info) (BG.Ptr ty)
where
getField = HasCField.fromPtr (BG.Proxy @"path")
instance HasCField.HasCField SDL_hid_device_info "path" where
type
CFieldType SDL_hid_device_info "path" =
BG.Ptr BG.CChar
offset# = \_ -> \_ -> 0
instance
(ty ~ BG.CUShort)
=> BG.CompatHasField.HasField "vendor_id" SDL_hid_device_info ty
where
hasField =
\x0 ->
( \y1 ->
SDL_hid_device_info
{ vendor_id = y1
, path = BG.getField @"path" x0
, product_id = BG.getField @"product_id" x0
, serial_number = BG.getField @"serial_number" x0
, release_number = BG.getField @"release_number" x0
, manufacturer_string = BG.getField @"manufacturer_string" x0
, product_string = BG.getField @"product_string" x0
, usage_page = BG.getField @"usage_page" x0
, usage = BG.getField @"usage" x0
, interface_number = BG.getField @"interface_number" x0
, interface_class = BG.getField @"interface_class" x0
, interface_subclass = BG.getField @"interface_subclass" x0
, interface_protocol = BG.getField @"interface_protocol" x0
, bus_type = BG.getField @"bus_type" x0
, next = BG.getField @"next" x0
}
, BG.getField @"vendor_id" x0
)
instance
(ty ~ BG.CUShort)
=> BG.HasField "vendor_id" (BG.Ptr SDL_hid_device_info) (BG.Ptr ty)
where
getField = HasCField.fromPtr (BG.Proxy @"vendor_id")
instance HasCField.HasCField SDL_hid_device_info "vendor_id" where
type
CFieldType SDL_hid_device_info "vendor_id" =
BG.CUShort
offset# = \_ -> \_ -> 8
instance
(ty ~ BG.CUShort)
=> BG.CompatHasField.HasField "product_id" SDL_hid_device_info ty
where
hasField =
\x0 ->
( \y1 ->
SDL_hid_device_info
{ product_id = y1
, path = BG.getField @"path" x0
, vendor_id = BG.getField @"vendor_id" x0
, serial_number = BG.getField @"serial_number" x0
, release_number = BG.getField @"release_number" x0
, manufacturer_string = BG.getField @"manufacturer_string" x0
, product_string = BG.getField @"product_string" x0
, usage_page = BG.getField @"usage_page" x0
, usage = BG.getField @"usage" x0
, interface_number = BG.getField @"interface_number" x0
, interface_class = BG.getField @"interface_class" x0
, interface_subclass = BG.getField @"interface_subclass" x0
, interface_protocol = BG.getField @"interface_protocol" x0
, bus_type = BG.getField @"bus_type" x0
, next = BG.getField @"next" x0
}
, BG.getField @"product_id" x0
)
instance
(ty ~ BG.CUShort)
=> BG.HasField "product_id" (BG.Ptr SDL_hid_device_info) (BG.Ptr ty)
where
getField = HasCField.fromPtr (BG.Proxy @"product_id")
instance HasCField.HasCField SDL_hid_device_info "product_id" where
type
CFieldType SDL_hid_device_info "product_id" =
BG.CUShort
offset# = \_ -> \_ -> 10
instance
(ty ~ BG.Ptr HsBindgen.Runtime.LibC.CWchar)
=> BG.CompatHasField.HasField "serial_number" SDL_hid_device_info ty
where
hasField =
\x0 ->
( \y1 ->
SDL_hid_device_info
{ serial_number = y1
, path = BG.getField @"path" x0
, vendor_id = BG.getField @"vendor_id" x0
, product_id = BG.getField @"product_id" x0
, release_number = BG.getField @"release_number" x0
, manufacturer_string = BG.getField @"manufacturer_string" x0
, product_string = BG.getField @"product_string" x0
, usage_page = BG.getField @"usage_page" x0
, usage = BG.getField @"usage" x0
, interface_number = BG.getField @"interface_number" x0
, interface_class = BG.getField @"interface_class" x0
, interface_subclass = BG.getField @"interface_subclass" x0
, interface_protocol = BG.getField @"interface_protocol" x0
, bus_type = BG.getField @"bus_type" x0
, next = BG.getField @"next" x0
}
, BG.getField @"serial_number" x0
)
instance
(ty ~ BG.Ptr HsBindgen.Runtime.LibC.CWchar)
=> BG.HasField "serial_number" (BG.Ptr SDL_hid_device_info) (BG.Ptr ty)
where
getField =
HasCField.fromPtr (BG.Proxy @"serial_number")
instance HasCField.HasCField SDL_hid_device_info "serial_number" where
type
CFieldType SDL_hid_device_info "serial_number" =
BG.Ptr HsBindgen.Runtime.LibC.CWchar
offset# = \_ -> \_ -> 16
instance
(ty ~ BG.CUShort)
=> BG.CompatHasField.HasField "release_number" SDL_hid_device_info ty
where
hasField =
\x0 ->
( \y1 ->
SDL_hid_device_info
{ release_number = y1
, path = BG.getField @"path" x0
, vendor_id = BG.getField @"vendor_id" x0
, product_id = BG.getField @"product_id" x0
, serial_number = BG.getField @"serial_number" x0
, manufacturer_string = BG.getField @"manufacturer_string" x0
, product_string = BG.getField @"product_string" x0
, usage_page = BG.getField @"usage_page" x0
, usage = BG.getField @"usage" x0
, interface_number = BG.getField @"interface_number" x0
, interface_class = BG.getField @"interface_class" x0
, interface_subclass = BG.getField @"interface_subclass" x0
, interface_protocol = BG.getField @"interface_protocol" x0
, bus_type = BG.getField @"bus_type" x0
, next = BG.getField @"next" x0
}
, BG.getField @"release_number" x0
)
instance
(ty ~ BG.CUShort)
=> BG.HasField "release_number" (BG.Ptr SDL_hid_device_info) (BG.Ptr ty)
where
getField =
HasCField.fromPtr (BG.Proxy @"release_number")
instance HasCField.HasCField SDL_hid_device_info "release_number" where
type
CFieldType SDL_hid_device_info "release_number" =
BG.CUShort
offset# = \_ -> \_ -> 24
instance
(ty ~ BG.Ptr HsBindgen.Runtime.LibC.CWchar)
=> BG.CompatHasField.HasField "manufacturer_string" SDL_hid_device_info ty
where
hasField =
\x0 ->
( \y1 ->
SDL_hid_device_info
{ manufacturer_string = y1
, path = BG.getField @"path" x0
, vendor_id = BG.getField @"vendor_id" x0
, product_id = BG.getField @"product_id" x0
, serial_number = BG.getField @"serial_number" x0
, release_number = BG.getField @"release_number" x0
, product_string = BG.getField @"product_string" x0
, usage_page = BG.getField @"usage_page" x0
, usage = BG.getField @"usage" x0
, interface_number = BG.getField @"interface_number" x0
, interface_class = BG.getField @"interface_class" x0
, interface_subclass = BG.getField @"interface_subclass" x0
, interface_protocol = BG.getField @"interface_protocol" x0
, bus_type = BG.getField @"bus_type" x0
, next = BG.getField @"next" x0
}
, BG.getField @"manufacturer_string" x0
)
instance
(ty ~ BG.Ptr HsBindgen.Runtime.LibC.CWchar)
=> BG.HasField "manufacturer_string" (BG.Ptr SDL_hid_device_info) (BG.Ptr ty)
where
getField =
HasCField.fromPtr (BG.Proxy @"manufacturer_string")
instance HasCField.HasCField SDL_hid_device_info "manufacturer_string" where
type
CFieldType SDL_hid_device_info "manufacturer_string" =
BG.Ptr HsBindgen.Runtime.LibC.CWchar
offset# = \_ -> \_ -> 32
instance
(ty ~ BG.Ptr HsBindgen.Runtime.LibC.CWchar)
=> BG.CompatHasField.HasField "product_string" SDL_hid_device_info ty
where
hasField =
\x0 ->
( \y1 ->
SDL_hid_device_info
{ product_string = y1
, path = BG.getField @"path" x0
, vendor_id = BG.getField @"vendor_id" x0
, product_id = BG.getField @"product_id" x0
, serial_number = BG.getField @"serial_number" x0
, release_number = BG.getField @"release_number" x0
, manufacturer_string = BG.getField @"manufacturer_string" x0
, usage_page = BG.getField @"usage_page" x0
, usage = BG.getField @"usage" x0
, interface_number = BG.getField @"interface_number" x0
, interface_class = BG.getField @"interface_class" x0
, interface_subclass = BG.getField @"interface_subclass" x0
, interface_protocol = BG.getField @"interface_protocol" x0
, bus_type = BG.getField @"bus_type" x0
, next = BG.getField @"next" x0
}
, BG.getField @"product_string" x0
)
instance
(ty ~ BG.Ptr HsBindgen.Runtime.LibC.CWchar)
=> BG.HasField "product_string" (BG.Ptr SDL_hid_device_info) (BG.Ptr ty)
where
getField =
HasCField.fromPtr (BG.Proxy @"product_string")
instance HasCField.HasCField SDL_hid_device_info "product_string" where
type
CFieldType SDL_hid_device_info "product_string" =
BG.Ptr HsBindgen.Runtime.LibC.CWchar
offset# = \_ -> \_ -> 40
instance
(ty ~ BG.CUShort)
=> BG.CompatHasField.HasField "usage_page" SDL_hid_device_info ty
where
hasField =
\x0 ->
( \y1 ->
SDL_hid_device_info
{ usage_page = y1
, path = BG.getField @"path" x0
, vendor_id = BG.getField @"vendor_id" x0
, product_id = BG.getField @"product_id" x0
, serial_number = BG.getField @"serial_number" x0
, release_number = BG.getField @"release_number" x0
, manufacturer_string = BG.getField @"manufacturer_string" x0
, product_string = BG.getField @"product_string" x0
, usage = BG.getField @"usage" x0
, interface_number = BG.getField @"interface_number" x0
, interface_class = BG.getField @"interface_class" x0
, interface_subclass = BG.getField @"interface_subclass" x0
, interface_protocol = BG.getField @"interface_protocol" x0
, bus_type = BG.getField @"bus_type" x0
, next = BG.getField @"next" x0
}
, BG.getField @"usage_page" x0
)
instance
(ty ~ BG.CUShort)
=> BG.HasField "usage_page" (BG.Ptr SDL_hid_device_info) (BG.Ptr ty)
where
getField = HasCField.fromPtr (BG.Proxy @"usage_page")
instance HasCField.HasCField SDL_hid_device_info "usage_page" where
type
CFieldType SDL_hid_device_info "usage_page" =
BG.CUShort
offset# = \_ -> \_ -> 48
instance
(ty ~ BG.CUShort)
=> BG.CompatHasField.HasField "usage" SDL_hid_device_info ty
where
hasField =
\x0 ->
( \y1 ->
SDL_hid_device_info
{ usage = y1
, path = BG.getField @"path" x0
, vendor_id = BG.getField @"vendor_id" x0
, product_id = BG.getField @"product_id" x0
, serial_number = BG.getField @"serial_number" x0
, release_number = BG.getField @"release_number" x0
, manufacturer_string = BG.getField @"manufacturer_string" x0
, product_string = BG.getField @"product_string" x0
, usage_page = BG.getField @"usage_page" x0
, interface_number = BG.getField @"interface_number" x0
, interface_class = BG.getField @"interface_class" x0
, interface_subclass = BG.getField @"interface_subclass" x0
, interface_protocol = BG.getField @"interface_protocol" x0
, bus_type = BG.getField @"bus_type" x0
, next = BG.getField @"next" x0
}
, BG.getField @"usage" x0
)
instance
(ty ~ BG.CUShort)
=> BG.HasField "usage" (BG.Ptr SDL_hid_device_info) (BG.Ptr ty)
where
getField = HasCField.fromPtr (BG.Proxy @"usage")
instance HasCField.HasCField SDL_hid_device_info "usage" where
type
CFieldType SDL_hid_device_info "usage" =
BG.CUShort
offset# = \_ -> \_ -> 50
instance
(ty ~ BG.CInt)
=> BG.CompatHasField.HasField "interface_number" SDL_hid_device_info ty
where
hasField =
\x0 ->
( \y1 ->
SDL_hid_device_info
{ interface_number = y1
, path = BG.getField @"path" x0
, vendor_id = BG.getField @"vendor_id" x0
, product_id = BG.getField @"product_id" x0
, serial_number = BG.getField @"serial_number" x0
, release_number = BG.getField @"release_number" x0
, manufacturer_string = BG.getField @"manufacturer_string" x0
, product_string = BG.getField @"product_string" x0
, usage_page = BG.getField @"usage_page" x0
, usage = BG.getField @"usage" x0
, interface_class = BG.getField @"interface_class" x0
, interface_subclass = BG.getField @"interface_subclass" x0
, interface_protocol = BG.getField @"interface_protocol" x0
, bus_type = BG.getField @"bus_type" x0
, next = BG.getField @"next" x0
}
, BG.getField @"interface_number" x0
)
instance
(ty ~ BG.CInt)
=> BG.HasField "interface_number" (BG.Ptr SDL_hid_device_info) (BG.Ptr ty)
where
getField =
HasCField.fromPtr (BG.Proxy @"interface_number")
instance HasCField.HasCField SDL_hid_device_info "interface_number" where
type
CFieldType SDL_hid_device_info "interface_number" =
BG.CInt
offset# = \_ -> \_ -> 52
instance
(ty ~ BG.CInt)
=> BG.CompatHasField.HasField "interface_class" SDL_hid_device_info ty
where
hasField =
\x0 ->
( \y1 ->
SDL_hid_device_info
{ interface_class = y1
, path = BG.getField @"path" x0
, vendor_id = BG.getField @"vendor_id" x0
, product_id = BG.getField @"product_id" x0
, serial_number = BG.getField @"serial_number" x0
, release_number = BG.getField @"release_number" x0
, manufacturer_string = BG.getField @"manufacturer_string" x0
, product_string = BG.getField @"product_string" x0
, usage_page = BG.getField @"usage_page" x0
, usage = BG.getField @"usage" x0
, interface_number = BG.getField @"interface_number" x0
, interface_subclass = BG.getField @"interface_subclass" x0
, interface_protocol = BG.getField @"interface_protocol" x0
, bus_type = BG.getField @"bus_type" x0
, next = BG.getField @"next" x0
}
, BG.getField @"interface_class" x0
)
instance
(ty ~ BG.CInt)
=> BG.HasField "interface_class" (BG.Ptr SDL_hid_device_info) (BG.Ptr ty)
where
getField =
HasCField.fromPtr (BG.Proxy @"interface_class")
instance HasCField.HasCField SDL_hid_device_info "interface_class" where
type
CFieldType SDL_hid_device_info "interface_class" =
BG.CInt
offset# = \_ -> \_ -> 56
instance
(ty ~ BG.CInt)
=> BG.CompatHasField.HasField "interface_subclass" SDL_hid_device_info ty
where
hasField =
\x0 ->
( \y1 ->
SDL_hid_device_info
{ interface_subclass = y1
, path = BG.getField @"path" x0
, vendor_id = BG.getField @"vendor_id" x0
, product_id = BG.getField @"product_id" x0
, serial_number = BG.getField @"serial_number" x0
, release_number = BG.getField @"release_number" x0
, manufacturer_string = BG.getField @"manufacturer_string" x0
, product_string = BG.getField @"product_string" x0
, usage_page = BG.getField @"usage_page" x0
, usage = BG.getField @"usage" x0
, interface_number = BG.getField @"interface_number" x0
, interface_class = BG.getField @"interface_class" x0
, interface_protocol = BG.getField @"interface_protocol" x0
, bus_type = BG.getField @"bus_type" x0
, next = BG.getField @"next" x0
}
, BG.getField @"interface_subclass" x0
)
instance
(ty ~ BG.CInt)
=> BG.HasField "interface_subclass" (BG.Ptr SDL_hid_device_info) (BG.Ptr ty)
where
getField =
HasCField.fromPtr (BG.Proxy @"interface_subclass")
instance HasCField.HasCField SDL_hid_device_info "interface_subclass" where
type
CFieldType SDL_hid_device_info "interface_subclass" =
BG.CInt
offset# = \_ -> \_ -> 60
instance
(ty ~ BG.CInt)
=> BG.CompatHasField.HasField "interface_protocol" SDL_hid_device_info ty
where
hasField =
\x0 ->
( \y1 ->
SDL_hid_device_info
{ interface_protocol = y1
, path = BG.getField @"path" x0
, vendor_id = BG.getField @"vendor_id" x0
, product_id = BG.getField @"product_id" x0
, serial_number = BG.getField @"serial_number" x0
, release_number = BG.getField @"release_number" x0
, manufacturer_string = BG.getField @"manufacturer_string" x0
, product_string = BG.getField @"product_string" x0
, usage_page = BG.getField @"usage_page" x0
, usage = BG.getField @"usage" x0
, interface_number = BG.getField @"interface_number" x0
, interface_class = BG.getField @"interface_class" x0
, interface_subclass = BG.getField @"interface_subclass" x0
, bus_type = BG.getField @"bus_type" x0
, next = BG.getField @"next" x0
}
, BG.getField @"interface_protocol" x0
)
instance
(ty ~ BG.CInt)
=> BG.HasField "interface_protocol" (BG.Ptr SDL_hid_device_info) (BG.Ptr ty)
where
getField =
HasCField.fromPtr (BG.Proxy @"interface_protocol")
instance HasCField.HasCField SDL_hid_device_info "interface_protocol" where
type
CFieldType SDL_hid_device_info "interface_protocol" =
BG.CInt
offset# = \_ -> \_ -> 64
instance
(ty ~ SDL_hid_bus_type)
=> BG.CompatHasField.HasField "bus_type" SDL_hid_device_info ty
where
hasField =
\x0 ->
( \y1 ->
SDL_hid_device_info
{ bus_type = y1
, path = BG.getField @"path" x0
, vendor_id = BG.getField @"vendor_id" x0
, product_id = BG.getField @"product_id" x0
, serial_number = BG.getField @"serial_number" x0
, release_number = BG.getField @"release_number" x0
, manufacturer_string = BG.getField @"manufacturer_string" x0
, product_string = BG.getField @"product_string" x0
, usage_page = BG.getField @"usage_page" x0
, usage = BG.getField @"usage" x0
, interface_number = BG.getField @"interface_number" x0
, interface_class = BG.getField @"interface_class" x0
, interface_subclass = BG.getField @"interface_subclass" x0
, interface_protocol = BG.getField @"interface_protocol" x0
, next = BG.getField @"next" x0
}
, BG.getField @"bus_type" x0
)
instance
(ty ~ SDL_hid_bus_type)
=> BG.HasField "bus_type" (BG.Ptr SDL_hid_device_info) (BG.Ptr ty)
where
getField = HasCField.fromPtr (BG.Proxy @"bus_type")
instance HasCField.HasCField SDL_hid_device_info "bus_type" where
type
CFieldType SDL_hid_device_info "bus_type" =
SDL_hid_bus_type
offset# = \_ -> \_ -> 68
instance
(ty ~ BG.Ptr SDL_hid_device_info)
=> BG.CompatHasField.HasField "next" SDL_hid_device_info ty
where
hasField =
\x0 ->
( \y1 ->
SDL_hid_device_info
{ next = y1
, path = BG.getField @"path" x0
, vendor_id = BG.getField @"vendor_id" x0
, product_id = BG.getField @"product_id" x0
, serial_number = BG.getField @"serial_number" x0
, release_number = BG.getField @"release_number" x0
, manufacturer_string = BG.getField @"manufacturer_string" x0
, product_string = BG.getField @"product_string" x0
, usage_page = BG.getField @"usage_page" x0
, usage = BG.getField @"usage" x0
, interface_number = BG.getField @"interface_number" x0
, interface_class = BG.getField @"interface_class" x0
, interface_subclass = BG.getField @"interface_subclass" x0
, interface_protocol = BG.getField @"interface_protocol" x0
, bus_type = BG.getField @"bus_type" x0
}
, BG.getField @"next" x0
)
instance
(ty ~ BG.Ptr SDL_hid_device_info)
=> BG.HasField "next" (BG.Ptr SDL_hid_device_info) (BG.Ptr ty)
where
getField = HasCField.fromPtr (BG.Proxy @"next")
instance HasCField.HasCField SDL_hid_device_info "next" where
type
CFieldType SDL_hid_device_info "next" =
BG.Ptr SDL_hid_device_info
offset# = \_ -> \_ -> 72
-- | [C declaration]: @macro SDL_PROP_HIDAPI_LIBUSB_DEVICE_HANDLE_POINTER@, literal @\"SDL.hidapi.libusb.device.handle\"@, defined at @SDL3\/SDL_hidapi.h 303:9@
sDL_PROP_HIDAPI_LIBUSB_DEVICE_HANDLE_POINTER :: BG.ByteString
sDL_PROP_HIDAPI_LIBUSB_DEVICE_HANDLE_POINTER =
BG.pack
[ 0x53
, 0x44
, 0x4C
, 0x2E
, 0x68
, 0x69
, 0x64
, 0x61
, 0x70
, 0x69
, 0x2E
, 0x6C
, 0x69
, 0x62
, 0x75
, 0x73
, 0x62
, 0x2E
, 0x64
, 0x65
, 0x76
, 0x69
, 0x63
, 0x65
, 0x2E
, 0x68
, 0x61
, 0x6E
, 0x64
, 0x6C
, 0x65
]