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


import Foreign.C.Types
import Foreign.Storable


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


sizeFloat = (4)
{-# LINE 16 "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 = do
        x <- fmap realToFrac ((\hsc_ptr -> peekByteOff hsc_ptr 0) ptr :: IO CFloat)
{-# LINE 27 "src/SFML/System/Vector3.hsc" #-}
        y <- fmap realToFrac ((\hsc_ptr -> peekByteOff hsc_ptr 4) ptr :: IO CFloat)
{-# LINE 28 "src/SFML/System/Vector3.hsc" #-}
        z <- fmap realToFrac ((\hsc_ptr -> peekByteOff hsc_ptr 8) ptr :: IO CFloat)
{-# LINE 29 "src/SFML/System/Vector3.hsc" #-}
        return $ Vec3f x y z
    
    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" #-}