{-# OPTIONS -fno-implicit-prelude #-}
-----------------------------------------------------------------------------
---
+-- |
-- Module : Foreign.Marshal.Utils
-- Copyright : (c) The FFI task force 2001
-- License : BSD-style (see the file libraries/core/LICENSE)
-- Stability : provisional
-- Portability : portable
--
--- $Id: Utils.hs,v 1.2 2001/07/03 11:37:50 simonmar Exp $
+-- $Id: Utils.hs,v 1.4 2002/04/24 16:31:44 simonmar Exp $
--
-- Utilities for primitive marshaling
--
#ifdef __GLASGOW_HASKELL__
import Foreign.Ptr ( Ptr, nullPtr )
-import GHC.Storable ( Storable(poke,destruct) )
-import Foreign.C.TypesISO ( CSize )
-import Foreign.Marshal.Alloc ( malloc, alloca )
+import GHC.Storable ( Storable(poke) )
+import Foreign.C.TypesISO ( CSize )
+import Foreign.Marshal.Alloc ( malloc, alloca )
import GHC.IOBase
-import GHC.Real ( fromIntegral )
+import GHC.Real ( fromIntegral )
import GHC.Num
import GHC.Base
#endif
alloca $ \ptr -> do
poke ptr val
res <- f ptr
- destruct ptr
return res
-- basic C routines needed for memory copying
--
-foreign import unsafe memcpy :: Ptr a -> Ptr a -> CSize -> IO ()
-foreign import unsafe memmove :: Ptr a -> Ptr a -> CSize -> IO ()
+foreign import ccall unsafe memcpy :: Ptr a -> Ptr a -> CSize -> IO ()
+foreign import ccall unsafe memmove :: Ptr a -> Ptr a -> CSize -> IO ()