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
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)will yield the same value assizeof (t)in C. -
alignment (undefined :: CT)matches the alignment constraint enforced by the C implementation fort. - 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.
Platform differences
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.
Integral types
These types 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. (The concrete types of Foreign.C.Types are platform-specific.)
Instances
Haskell type representing the C signed char type. (The concrete types of Foreign.C.Types are platform-specific.)
Instances
Haskell type representing the C unsigned char type. (The concrete types of Foreign.C.Types are platform-specific.)
Instances
Haskell type representing the C short type. (The concrete types of Foreign.C.Types are platform-specific.)
Instances
Haskell type representing the C unsigned short type. (The concrete types of Foreign.C.Types are platform-specific.)
Instances
Haskell type representing the C int type. (The concrete types of Foreign.C.Types are platform-specific.)
Instances
Haskell type representing the C unsigned int type. (The concrete types of Foreign.C.Types are platform-specific.)
Instances
Haskell type representing the C long type. (The concrete types of Foreign.C.Types are platform-specific.)
Instances
Haskell type representing the C unsigned long type. (The concrete types of Foreign.C.Types are platform-specific.)
Instances
Haskell type representing the C ptrdiff_t type. (The concrete types of Foreign.C.Types are platform-specific.)
Instances
Haskell type representing the C size_t type. (The concrete types of Foreign.C.Types are platform-specific.)
Instances
Haskell type representing the C wchar_t type. (The concrete types of Foreign.C.Types are platform-specific.)
Instances
newtype CSigAtomic Source
Haskell type representing the C sig_atomic_t type. (The concrete types of Foreign.C.Types are platform-specific.)
Constructors
| CSigAtomic Int32 |
Instances
Haskell type representing the C long long type. (The concrete types of Foreign.C.Types are platform-specific.)
Instances
Haskell type representing the C unsigned long long type. (The concrete types of Foreign.C.Types are platform-specific.)
Instances
Haskell type representing the C bool type. (The concrete types of Foreign.C.Types are platform-specific.)
Since: base-4.10.0.0
Instances
Instances
Instances
Instances
Instances
Numeric types
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. (The concrete types of Foreign.C.Types are platform-specific.)
Instances
| Enum CClock | |
Defined in Foreign.C.Types 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 | |
Defined in Foreign.C.Types | |
| Read CClock | |
| Real CClock | |
Defined in Foreign.C.Types MethodstoRational :: CClock -> Rational Source | |
| Show CClock | |
| Storable CClock | |
Defined in Foreign.C.Types 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. (The concrete types of Foreign.C.Types are platform-specific.)
Instances
| Enum CTime | |
| Eq CTime | |
| Num CTime | |
| Ord CTime | |
Defined in Foreign.C.Types | |
| Read CTime | |
| Real CTime | |
Defined in Foreign.C.Types MethodstoRational :: CTime -> Rational Source | |
| Show CTime | |
| Storable CTime | |
Defined in Foreign.C.Types | |
Haskell type representing the C useconds_t type. (The concrete types of Foreign.C.Types are platform-specific.)
Since: base-4.4.0.0
Instances
newtype CSUSeconds Source
Haskell type representing the C suseconds_t type. (The concrete types of Foreign.C.Types are platform-specific.)
Since: base-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 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. That does mean that CFloat's (respectively CDouble's) instances of Eq, Ord, Num and Fractional are as badly behaved as Float's (respectively Double's).
Haskell type representing the C float type. (The concrete types of Foreign.C.Types are platform-specific.)
Instances
Haskell type representing the C double type. (The concrete types of Foreign.C.Types are platform-specific.)
Instances
Other types
Haskell type representing the C FILE type. (The concrete types of Foreign.C.Types are platform-specific.)
Haskell type representing the C fpos_t type. (The concrete types of Foreign.C.Types are platform-specific.)
Haskell type representing the C jmp_buf type. (The concrete types of Foreign.C.Types are platform-specific.)
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/8.10.2/docs/html/libraries/base-4.14.1.0/Foreign-C-Types.html