Merge branch 'master' into type-nats
[packages/base.git] / Foreign.hs
index 1670110..caad104 100644 (file)
@@ -1,44 +1,55 @@
-{-# OPTIONS -fno-implicit-prelude #-}
+{-# LANGUAGE Unsafe #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+
 -----------------------------------------------------------------------------
--- 
+-- |
 -- Module      :  Foreign
 -- Copyright   :  (c) The FFI task force 2001
--- License     :  BSD-style (see the file libraries/core/LICENSE)
+-- License     :  BSD-style (see the file libraries/base/LICENSE)
 -- 
 -- Maintainer  :  ffi@haskell.org
 -- Stability   :  provisional
 -- Portability :  portable
 --
--- $Id: Foreign.hs,v 1.2 2001/07/03 11:37:49 simonmar Exp $
---
 -- A collection of data types, classes, and functions for interfacing
--- with another programming language. This is only a convenience module
--- in the future, but currently it has the additional task of hiding
--- those entities exported from other modules, which are not part of the
--- FFI proposal.
+-- with another programming language.
 --
 -----------------------------------------------------------------------------
 
 module Foreign
-        ( module Data.Int
-       , module Data.Word
-       , module Foreign.Ptr
-       , module Foreign.ForeignPtr
-       , module Foreign.StablePtr
+        ( module Data.Bits
+        , module Data.Int
+        , module Data.Word
+        , module Foreign.Ptr
+        , module Foreign.ForeignPtr
+        , module Foreign.StablePtr
         , module Foreign.Storable
-       , module Foreign.Marshal.Alloc
-       , module Foreign.Marshal.Array
-       , module Foreign.Marshal.Error
-       , module Foreign.Marshal.Utils
+        , module Foreign.Marshal
+
+        -- * Unsafe Functions
+
+        -- | 'unsafePerformIO' is exported here for backwards
+        -- compatibility reasons only.  For doing local marshalling in
+        -- the FFI, use 'unsafeLocalState'.  For other uses, see
+        -- 'System.IO.Unsafe.unsafePerformIO'.
+        , unsafePerformIO
         ) where
 
+import Data.Bits
 import Data.Int
 import Data.Word
 import Foreign.Ptr
 import Foreign.ForeignPtr
 import Foreign.StablePtr
 import Foreign.Storable
-import Foreign.Marshal.Alloc
-import Foreign.Marshal.Array
-import Foreign.Marshal.Error
-import Foreign.Marshal.Utils
+import Foreign.Marshal
+
+import GHC.IO (IO)
+import qualified GHC.IO (unsafePerformIO)
+
+{-# DEPRECATED unsafePerformIO "Use System.IO.Unsafe.unsafePerformIO instead; This function will be removed in the next release" #-}
+
+{-# INLINE unsafePerformIO #-}
+unsafePerformIO :: IO a -> a
+unsafePerformIO = GHC.IO.unsafePerformIO
+