| Safe Haskell | Safe | 
|---|---|
| Language | Haskell2010 | 
Foreign.C.Types
- 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 tas an argument or result type, the use ofCTin 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 forCThas a valid representation in C.
- sizeOf(- undefined:: CT)- sizeof (t)in C.
- alignment(- undefined:: CT)- t.
- The members peekandpokeof theStorableclass map all values ofCTto the corresponding value oftand vice versa.
- When an instance of Boundedis defined forCT, the values ofminBoundandmaxBoundcoincide witht_MINandt_MAXin C.
- When an instance of EqorOrdis defined forCT, the predicates defined by the type class implement the same relation as the corresponding predicate in C ont.
- When an instance of Num,Read,Integral,Fractional,Floating,RealFrac, orRealFloatis defined forCT, the arithmetic operations defined by the type class implement the same function as the corresponding arithmetic operations (if available) in C ont.
- When an instance of Bitsis defined forCT, the bitwise operation defined by the type class implement the same function as the corresponding bitwise operation in C ont.
Integral types
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, Storable,
 Bounded, Real, Integral and
 Bits.
data CChar :: *
Haskell type representing the C char type.
data CSChar :: *
Haskell type representing the C signed char type.
data CUChar :: *
Haskell type representing the C unsigned char type.
data CShort :: *
Haskell type representing the C short type.
data CUShort :: *
Haskell type representing the C unsigned short type.
data CInt :: *
Haskell type representing the C int type.
data CUInt :: *
Haskell type representing the C unsigned int type.
data CLong :: *
Haskell type representing the C long type.
data CULong :: *
Haskell type representing the C unsigned long type.
data CPtrdiff :: *
Haskell type representing the C ptrdiff_t type.
data CSize :: *
Haskell type representing the C size_t type.
data CWchar :: *
Haskell type representing the C wchar_t type.
data CSigAtomic :: *
Haskell type representing the C sig_atomic_t type.
data CLLong :: *
Haskell type representing the C long long type.
data CULLong :: *
Haskell type representing the C unsigned long long type.
data CIntPtr :: *
data CUIntPtr :: *
data CIntMax :: *
data CUIntMax :: *
Numeric types
These types are are represented as newtypes of basic
 foreign types, and are instances of
 Eq, Ord, Num, Read,
 Show, Enum and Storable.
data CClock :: *
Haskell type representing the C clock_t type.
data CTime :: *
Haskell type representing the C time_t type.
Floating types
These types are are represented as newtypes of
 Float and Double, and are instances of
 Eq, Ord, Num, Read,
 Show, Enum, Storable,
 Real, Fractional, Floating,
 RealFrac and RealFloat.
data CFloat :: *
Haskell type representing the C float type.
data CDouble :: *
Haskell type representing the C double type.
Other types
data CFile :: *
Haskell type representing the C FILE type.
data CFpos :: *
Haskell type representing the C fpos_t type.
data CJmpBuf :: *
Haskell type representing the C jmp_buf type.