module Graphics.Rendering.FreeType.Internal.Memory
( FT_MemoryRec(..)
, FT_Memory
) where
import Foreign hiding (free, realloc)
import Foreign.C.Types
type FT_Alloc_Func = FunPtr (FT_Memory -> CLong -> IO (Ptr ()))
type FT_Free_Func = FunPtr (FT_Memory -> Ptr () -> IO ())
type FT_Realloc_Func = FunPtr
(FT_Memory -> CLong -> CLong -> Ptr () -> IO (Ptr ()))
type FT_Memory = Ptr FT_MemoryRec
data FT_MemoryRec = FT_MemoryRec
{ user :: Ptr ()
, alloc :: FT_Alloc_Func
, free :: FT_Free_Func
, realloc :: FT_Realloc_Func
}
instance Storable FT_MemoryRec where
sizeOf _ = (32)
alignment _ = 8
peek ptr = do
user' <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
alloc' <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
free' <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
realloc' <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
return $ FT_MemoryRec
{ user = user'
, alloc = alloc'
, free = free'
, realloc = realloc'
}
poke ptr val = do
((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr (user val)
((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr (alloc val)
((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr (free val)
((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr (realloc val)