Cabal-3.10.1.0: A framework for packaging Haskell software

Safe Haskell | Safe-Inferred
Language | Haskell2010

Distribution.Utils.IOData

Contents

- `IOData` & `IODataMode` type

Description

Since: Cabal-2.2.0

Synopsis

- data IOData
  - = IODataText String
  - | IODataBinary ByteString
- data IODataMode mode where
  - IODataModeText :: IODataMode String
  - IODataModeBinary :: IODataMode ByteString
- class NFData mode => KnownIODataMode mode where
  - hGetIODataContents :: Handle -> IO mode
  - toIOData :: mode -> IOData
  - iodataMode :: IODataMode mode
- withIOData :: IOData -> (forall mode. IODataMode mode -> mode -> r) -> r
- null :: IOData -> Bool
- hPutContents :: Handle -> IOData -> IO ()

# `IOData` & `IODataMode` type

data IOData Source #

Represents either textual or binary data passed via I/O functions which support binary/text mode

Since: Cabal-2.2

Constructors

IODataText String | How Text gets encoded is usually locale-dependent.
IODataBinary ByteString | Raw binary which gets read/written in binary mode.

#### Instances

Instances details

NFData IOData Source # |
Instance details Defined in Distribution.Utils.IOData Methods rnf :: IOData -> () Source #

data IODataMode mode where Source #

Since: Cabal-3.2

Constructors

IODataModeText :: IODataMode String |
IODataModeBinary :: IODataMode ByteString |

class NFData mode => KnownIODataMode mode where Source #

Since: Cabal-2.2

Methods

hGetIODataContents :: Handle -> IO mode Source #

`IOData` Wrapper for `hGetContents`

Note: This operation uses lazy I/O. Use `NFData` to force all data to be read and consequently the internal file handle to be closed.

toIOData :: mode -> IOData Source #

iodataMode :: IODataMode mode Source #

#### Instances

Instances details

KnownIODataMode ByteString Source # |
Instance details Defined in Distribution.Utils.IOData Methods hGetIODataContents :: Handle -> IO ByteString Source # toIOData :: ByteString -> IOData Source # iodataMode :: IODataMode ByteString Source #
a ~ Char => KnownIODataMode [a] Source # |
Instance details Defined in Distribution.Utils.IOData Methods hGetIODataContents :: Handle -> IO [a] Source # toIOData :: [a] -> IOData Source # iodataMode :: IODataMode [a] Source #

withIOData :: IOData -> (forall mode. IODataMode mode -> mode -> r) -> r Source #

null :: IOData -> Bool Source #

Test whether `IOData` is empty

hPutContents :: Handle -> IOData -> IO () Source #

`IOData` Wrapper for `hPutStr` and `hClose`

This is the dual operation ot `hGetIODataContents`, and consequently the handle is closed with `hClose`.

Note: this performs lazy-IO.

Since: Cabal-2.2