{-# LINE 1 "src/SFML/Window/JoystickIdentification.hsc" #-}
{-# LANGUAGE CPP, ForeignFunctionInterface #-}
{-# LINE 2 "src/SFML/Window/JoystickIdentification.hsc" #-}
module SFML.Window.JoystickIdentification
(
    JoystickIdentification(..)
)
where


import Control.Applicative ((<$>), (<*>))
import Foreign.C.String
import Foreign.C.Types
import Foreign.Storable
import Foreign.Ptr (Ptr, castPtr)


{-# LINE 16 "src/SFML/Window/JoystickIdentification.hsc" #-}



{-# LINE 19 "src/SFML/Window/JoystickIdentification.hsc" #-}


-- | Joystick's identification
data JoystickIdentification = JoystickIdentification
    { name      :: String
    , vendorId  :: Int
    , productId :: Int
    } deriving (Eq, Show)


instance Storable JoystickIdentification where
    sizeOf _ = (16)
{-# LINE 31 "src/SFML/Window/JoystickIdentification.hsc" #-}
    alignment _ = 8
{-# LINE 32 "src/SFML/Window/JoystickIdentification.hsc" #-}

    peek ptr = JoystickIdentification
            <$> ((\hsc_ptr -> peekByteOff hsc_ptr 0) ptr >>= peekCString)
{-# LINE 35 "src/SFML/Window/JoystickIdentification.hsc" #-}
            <*> fmap fromIntegral ((\hsc_ptr -> peekByteOff hsc_ptr 8) ptr :: IO CUInt)
{-# LINE 36 "src/SFML/Window/JoystickIdentification.hsc" #-}
            <*> fmap fromIntegral ((\hsc_ptr -> peekByteOff hsc_ptr 12) ptr :: IO CUInt)
{-# LINE 37 "src/SFML/Window/JoystickIdentification.hsc" #-}

    poke ptr ji = do
        withCString (name ji) $ (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr
{-# LINE 40 "src/SFML/Window/JoystickIdentification.hsc" #-}
        (\hsc_ptr -> pokeByteOff hsc_ptr 8)  ptr ((fromIntegral . vendorId)  ji :: CUInt)
{-# LINE 41 "src/SFML/Window/JoystickIdentification.hsc" #-}
        (\hsc_ptr -> pokeByteOff hsc_ptr 12) ptr ((fromIntegral . productId) ji :: CUInt)
{-# LINE 42 "src/SFML/Window/JoystickIdentification.hsc" #-}