-- | -- -- Module : Foreign.C.Types -- Copyright : (c) The FFI task force 2001 -- License : BSD-style (see the file libraries/base/LICENSE) -- -- Maintainer : ffi@haskell.org -- Stability : provisional -- Portability : portable -- -- Mapping of C types to corresponding Haskell types. -- module Foreign.C.Types (-- * Representations of C types -- $ctypes -- ** #platform# 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 @newtype@s of -- types in "Data.Int" and "Data.Word", and are instances of -- 'Prelude.Eq', 'Prelude.Ord', 'Prelude.Num', 'Prelude.Read', -- 'Prelude.Show', 'Prelude.Enum', 'Data.Typeable.Typeable', -- 'Storable', 'Prelude.Bounded', 'Prelude.Real', 'Prelude.Integral' -- and 'Bits'. CChar(..), CSChar(..), CUChar(..), CShort(..), CUShort(..), CInt(..), CUInt(..), CLong(..), CULong(..), CPtrdiff(..), CSize(..), CWchar(..), CSigAtomic(..), CLLong(..), CULLong(..), CBool(..), CIntPtr(..), CUIntPtr(..), CIntMax(..), CUIntMax(..), -- ** Numeric types -- | These types are represented as @newtype@s of basic -- foreign types, and are instances of -- 'Prelude.Eq', 'Prelude.Ord', 'Prelude.Num', 'Prelude.Read', -- 'Prelude.Show', 'Prelude.Enum', 'Data.Typeable.Typeable' and -- 'Storable'. CClock(..), CTime(..), CUSeconds(..), CSUSeconds(..), -- | To convert 'CTime' to 'Data.Time.UTCTime', use the following: -- -- > \t -> posixSecondsToUTCTime (realToFrac t :: POSIXTime) -- ** Floating types -- | These types are represented as @newtype@s of -- 'Prelude.Float' and 'Prelude.Double', and are instances of -- 'Prelude.Eq', 'Prelude.Ord', 'Prelude.Num', 'Prelude.Read', -- 'Prelude.Show', 'Prelude.Enum', 'Data.Typeable.Typeable', 'Storable', -- 'Prelude.Real', 'Prelude.Fractional', 'Prelude.Floating', -- 'Prelude.RealFrac' and 'Prelude.RealFloat'. That does mean -- that `CFloat`'s (respectively `CDouble`'s) instances of -- 'Prelude.Eq', 'Prelude.Ord', 'Prelude.Num' and -- 'Prelude.Fractional' are as badly behaved as `Prelude.Float`'s -- (respectively `Prelude.Double`'s). CFloat(..), CDouble(..), -- XXX GHC doesn't support CLDouble yet -- , CLDouble(..) -- ** Other types CFile, CFpos, CJmpBuf ) where import GHC.Internal.Foreign.C.Types