[project @ 2003-05-29 17:37:17 by malcolm]
[ghc-base.git] / Foreign / Marshal / Alloc.hs
index 6e82380..3cf7174 100644 (file)
@@ -25,26 +25,32 @@ module Foreign.Marshal.Alloc (
   reallocBytes, -- ::              Ptr a -> Int -> IO (Ptr a)
 
   free,         -- :: Ptr a -> IO ()
-  finalizerFree -- :: FunPtr (Ptr a -> IO ())
+  finalizerFree -- :: FinalizerPtr a
 ) where
 
 import Data.Maybe
 import Foreign.Ptr             ( Ptr, nullPtr, FunPtr )
-import Foreign.C.Types         ( CSize, CInt(..) )
+import Foreign.C.Types         ( CSize )
 import Foreign.Storable        ( Storable(sizeOf) )
 
 #ifdef __GLASGOW_HASKELL__
+import Foreign.ForeignPtr      ( FinalizerPtr )
 import GHC.IOBase
 import GHC.Real
 import GHC.Ptr
 import GHC.Err
 import GHC.Base
 #elif defined(__NHC__)
+import NHC.FFI                 ( FinalizerPtr, CInt(..) )
 import IO                      ( bracket )
 #else
 import Control.Exception       ( bracket )
 #endif
 
+#ifdef __HUGS__
+import Hugs.ForeignPtr         ( FinalizerPtr )
+#endif
+
 
 -- exported functions
 -- ------------------
@@ -150,5 +156,4 @@ foreign import ccall unsafe "stdlib.h free"    _free    :: Ptr a -> IO ()
 
 -- | 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 ())
+foreign import ccall unsafe "stdlib.h &free" finalizerFree :: FinalizerPtr a