| Copyright | (c) The FFI task force 2001 |
|---|---|
| License | BSD-style (see the file libraries/base/LICENSE) |
| Maintainer | [email protected] |
| Stability | provisional |
| Portability | portable |
| Safe Haskell | Trustworthy |
| Language | Haskell2010 |
Mapping of C types to corresponding Haskell 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:
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 (undefined :: CT) will yield the same value as sizeof (t) in C.alignment (undefined :: CT) matches the alignment constraint enforced by the C implementation for t.peek and poke of the Storable class map all values of CT to the corresponding value of t and vice versa.Bounded is defined for CT, the values of minBound and maxBound coincide with t_MIN and t_MAX in C.Eq or Ord is defined for CT, the predicates defined by the type class implement the same relation as the corresponding predicate in C on t.Num, Read, Integral, Fractional, Floating, RealFrac, or 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.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.These types are are represented as newtypes of types in Data.Int and Data.Word, and are instances of Eq, Ord, Num, Read, Show, Enum, Typeable, Storable, Bounded, Real, Integral and Bits.
Haskell type representing the C char type.
Haskell type representing the C signed char type.
Haskell type representing the C unsigned char type.
Haskell type representing the C short type.
Haskell type representing the C unsigned short type.
Haskell type representing the C int type.
Haskell type representing the C unsigned int type.
Haskell type representing the C long type.
Haskell type representing the C unsigned long type.
Haskell type representing the C ptrdiff_t type.
Haskell type representing the C size_t type.
Haskell type representing the C wchar_t type.
newtype CSigAtomic Source
Haskell type representing the C sig_atomic_t type.
| CSigAtomic Int32 |
Haskell type representing the C long long type.
Haskell type representing the C unsigned long long type.
These types are represented as newtypes of basic foreign types, and are instances of Eq, Ord, Num, Read, Show, Enum, Typeable and Storable.
Haskell type representing the C clock_t type.
Haskell type representing the C time_t type.
Haskell type representing the C useconds_t type.
Since: 4.4.0.0
newtype CSUSeconds Source
Haskell type representing the C suseconds_t type.
Since: 4.4.0.0
| CSUSeconds Int64 |
To convert CTime to UTCTime, use the following:
\t -> posixSecondsToUTCTime (realToFrac t :: POSIXTime)
These types are are represented as newtypes of Float and Double, and are instances of Eq, Ord, Num, Read, Show, Enum, Typeable, Storable, Real, Fractional, Floating, RealFrac and RealFloat.
Haskell type representing the C float type.
Haskell type representing the C double type.
Haskell type representing the C FILE type.
Haskell type representing the C fpos_t type.
Haskell type representing the C jmp_buf type.
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/7.10.3/docs/html/libraries/base-4.8.2.0/Foreign-C-Types.html