|
Foreign.C.Types | Portability | portable | Stability | provisional | Maintainer | ffi@haskell.org |
|
|
|
|
|
Description |
Mapping of C types to corresponding Haskell types.
|
|
Synopsis |
|
|
|
|
Representations of C types
|
|
These types are needed to accurately represent C function prototypes,
in order to access C library interfaces in Haskell. The Haskell system
is not required to represent those types exactly as C does, but the
following guarantees are provided concerning a Haskell type CT
representing a C type t:
- If a C function prototype has t as an argument or result type, the
use of CT in the corresponding position in a foreign declaration
permits the Haskell program to access the full range of values encoded
by the C type; and conversely, any Haskell value for CT has a valid
representation in C.
- sizeOf (Prelude.undefined :: CT) will yield the same value as
sizeof (t) in C.
- alignment (Prelude.undefined :: CT) matches the alignment
constraint enforced by the C implementation for t.
- The members peek and poke of the Storable class map all values
of CT to the corresponding value of t and vice versa.
- When an instance of Prelude.Bounded is defined for CT, the values
of Prelude.minBound and Prelude.maxBound coincide with t_MIN
and t_MAX in C.
- When an instance of Prelude.Eq or Prelude.Ord is defined for CT,
the predicates defined by the type class implement the same relation
as the corresponding predicate in C on t.
- When an instance of Prelude.Num, Prelude.Read, Prelude.Integral,
Prelude.Fractional, Prelude.Floating, Prelude.RealFrac, or
Prelude.RealFloat is defined for CT, the arithmetic operations
defined by the type class implement the same function as the
corresponding arithmetic operations (if available) in C on t.
- When an instance of Bits is defined for CT, the bitwise operation
defined by the type class implement the same function as the
corresponding bitwise operation in C on t.
|
|
Integral types
|
|
These types are are represented as newtypes of
types in Data.Int and Data.Word, and are instances of
Prelude.Eq, Prelude.Ord, Prelude.Num, Prelude.Read,
Prelude.Show, Prelude.Enum, Typeable, Storable,
Prelude.Bounded, Prelude.Real, Prelude.Integral and
Bits.
|
|
|
Haskell type representing the C char type.
| Instances | |
|
|
|
Haskell type representing the C signed char type.
| Instances | |
|
|
|
Haskell type representing the C unsigned char type.
| Instances | |
|
|
|
Haskell type representing the C short type.
| Instances | |
|
|
|
Haskell type representing the C unsigned short type.
| Instances | |
|
|
|
Haskell type representing the C int type.
| Instances | |
|
|
|
Haskell type representing the C unsigned int type.
| Instances | |
|
|
|
Haskell type representing the C long type.
| Instances | |
|
|
|
Haskell type representing the C unsigned long type.
| Instances | |
|
|
|
Haskell type representing the C ptrdiff_t type.
| Instances | |
|
|
|
Haskell type representing the C size_t type.
| Instances | |
|
|
|
Haskell type representing the C wchar_t type.
| Instances | |
|
|
|
Haskell type representing the C sig_atomic_t type.
| Instances | |
|
|
|
Haskell type representing the C long long type.
| Instances | |
|
|
|
Haskell type representing the C unsigned long long type.
| Instances | |
|
|
|
Instances | |
|
|
|
Instances | |
|
|
|
Instances | |
|
|
|
Instances | |
|
|
Numeric types
|
|
These types are are represented as newtypes of basic
foreign types, and are instances of
Prelude.Eq, Prelude.Ord, Prelude.Num, Prelude.Read,
Prelude.Show, Prelude.Enum, Typeable and Storable.
|
|
|
Haskell type representing the C clock_t type.
| Instances | |
|
|
|
Haskell type representing the C time_t type.
To convert to a Data.Time.UTCTime, use the following formula:
posixSecondsToUTCTime (realToFrac :: POSIXTime)
| Instances | |
|
|
Floating types
|
|
These types are are represented as newtypes of
Prelude.Float and Prelude.Double, and are instances of
Prelude.Eq, Prelude.Ord, Prelude.Num, Prelude.Read,
Prelude.Show, Prelude.Enum, Typeable, Storable,
Prelude.Real, Prelude.Fractional, Prelude.Floating,
Prelude.RealFrac and Prelude.RealFloat.
|
|
|
Haskell type representing the C float type.
| Instances | |
|
|
|
Haskell type representing the C double type.
| Instances | |
|
|
Other types
|
|
|
Haskell type representing the C FILE type.
|
|
|
|
Haskell type representing the C fpos_t type.
|
|
|
|
Haskell type representing the C jmp_buf type.
|
|
|
Produced by Haddock version 2.6.0 |