-- GENERATED by C->Haskell Compiler, version 0.25.2 Snowboundest, 31 Oct 2014 (Haskell)
-- Edit the ORIGNAL .chs file instead!


{-# LINE 1 "src/System/HID/Internal/Types.chs" #-}
-----------------------------------------------------------------------------
-- |
-- Copyright   : (C) 2015 Dimitri Sabadie
-- License     : BSD3
--
-- Maintainer  : Dimitri Sabadie <dimitri.sabadie@gmail.com>
-- Stability   : experimental
-- Portability : portable
----------------------------------------------------------------------------

module System.HID.Internal.Types where

import Foreign.C.String
import Foreign.C.Types
import Foreign.Ptr
import Foreign.Storable



type HIDDevice = ((Ptr ()))
{-# LINE 20 "src/System/HID/Internal/Types.chs" #-}


data HIDDeviceInfo = HIDDeviceInfo {
    hidPath               :: CString
  , hidVendorID           :: CUShort
  , hidProductID          :: CUShort
  , hidSerialNumber       :: CWString
  , hidReleaseNumber      :: CUShort
  , hidManufacturerString :: CWString
  , hidProductString      :: CWString
  , hidUsagePage          :: CUShort
  , hidUsage              :: CUShort
  , hidInterfaceNumber    :: CInt
  , hidNext               :: Ptr HIDDeviceInfo
  } deriving (Eq,Show)

instance Storable HIDDeviceInfo where
  sizeOf _ = 64
{-# LINE 37 "src/System/HID/Internal/Types.chs" #-}

  alignment _ = 8
{-# LINE 38 "src/System/HID/Internal/Types.chs" #-}

  peek p =
    HIDDeviceInfo
      <$> peekByteOff p (0)
{-# LINE 41 "src/System/HID/Internal/Types.chs" #-}

      <*> peekByteOff p (8)
{-# LINE 42 "src/System/HID/Internal/Types.chs" #-}

      <*> peekByteOff p (10)
{-# LINE 43 "src/System/HID/Internal/Types.chs" #-}

      <*> peekByteOff p (16)
{-# LINE 44 "src/System/HID/Internal/Types.chs" #-}

      <*> peekByteOff p (24)
{-# LINE 45 "src/System/HID/Internal/Types.chs" #-}

      <*> peekByteOff p (32)
{-# LINE 46 "src/System/HID/Internal/Types.chs" #-}

      <*> peekByteOff p (40)
{-# LINE 47 "src/System/HID/Internal/Types.chs" #-}

      <*> peekByteOff p (48)
{-# LINE 48 "src/System/HID/Internal/Types.chs" #-}

      <*> peekByteOff p (50)
{-# LINE 49 "src/System/HID/Internal/Types.chs" #-}

      <*> peekByteOff p (52)
{-# LINE 50 "src/System/HID/Internal/Types.chs" #-}

      <*> peekByteOff p (56)
{-# LINE 51 "src/System/HID/Internal/Types.chs" #-}

  poke p di = do
    pokeByteOff p (0) $ hidPath di
    pokeByteOff p (8) $ hidVendorID di
    pokeByteOff p (10) $ hidProductID di
    pokeByteOff p (16) $ hidSerialNumber di
    pokeByteOff p (24) $ hidReleaseNumber di
    pokeByteOff p (32) $ hidManufacturerString di
    pokeByteOff p (40) $ hidProductString di
    pokeByteOff p (48) $ hidUsagePage di
    pokeByteOff p (50) $ hidUsage di
    pokeByteOff p (52) $ hidInterfaceNumber di
    pokeByteOff p (56) $ hidNext di