shithub: MicroHs

ref: be01052e02dd12c38b19e05a5346c3dbb09e98dd
dir: /lib/System/IO_Handle.hs/

View raw version
module System.IO_Handle(BFILE, Handle(..), HandleState(..)) where
import Prelude()
import Primitives
import Data.Bool
import Data.Eq
import Data.IORef

-- A handle is a ForeignPtr to a C BFILE transducer.
-- It needs to be a ForeignPtr so it can have a finalizer
-- that closes the underlying BFILE when the Handle is gc():ed.

data BFILE  -- tag used for C pointers to BFILE structs

data Handle = Handle (ForeignPtr BFILE) (IORef HandleState) [Char]

data HandleState = HRead | HWrite | HReadWrite | HSemiClosed | HClosed
  deriving (Eq)