base-4.2.0.1: Basic librariesSource codeContentsIndex
Foreign.C.Types
Portabilityportable
Stabilityprovisional
Maintainerffi@haskell.org
Contents
Representations of C types
Integral types
Numeric types
Floating types
Other types
Description
Mapping of C types to corresponding Haskell types.
Synopsis
data CChar
data CSChar
data CUChar
data CShort
data CUShort
data CInt
data CUInt
data CLong
data CULong
data CPtrdiff
data CSize
data CWchar
data CSigAtomic
data CLLong
data CULLong
data CIntPtr
data CUIntPtr
data CIntMax
data CUIntMax
data CClock
data CTime
data CFloat
data CDouble
data CFile
data CFpos
data CJmpBuf
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.
data CChar Source
Haskell type representing the C char type.
show/hide Instances
data CSChar Source
Haskell type representing the C signed char type.
show/hide Instances
data CUChar Source
Haskell type representing the C unsigned char type.
show/hide Instances
data CShort Source
Haskell type representing the C short type.
show/hide Instances
data CUShort Source
Haskell type representing the C unsigned short type.
show/hide Instances
data CInt Source
Haskell type representing the C int type.
show/hide Instances
data CUInt Source
Haskell type representing the C unsigned int type.
show/hide Instances
data CLong Source
Haskell type representing the C long type.
show/hide Instances
data CULong Source
Haskell type representing the C unsigned long type.
show/hide Instances
data CPtrdiff Source
Haskell type representing the C ptrdiff_t type.
show/hide Instances
data CSize Source
Haskell type representing the C size_t type.
show/hide Instances
data CWchar Source
Haskell type representing the C wchar_t type.
show/hide Instances
data CSigAtomic Source
Haskell type representing the C sig_atomic_t type.
show/hide Instances
data CLLong Source
Haskell type representing the C long long type.
show/hide Instances
data CULLong Source
Haskell type representing the C unsigned long long type.
show/hide Instances
data CIntPtr Source
show/hide Instances
data CUIntPtr Source
show/hide Instances
data CIntMax Source
show/hide Instances
data CUIntMax Source
show/hide 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.
data CClock Source
Haskell type representing the C clock_t type.
show/hide Instances
data CTime Source

Haskell type representing the C time_t type.

To convert to a Data.Time.UTCTime, use the following formula:

  posixSecondsToUTCTime (realToFrac :: POSIXTime)
show/hide 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.
data CFloat Source
Haskell type representing the C float type.
show/hide Instances
data CDouble Source
Haskell type representing the C double type.
show/hide Instances
Other types
data CFile Source
Haskell type representing the C FILE type.
data CFpos Source
Haskell type representing the C fpos_t type.
data CJmpBuf Source
Haskell type representing the C jmp_buf type.
Produced by Haddock version 2.6.1