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
.This module contains platform specific information about types. __/As such the types presented on this page reflect the platform on which the documentation was generated and may not coincide with the types on your platform./__
These types 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.
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.
Bounded CInt | |
Enum CInt | |
Eq CInt | |
Integral CInt | |
Num CInt | |
Ord CInt | |
Read CInt | |
Real CInt | |
MethodstoRational :: CInt -> Rational Source | |
Show CInt | |
FiniteBits CInt | |
MethodsfiniteBitSize :: CInt -> Int Source countLeadingZeros :: CInt -> Int Source countTrailingZeros :: CInt -> Int Source | |
Bits CInt | |
Methods(.&.) :: CInt -> CInt -> CInt Source (.|.) :: CInt -> CInt -> CInt Source xor :: CInt -> CInt -> CInt Source complement :: CInt -> CInt Source shift :: CInt -> Int -> CInt Source rotate :: CInt -> Int -> CInt Source setBit :: CInt -> Int -> CInt Source clearBit :: CInt -> Int -> CInt Source complementBit :: CInt -> Int -> CInt Source testBit :: CInt -> Int -> Bool Source bitSizeMaybe :: CInt -> Maybe Int Source isSigned :: CInt -> Bool Source shiftL :: CInt -> Int -> CInt Source unsafeShiftL :: CInt -> Int -> CInt Source shiftR :: CInt -> Int -> CInt Source unsafeShiftR :: CInt -> Int -> CInt Source rotateL :: CInt -> Int -> CInt Source | |
Storable CInt | |
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.
Haskell type representing the C bool
type.
Since: 4.10.0.0
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.
Enum CClock | |
Methodssucc :: CClock -> CClock Source pred :: CClock -> CClock Source toEnum :: Int -> CClock Source fromEnum :: CClock -> Int Source enumFrom :: CClock -> [CClock] Source enumFromThen :: CClock -> CClock -> [CClock] Source enumFromTo :: CClock -> CClock -> [CClock] Source enumFromThenTo :: CClock -> CClock -> CClock -> [CClock] Source | |
Eq CClock | |
Num CClock | |
Ord CClock | |
Read CClock | |
Real CClock | |
MethodstoRational :: CClock -> Rational Source | |
Show CClock | |
Storable CClock | |
MethodssizeOf :: CClock -> Int Source alignment :: CClock -> Int Source peekElemOff :: Ptr CClock -> Int -> IO CClock Source pokeElemOff :: Ptr CClock -> Int -> CClock -> IO () Source peekByteOff :: Ptr b -> Int -> IO CClock Source pokeByteOff :: Ptr b -> Int -> CClock -> IO () Source |
Haskell type representing the C time_t
type.
Enum CTime | |
Eq CTime | |
Num CTime | |
Ord CTime | |
Read CTime | |
Real CTime | |
MethodstoRational :: CTime -> Rational Source | |
Show CTime | |
Storable CTime | |
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 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.
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/8.2.1/docs/html/libraries/base-4.10.0.0/Foreign-C-Types.html