[project @ 2003-05-22 08:24:32 by chak]
[haskell-directory.git] / Foreign / Marshal / Alloc.hs
index 900c917..65294ce 100644 (file)
@@ -24,28 +24,26 @@ module Foreign.Marshal.Alloc (
   realloc,      -- :: Storable b => Ptr a        -> IO (Ptr b)
   reallocBytes, -- ::              Ptr a -> Int -> IO (Ptr a)
 
-  free          -- :: Ptr a -> IO ()
-#ifdef __HUGS__
-  , finalizerFree -- :: FunPtr (Ptr a -> IO ())
-#endif
+  free,         -- :: Ptr a -> IO ()
+  finalizerFree -- :: FinalizerPtr a
 ) where
 
 import Data.Maybe
 import Foreign.Ptr             ( Ptr, nullPtr, FunPtr )
-import Foreign.C.Types         ( CSize, CInt(..) )
+import Foreign.ForeignPtr      ( FinalizerPtr )
+import Foreign.C.Types         ( CSize )
 import Foreign.Storable        ( Storable(sizeOf) )
 
 #ifdef __GLASGOW_HASKELL__
-import GHC.Exception           ( bracket )
 import GHC.IOBase
 import GHC.Real
 import GHC.Ptr
 import GHC.Err
 import GHC.Base
-#elsif defined(__HUGS__)
-import Control.Exception       ( bracket )
+#elif defined(__NHC__)
+import IO                      ( bracket )
 #else
-import System.IO               ( bracket )
+import Control.Exception       ( bracket )
 #endif
 
 
@@ -150,9 +148,7 @@ failWhenNULL name f = do
 foreign import ccall unsafe "stdlib.h malloc"  _malloc  ::          CSize -> IO (Ptr a)
 foreign import ccall unsafe "stdlib.h realloc" _realloc :: Ptr a -> CSize -> IO (Ptr b)
 foreign import ccall unsafe "stdlib.h free"    _free    :: Ptr a -> IO ()
-#ifdef __HUGS__
--- |A pointer to a foreign function equivalent to @free@, which may be used
--- as a finalizer for storage allocated with @malloc@ or @mallocBytes@.
-foreign import ccall unsafe "stdlib.h &free"
-                       finalizerFree :: FunPtr (Ptr a -> IO ())
-#endif
+
+-- | A pointer to a foreign function equivalent to 'free', which may be used
+-- as a finalizer for storage allocated with 'malloc' or 'mallocBytes'.
+foreign import ccall unsafe "stdlib.h &free" finalizerFree :: FinalizerPtr a