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


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


{-# LINE 14 "src/SFML/System/Vector3.hsc" #-}


sizeFloat = (4)
{-# LINE 17 "src/SFML/System/Vector3.hsc" #-}


data Vec3f = Vec3f {-# UNPACK #-} !Float {-# UNPACK #-} !Float {-# UNPACK #-} !Float deriving Show


instance Storable Vec3f where
    sizeOf _ = 3*sizeFloat
    alignment _ = alignment (undefined :: CFloat)

    peek ptr = Vec3f
            <$> fmap realToFrac ((\hsc_ptr -> peekByteOff hsc_ptr 0) ptr :: IO CFloat)
{-# LINE 28 "src/SFML/System/Vector3.hsc" #-}
            <*> fmap realToFrac ((\hsc_ptr -> peekByteOff hsc_ptr 4) ptr :: IO CFloat)
{-# LINE 29 "src/SFML/System/Vector3.hsc" #-}
            <*> fmap realToFrac ((\hsc_ptr -> peekByteOff hsc_ptr 8) ptr :: IO CFloat)
{-# LINE 30 "src/SFML/System/Vector3.hsc" #-}

    poke ptr (Vec3f x y z) = do
        (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr (realToFrac x :: CFloat)
{-# LINE 33 "src/SFML/System/Vector3.hsc" #-}
        (\hsc_ptr -> pokeByteOff hsc_ptr 4) ptr (realToFrac y :: CFloat)
{-# LINE 34 "src/SFML/System/Vector3.hsc" #-}
        (\hsc_ptr -> pokeByteOff hsc_ptr 8) ptr (realToFrac z :: CFloat)
{-# LINE 35 "src/SFML/System/Vector3.hsc" #-}