    -- |
    --
    -- 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