Foreign.C.Types
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 |
Description
Mapping of C types to corresponding Haskell types.
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 ofCT
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 forCT
has a valid representation in C. -
sizeOf (undefined :: CT)
will yield the same value assizeof (t)
in C. -
alignment (undefined :: CT)
matches the alignment constraint enforced by the C implementation fort
. - The members
peek
andpoke
of theStorable
class map all values ofCT
to the corresponding value oft
and vice versa. - When an instance of
Bounded
is defined forCT
, the values ofminBound
andmaxBound
coincide witht_MIN
andt_MAX
in C. - When an instance of
Eq
orOrd
is 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
, orRealFloat
is 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
Bits
is 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 newtype
s 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.
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
newtype CSigAtomic Source
Haskell type representing the C sig_atomic_t
type.
Constructors
CSigAtomic Int32 |
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 represented as newtype
s 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.
Instances
Haskell type representing the C time_t
type.
Haskell type representing the C useconds_t
type.
Since: 4.4.0.0
Instances
newtype CSUSeconds Source
Haskell type representing the C suseconds_t
type.
Since: 4.4.0.0
Constructors
CSUSeconds Int64 |
Instances
To convert CTime
to UTCTime
, use the following:
\t -> posixSecondsToUTCTime (realToFrac t :: POSIXTime)
Floating types
These types are are represented as newtype
s 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.
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.
© 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