-- (c) The FFI task force, [2000..2001] -- -- Haskell representation of basic C types module CTypes ( -- Integral types; instances: Eq, Ord, Num, Read, Show, Enum, -- Storable, Bounded, Real, Integral -- CChar(..), CSChar(..), CUChar(..) CShort(..), CUShort(..), CInt(..), CUInt(..), CLong(..), CULong(..), CLLong(..), CULLong(..), -- Floating types; instances: Eq, Ord, Num, Read, Show, Enum, -- Storable, Real, Fractional, Floating, RealFrac, RealFloat -- CFloat(..), CDouble(..), CLDouble(..) ) where import Int import Word import Storable (Storable(..)) -- the exact representations are architecture dependent newtype CChar = CChar WordInt8 -- char deriving (Eq, Ord, Enum, Bounded, Show, Read) newtype CSChar = CSChar Int8 -- signed char deriving (Eq, Ord, Enum, Bounded, Show, Read) newtype CUChar = CUChar Word8 -- unsigned char deriving (Eq, Ord, Enum, Bounded, Show, Read) newtype CShort = CShort IntXY -- short deriving (Eq, Ord, Enum, Bounded, Show, Read) newtype CUShort = CUShort WordXY -- unsigned short deriving (Eq, Ord, Enum, Bounded, Show, Read) newtype CInt = CInt IntXY -- int deriving (Eq, Ord, Enum, Bounded, Show, Read) newtype CUInt = CUInt WordXY -- unsigned int deriving (Eq, Ord, Enum, Bounded, Show, Read) newtype CLong = CLong IntXY -- long deriving (Eq, Ord, Enum, Bounded, Show, Read) newtype CULong = CULong WordXY -- unsigned long deriving (Eq, Ord, Enum, Bounded, Show, Read) newtype CLLong = CLLong IntXY -- long long deriving (Eq, Ord, Enum, Bounded, Show, Read) newtype CULLong = CULLong WordXY -- unsigned long long deriving (Eq, Ord, Enum, Bounded, Show, Read) newtype CFloat = CFloat ... -- float deriving (Eq, Ord, Enum, Show, Read) newtype CDouble = CDouble ... -- double deriving (Eq, Ord, Enum, Show, Read) newtype CLDouble = CLDouble ... -- long double deriving (Eq, Ord, Enum, Show, Read) instance Num CChar where ... instance Real CChar where ... instance Integral CChar where ... instance Num CSChar where ... instance Real CSChar where ... instance Integral CSChar where ... instance Num CUChar where ... instance Real CUChar where ... instance Integral CUChar where ... instance Num CShort where ... instance Real CShort where ... instance Integral CShort where ... instance Num CUShort where ... instance Real CUShort where ... instance Integral CUShort where ... instance Num CInt where ... instance Real CInt where ... instance Integral CInt where ... instance Num CLong where ... instance Real CLong where ... instance Integral CLong where ... instance Num CULong where ... instance Real CULong where ... instance Integral CULong where ... instance Num CLLong where ... instance Real CLLong where ... instance Integral CLLong where ... instance Num CULLong where ... instance Real CULLong where ... instance Integral CULLong where ... instance Num CFloat where ... instance Real CFloat where ... instance Floating CFloat where ... instance RealFrac CFloat where ... instance RealFloat CFloat where ... instance Num CDouble where ... instance Real CDouble where ... instance Floating CDouble where ... instance RealFrac CDouble where ... instance RealFloat CDouble where ... instance Num CLDouble where ... instance Real CLDouble where ... instance Floating CLDouble where ... instance RealFrac CLDouble where ... instance RealFloat CLDouble where ...