[project @ 2002-04-24 16:31:37 by simonmar]
[ghc-base.git] / Foreign / Marshal / Utils.hs
index 3ae9e06..5b21ca0 100644 (file)
@@ -1,15 +1,15 @@
 {-# OPTIONS -fno-implicit-prelude #-}
 -----------------------------------------------------------------------------
--- 
+-- |
 -- Module      :  Foreign.Marshal.Utils
 -- Copyright   :  (c) The FFI task force 2001
 -- License     :  BSD-style (see the file libraries/core/LICENSE)
 -- 
 -- Maintainer  :  ffi@haskell.org
--- Stability   :  experimental
--- Portability :  non-portable
+-- Stability   :  provisional
+-- Portability :  portable
 --
--- $Id: Utils.hs,v 1.1 2001/06/28 14:15:03 simonmar Exp $
+-- $Id: Utils.hs,v 1.4 2002/04/24 16:31:44 simonmar Exp $
 --
 -- Utilities for primitive marshaling
 --
@@ -52,11 +52,11 @@ import Data.Maybe
 
 #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
@@ -83,7 +83,6 @@ withObject val f  =
   alloca $ \ptr -> do
     poke ptr val
     res <- f ptr
-    destruct ptr
     return res
 
 
@@ -164,5 +163,5 @@ moveBytes dest src size  = memmove dest src (fromIntegral size)
 
 -- 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 ()