{-# LANGUAGE CPP #-} -- |Random and Binary IO with generic Iteratees. module Data.Iteratee.IO( -- * File enumerators -- ** Handle-based enumerators enumHandle, enumHandleRandom, #if defined(USE_POSIX) -- ** FileDescriptor based enumerators enumFd, enumFdRandom, #endif -- * Iteratee drivers fileDriver, fileDriverRandom, ) where import Data.Iteratee.Base.StreamChunk (ReadableChunk (..)) import Data.Iteratee.Base import Data.Iteratee.Binary() import Data.Iteratee.IO.Handle #if defined(USE_POSIX) import Data.Iteratee.IO.Fd #endif -- If Posix is available, use the fileDriverRandomFd as fileDriverRandom. Otherwise, use a handle-based variant. #if defined(USE_POSIX) -- |Process a file using the given IterateeG. This function wraps -- enumFd as a convenience. fileDriver :: ReadableChunk s el => IterateeG s el IO a -> FilePath -> IO a fileDriver = fileDriverFd -- |Process a file using the given IterateeG. This function wraps -- enumFdRandom as a convenience. fileDriverRandom :: ReadableChunk s el => IterateeG s el IO a -> FilePath -> IO a fileDriverRandom = fileDriverRandomFd #else -- ----------------------------------------------- -- Handle-based operations for compatibility. -- |Process a file using the given IterateeG. This function wraps -- enumHandle as a convenience. fileDriver :: ReadableChunk s el => IterateeG s el IO a -> FilePath -> IO a fileDriver = fileDriverHandle -- |Process a file using the given IterateeG. This function wraps -- enumFdHandle as a convenience. fileDriverRandom :: ReadableChunk s el => IterateeG s el IO a -> FilePath -> IO a fileDriverRandom = fileDriverRandomHandle #endif