[project @ 1997-03-14 07:52:06 by simonpj]
[ghc-hetmet.git] / ghc / compiler / utils / HandleHack.lhi
1
2 The implementation of FastString output need to get at the representation
3 to Handles to do a Good Job. Prelude modules in 0.29 does not export
4 the Handle repr., this little hack fixes this :-)
5
6 Also added mkUniqueGrimily to avoid bootstrap trouble
7
8 \begin{code}
9 interface HandleHack where
10
11 import PreludeStdIO (Handle(..), _Handle(..), _filePtr,_readHandle, _writeHandle, BufferMode, Maybe)
12 import PreludeIOError (_constructError,IOError13(..))
13 import PreludeGlaST (_MutableArray, _RealWorld)
14 import Unique  ( Unique, mkUniqueGrimily )
15
16 type Handle = _MutableArray _RealWorld Int _Handle
17 data _Handle = _ErrorHandle IOError13 | _ClosedHandle | _SemiClosedHandle _Addr (_Addr, Int) | _ReadHandle _Addr (Maybe BufferMode) Bool | _WriteHandle _Addr (Maybe BufferMode) Bool | _AppendHandle _Addr (Maybe BufferMode) Bool | _ReadWriteHandle _Addr (Maybe BufferMode) Bool
18 data Unique
19
20 mkUniqueGrimily :: Int# -> Unique
21
22 _filePtr        :: _Handle -> _Addr
23 _readHandle     :: Handle -> IO _Handle
24 _writeHandle    :: Handle -> _Handle -> IO ()
25 _constructError :: String -> PrimIO IOError13
26 \end{code}