convertible 1.0.0 → 1.0.1
raw patch · 7 files changed
+1687/−23 lines, 7 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Data.Convertible.Instances.C: instance Convertible CChar CInt
+ Data.Convertible.Instances.C: instance Convertible CChar CLLong
+ Data.Convertible.Instances.C: instance Convertible CChar CLong
+ Data.Convertible.Instances.C: instance Convertible CChar CSChar
+ Data.Convertible.Instances.C: instance Convertible CChar CShort
+ Data.Convertible.Instances.C: instance Convertible CChar CSize
+ Data.Convertible.Instances.C: instance Convertible CChar CUChar
+ Data.Convertible.Instances.C: instance Convertible CChar CUInt
+ Data.Convertible.Instances.C: instance Convertible CChar CULLong
+ Data.Convertible.Instances.C: instance Convertible CChar CULong
+ Data.Convertible.Instances.C: instance Convertible CChar CUShort
+ Data.Convertible.Instances.C: instance Convertible CChar CWchar
+ Data.Convertible.Instances.C: instance Convertible CChar Char
+ Data.Convertible.Instances.C: instance Convertible CChar Int
+ Data.Convertible.Instances.C: instance Convertible CChar Int16
+ Data.Convertible.Instances.C: instance Convertible CChar Int32
+ Data.Convertible.Instances.C: instance Convertible CChar Int64
+ Data.Convertible.Instances.C: instance Convertible CChar Int8
+ Data.Convertible.Instances.C: instance Convertible CChar Integer
+ Data.Convertible.Instances.C: instance Convertible CChar Word
+ Data.Convertible.Instances.C: instance Convertible CChar Word16
+ Data.Convertible.Instances.C: instance Convertible CChar Word32
+ Data.Convertible.Instances.C: instance Convertible CChar Word64
+ Data.Convertible.Instances.C: instance Convertible CChar Word8
+ Data.Convertible.Instances.C: instance Convertible CDouble CFloat
+ Data.Convertible.Instances.C: instance Convertible CDouble CLDouble
+ Data.Convertible.Instances.C: instance Convertible CDouble Double
+ Data.Convertible.Instances.C: instance Convertible CDouble Float
+ Data.Convertible.Instances.C: instance Convertible CDouble Int
+ Data.Convertible.Instances.C: instance Convertible CDouble Int16
+ Data.Convertible.Instances.C: instance Convertible CDouble Int32
+ Data.Convertible.Instances.C: instance Convertible CDouble Int64
+ Data.Convertible.Instances.C: instance Convertible CDouble Int8
+ Data.Convertible.Instances.C: instance Convertible CDouble Integer
+ Data.Convertible.Instances.C: instance Convertible CDouble Rational
+ Data.Convertible.Instances.C: instance Convertible CDouble Word
+ Data.Convertible.Instances.C: instance Convertible CDouble Word16
+ Data.Convertible.Instances.C: instance Convertible CDouble Word32
+ Data.Convertible.Instances.C: instance Convertible CDouble Word64
+ Data.Convertible.Instances.C: instance Convertible CDouble Word8
+ Data.Convertible.Instances.C: instance Convertible CFloat CDouble
+ Data.Convertible.Instances.C: instance Convertible CFloat CLDouble
+ Data.Convertible.Instances.C: instance Convertible CFloat Double
+ Data.Convertible.Instances.C: instance Convertible CFloat Float
+ Data.Convertible.Instances.C: instance Convertible CFloat Int
+ Data.Convertible.Instances.C: instance Convertible CFloat Int16
+ Data.Convertible.Instances.C: instance Convertible CFloat Int32
+ Data.Convertible.Instances.C: instance Convertible CFloat Int64
+ Data.Convertible.Instances.C: instance Convertible CFloat Int8
+ Data.Convertible.Instances.C: instance Convertible CFloat Integer
+ Data.Convertible.Instances.C: instance Convertible CFloat Rational
+ Data.Convertible.Instances.C: instance Convertible CFloat Word
+ Data.Convertible.Instances.C: instance Convertible CFloat Word16
+ Data.Convertible.Instances.C: instance Convertible CFloat Word32
+ Data.Convertible.Instances.C: instance Convertible CFloat Word64
+ Data.Convertible.Instances.C: instance Convertible CFloat Word8
+ Data.Convertible.Instances.C: instance Convertible CInt CChar
+ Data.Convertible.Instances.C: instance Convertible CInt CLLong
+ Data.Convertible.Instances.C: instance Convertible CInt CLong
+ Data.Convertible.Instances.C: instance Convertible CInt CSChar
+ Data.Convertible.Instances.C: instance Convertible CInt CShort
+ Data.Convertible.Instances.C: instance Convertible CInt CSize
+ Data.Convertible.Instances.C: instance Convertible CInt CUChar
+ Data.Convertible.Instances.C: instance Convertible CInt CUInt
+ Data.Convertible.Instances.C: instance Convertible CInt CULLong
+ Data.Convertible.Instances.C: instance Convertible CInt CULong
+ Data.Convertible.Instances.C: instance Convertible CInt CUShort
+ Data.Convertible.Instances.C: instance Convertible CInt CWchar
+ Data.Convertible.Instances.C: instance Convertible CInt Char
+ Data.Convertible.Instances.C: instance Convertible CInt Int
+ Data.Convertible.Instances.C: instance Convertible CInt Int16
+ Data.Convertible.Instances.C: instance Convertible CInt Int32
+ Data.Convertible.Instances.C: instance Convertible CInt Int64
+ Data.Convertible.Instances.C: instance Convertible CInt Int8
+ Data.Convertible.Instances.C: instance Convertible CInt Integer
+ Data.Convertible.Instances.C: instance Convertible CInt Word
+ Data.Convertible.Instances.C: instance Convertible CInt Word16
+ Data.Convertible.Instances.C: instance Convertible CInt Word32
+ Data.Convertible.Instances.C: instance Convertible CInt Word64
+ Data.Convertible.Instances.C: instance Convertible CInt Word8
+ Data.Convertible.Instances.C: instance Convertible CLDouble CDouble
+ Data.Convertible.Instances.C: instance Convertible CLDouble CFloat
+ Data.Convertible.Instances.C: instance Convertible CLDouble Double
+ Data.Convertible.Instances.C: instance Convertible CLDouble Float
+ Data.Convertible.Instances.C: instance Convertible CLDouble Int
+ Data.Convertible.Instances.C: instance Convertible CLDouble Int16
+ Data.Convertible.Instances.C: instance Convertible CLDouble Int32
+ Data.Convertible.Instances.C: instance Convertible CLDouble Int64
+ Data.Convertible.Instances.C: instance Convertible CLDouble Int8
+ Data.Convertible.Instances.C: instance Convertible CLDouble Integer
+ Data.Convertible.Instances.C: instance Convertible CLDouble Rational
+ Data.Convertible.Instances.C: instance Convertible CLDouble Word
+ Data.Convertible.Instances.C: instance Convertible CLDouble Word16
+ Data.Convertible.Instances.C: instance Convertible CLDouble Word32
+ Data.Convertible.Instances.C: instance Convertible CLDouble Word64
+ Data.Convertible.Instances.C: instance Convertible CLDouble Word8
+ Data.Convertible.Instances.C: instance Convertible CLLong CChar
+ Data.Convertible.Instances.C: instance Convertible CLLong CInt
+ Data.Convertible.Instances.C: instance Convertible CLLong CLong
+ Data.Convertible.Instances.C: instance Convertible CLLong CSChar
+ Data.Convertible.Instances.C: instance Convertible CLLong CShort
+ Data.Convertible.Instances.C: instance Convertible CLLong CSize
+ Data.Convertible.Instances.C: instance Convertible CLLong CUChar
+ Data.Convertible.Instances.C: instance Convertible CLLong CUInt
+ Data.Convertible.Instances.C: instance Convertible CLLong CULLong
+ Data.Convertible.Instances.C: instance Convertible CLLong CULong
+ Data.Convertible.Instances.C: instance Convertible CLLong CUShort
+ Data.Convertible.Instances.C: instance Convertible CLLong CWchar
+ Data.Convertible.Instances.C: instance Convertible CLLong Char
+ Data.Convertible.Instances.C: instance Convertible CLLong Int
+ Data.Convertible.Instances.C: instance Convertible CLLong Int16
+ Data.Convertible.Instances.C: instance Convertible CLLong Int32
+ Data.Convertible.Instances.C: instance Convertible CLLong Int64
+ Data.Convertible.Instances.C: instance Convertible CLLong Int8
+ Data.Convertible.Instances.C: instance Convertible CLLong Integer
+ Data.Convertible.Instances.C: instance Convertible CLLong Word
+ Data.Convertible.Instances.C: instance Convertible CLLong Word16
+ Data.Convertible.Instances.C: instance Convertible CLLong Word32
+ Data.Convertible.Instances.C: instance Convertible CLLong Word64
+ Data.Convertible.Instances.C: instance Convertible CLLong Word8
+ Data.Convertible.Instances.C: instance Convertible CLong CChar
+ Data.Convertible.Instances.C: instance Convertible CLong CInt
+ Data.Convertible.Instances.C: instance Convertible CLong CLLong
+ Data.Convertible.Instances.C: instance Convertible CLong CSChar
+ Data.Convertible.Instances.C: instance Convertible CLong CShort
+ Data.Convertible.Instances.C: instance Convertible CLong CSize
+ Data.Convertible.Instances.C: instance Convertible CLong CUChar
+ Data.Convertible.Instances.C: instance Convertible CLong CUInt
+ Data.Convertible.Instances.C: instance Convertible CLong CULLong
+ Data.Convertible.Instances.C: instance Convertible CLong CULong
+ Data.Convertible.Instances.C: instance Convertible CLong CUShort
+ Data.Convertible.Instances.C: instance Convertible CLong CWchar
+ Data.Convertible.Instances.C: instance Convertible CLong Char
+ Data.Convertible.Instances.C: instance Convertible CLong Int
+ Data.Convertible.Instances.C: instance Convertible CLong Int16
+ Data.Convertible.Instances.C: instance Convertible CLong Int32
+ Data.Convertible.Instances.C: instance Convertible CLong Int64
+ Data.Convertible.Instances.C: instance Convertible CLong Int8
+ Data.Convertible.Instances.C: instance Convertible CLong Integer
+ Data.Convertible.Instances.C: instance Convertible CLong Word
+ Data.Convertible.Instances.C: instance Convertible CLong Word16
+ Data.Convertible.Instances.C: instance Convertible CLong Word32
+ Data.Convertible.Instances.C: instance Convertible CLong Word64
+ Data.Convertible.Instances.C: instance Convertible CLong Word8
+ Data.Convertible.Instances.C: instance Convertible CSChar CChar
+ Data.Convertible.Instances.C: instance Convertible CSChar CInt
+ Data.Convertible.Instances.C: instance Convertible CSChar CLLong
+ Data.Convertible.Instances.C: instance Convertible CSChar CLong
+ Data.Convertible.Instances.C: instance Convertible CSChar CShort
+ Data.Convertible.Instances.C: instance Convertible CSChar CSize
+ Data.Convertible.Instances.C: instance Convertible CSChar CUChar
+ Data.Convertible.Instances.C: instance Convertible CSChar CUInt
+ Data.Convertible.Instances.C: instance Convertible CSChar CULLong
+ Data.Convertible.Instances.C: instance Convertible CSChar CULong
+ Data.Convertible.Instances.C: instance Convertible CSChar CUShort
+ Data.Convertible.Instances.C: instance Convertible CSChar CWchar
+ Data.Convertible.Instances.C: instance Convertible CSChar Char
+ Data.Convertible.Instances.C: instance Convertible CSChar Int
+ Data.Convertible.Instances.C: instance Convertible CSChar Int16
+ Data.Convertible.Instances.C: instance Convertible CSChar Int32
+ Data.Convertible.Instances.C: instance Convertible CSChar Int64
+ Data.Convertible.Instances.C: instance Convertible CSChar Int8
+ Data.Convertible.Instances.C: instance Convertible CSChar Integer
+ Data.Convertible.Instances.C: instance Convertible CSChar Word
+ Data.Convertible.Instances.C: instance Convertible CSChar Word16
+ Data.Convertible.Instances.C: instance Convertible CSChar Word32
+ Data.Convertible.Instances.C: instance Convertible CSChar Word64
+ Data.Convertible.Instances.C: instance Convertible CSChar Word8
+ Data.Convertible.Instances.C: instance Convertible CShort CChar
+ Data.Convertible.Instances.C: instance Convertible CShort CInt
+ Data.Convertible.Instances.C: instance Convertible CShort CLLong
+ Data.Convertible.Instances.C: instance Convertible CShort CLong
+ Data.Convertible.Instances.C: instance Convertible CShort CSChar
+ Data.Convertible.Instances.C: instance Convertible CShort CSize
+ Data.Convertible.Instances.C: instance Convertible CShort CUChar
+ Data.Convertible.Instances.C: instance Convertible CShort CUInt
+ Data.Convertible.Instances.C: instance Convertible CShort CULLong
+ Data.Convertible.Instances.C: instance Convertible CShort CULong
+ Data.Convertible.Instances.C: instance Convertible CShort CUShort
+ Data.Convertible.Instances.C: instance Convertible CShort CWchar
+ Data.Convertible.Instances.C: instance Convertible CShort Char
+ Data.Convertible.Instances.C: instance Convertible CShort Int
+ Data.Convertible.Instances.C: instance Convertible CShort Int16
+ Data.Convertible.Instances.C: instance Convertible CShort Int32
+ Data.Convertible.Instances.C: instance Convertible CShort Int64
+ Data.Convertible.Instances.C: instance Convertible CShort Int8
+ Data.Convertible.Instances.C: instance Convertible CShort Integer
+ Data.Convertible.Instances.C: instance Convertible CShort Word
+ Data.Convertible.Instances.C: instance Convertible CShort Word16
+ Data.Convertible.Instances.C: instance Convertible CShort Word32
+ Data.Convertible.Instances.C: instance Convertible CShort Word64
+ Data.Convertible.Instances.C: instance Convertible CShort Word8
+ Data.Convertible.Instances.C: instance Convertible CSize CChar
+ Data.Convertible.Instances.C: instance Convertible CSize CInt
+ Data.Convertible.Instances.C: instance Convertible CSize CLLong
+ Data.Convertible.Instances.C: instance Convertible CSize CLong
+ Data.Convertible.Instances.C: instance Convertible CSize CSChar
+ Data.Convertible.Instances.C: instance Convertible CSize CShort
+ Data.Convertible.Instances.C: instance Convertible CSize CUChar
+ Data.Convertible.Instances.C: instance Convertible CSize CUInt
+ Data.Convertible.Instances.C: instance Convertible CSize CULLong
+ Data.Convertible.Instances.C: instance Convertible CSize CULong
+ Data.Convertible.Instances.C: instance Convertible CSize CUShort
+ Data.Convertible.Instances.C: instance Convertible CSize CWchar
+ Data.Convertible.Instances.C: instance Convertible CSize Char
+ Data.Convertible.Instances.C: instance Convertible CSize Int
+ Data.Convertible.Instances.C: instance Convertible CSize Int16
+ Data.Convertible.Instances.C: instance Convertible CSize Int32
+ Data.Convertible.Instances.C: instance Convertible CSize Int64
+ Data.Convertible.Instances.C: instance Convertible CSize Int8
+ Data.Convertible.Instances.C: instance Convertible CSize Integer
+ Data.Convertible.Instances.C: instance Convertible CSize Word
+ Data.Convertible.Instances.C: instance Convertible CSize Word16
+ Data.Convertible.Instances.C: instance Convertible CSize Word32
+ Data.Convertible.Instances.C: instance Convertible CSize Word64
+ Data.Convertible.Instances.C: instance Convertible CSize Word8
+ Data.Convertible.Instances.C: instance Convertible CUChar CChar
+ Data.Convertible.Instances.C: instance Convertible CUChar CInt
+ Data.Convertible.Instances.C: instance Convertible CUChar CLLong
+ Data.Convertible.Instances.C: instance Convertible CUChar CLong
+ Data.Convertible.Instances.C: instance Convertible CUChar CSChar
+ Data.Convertible.Instances.C: instance Convertible CUChar CShort
+ Data.Convertible.Instances.C: instance Convertible CUChar CSize
+ Data.Convertible.Instances.C: instance Convertible CUChar CUInt
+ Data.Convertible.Instances.C: instance Convertible CUChar CULLong
+ Data.Convertible.Instances.C: instance Convertible CUChar CULong
+ Data.Convertible.Instances.C: instance Convertible CUChar CUShort
+ Data.Convertible.Instances.C: instance Convertible CUChar CWchar
+ Data.Convertible.Instances.C: instance Convertible CUChar Char
+ Data.Convertible.Instances.C: instance Convertible CUChar Int
+ Data.Convertible.Instances.C: instance Convertible CUChar Int16
+ Data.Convertible.Instances.C: instance Convertible CUChar Int32
+ Data.Convertible.Instances.C: instance Convertible CUChar Int64
+ Data.Convertible.Instances.C: instance Convertible CUChar Int8
+ Data.Convertible.Instances.C: instance Convertible CUChar Integer
+ Data.Convertible.Instances.C: instance Convertible CUChar Word
+ Data.Convertible.Instances.C: instance Convertible CUChar Word16
+ Data.Convertible.Instances.C: instance Convertible CUChar Word32
+ Data.Convertible.Instances.C: instance Convertible CUChar Word64
+ Data.Convertible.Instances.C: instance Convertible CUChar Word8
+ Data.Convertible.Instances.C: instance Convertible CUInt CChar
+ Data.Convertible.Instances.C: instance Convertible CUInt CInt
+ Data.Convertible.Instances.C: instance Convertible CUInt CLLong
+ Data.Convertible.Instances.C: instance Convertible CUInt CLong
+ Data.Convertible.Instances.C: instance Convertible CUInt CSChar
+ Data.Convertible.Instances.C: instance Convertible CUInt CShort
+ Data.Convertible.Instances.C: instance Convertible CUInt CSize
+ Data.Convertible.Instances.C: instance Convertible CUInt CUChar
+ Data.Convertible.Instances.C: instance Convertible CUInt CULLong
+ Data.Convertible.Instances.C: instance Convertible CUInt CULong
+ Data.Convertible.Instances.C: instance Convertible CUInt CUShort
+ Data.Convertible.Instances.C: instance Convertible CUInt CWchar
+ Data.Convertible.Instances.C: instance Convertible CUInt Char
+ Data.Convertible.Instances.C: instance Convertible CUInt Int
+ Data.Convertible.Instances.C: instance Convertible CUInt Int16
+ Data.Convertible.Instances.C: instance Convertible CUInt Int32
+ Data.Convertible.Instances.C: instance Convertible CUInt Int64
+ Data.Convertible.Instances.C: instance Convertible CUInt Int8
+ Data.Convertible.Instances.C: instance Convertible CUInt Integer
+ Data.Convertible.Instances.C: instance Convertible CUInt Word
+ Data.Convertible.Instances.C: instance Convertible CUInt Word16
+ Data.Convertible.Instances.C: instance Convertible CUInt Word32
+ Data.Convertible.Instances.C: instance Convertible CUInt Word64
+ Data.Convertible.Instances.C: instance Convertible CUInt Word8
+ Data.Convertible.Instances.C: instance Convertible CULLong CChar
+ Data.Convertible.Instances.C: instance Convertible CULLong CInt
+ Data.Convertible.Instances.C: instance Convertible CULLong CLLong
+ Data.Convertible.Instances.C: instance Convertible CULLong CLong
+ Data.Convertible.Instances.C: instance Convertible CULLong CSChar
+ Data.Convertible.Instances.C: instance Convertible CULLong CShort
+ Data.Convertible.Instances.C: instance Convertible CULLong CSize
+ Data.Convertible.Instances.C: instance Convertible CULLong CUChar
+ Data.Convertible.Instances.C: instance Convertible CULLong CUInt
+ Data.Convertible.Instances.C: instance Convertible CULLong CULong
+ Data.Convertible.Instances.C: instance Convertible CULLong CUShort
+ Data.Convertible.Instances.C: instance Convertible CULLong CWchar
+ Data.Convertible.Instances.C: instance Convertible CULLong Char
+ Data.Convertible.Instances.C: instance Convertible CULLong Int
+ Data.Convertible.Instances.C: instance Convertible CULLong Int16
+ Data.Convertible.Instances.C: instance Convertible CULLong Int32
+ Data.Convertible.Instances.C: instance Convertible CULLong Int64
+ Data.Convertible.Instances.C: instance Convertible CULLong Int8
+ Data.Convertible.Instances.C: instance Convertible CULLong Integer
+ Data.Convertible.Instances.C: instance Convertible CULLong Word
+ Data.Convertible.Instances.C: instance Convertible CULLong Word16
+ Data.Convertible.Instances.C: instance Convertible CULLong Word32
+ Data.Convertible.Instances.C: instance Convertible CULLong Word64
+ Data.Convertible.Instances.C: instance Convertible CULLong Word8
+ Data.Convertible.Instances.C: instance Convertible CULong CChar
+ Data.Convertible.Instances.C: instance Convertible CULong CInt
+ Data.Convertible.Instances.C: instance Convertible CULong CLLong
+ Data.Convertible.Instances.C: instance Convertible CULong CLong
+ Data.Convertible.Instances.C: instance Convertible CULong CSChar
+ Data.Convertible.Instances.C: instance Convertible CULong CShort
+ Data.Convertible.Instances.C: instance Convertible CULong CSize
+ Data.Convertible.Instances.C: instance Convertible CULong CUChar
+ Data.Convertible.Instances.C: instance Convertible CULong CUInt
+ Data.Convertible.Instances.C: instance Convertible CULong CULLong
+ Data.Convertible.Instances.C: instance Convertible CULong CUShort
+ Data.Convertible.Instances.C: instance Convertible CULong CWchar
+ Data.Convertible.Instances.C: instance Convertible CULong Char
+ Data.Convertible.Instances.C: instance Convertible CULong Int
+ Data.Convertible.Instances.C: instance Convertible CULong Int16
+ Data.Convertible.Instances.C: instance Convertible CULong Int32
+ Data.Convertible.Instances.C: instance Convertible CULong Int64
+ Data.Convertible.Instances.C: instance Convertible CULong Int8
+ Data.Convertible.Instances.C: instance Convertible CULong Integer
+ Data.Convertible.Instances.C: instance Convertible CULong Word
+ Data.Convertible.Instances.C: instance Convertible CULong Word16
+ Data.Convertible.Instances.C: instance Convertible CULong Word32
+ Data.Convertible.Instances.C: instance Convertible CULong Word64
+ Data.Convertible.Instances.C: instance Convertible CULong Word8
+ Data.Convertible.Instances.C: instance Convertible CUShort CChar
+ Data.Convertible.Instances.C: instance Convertible CUShort CInt
+ Data.Convertible.Instances.C: instance Convertible CUShort CLLong
+ Data.Convertible.Instances.C: instance Convertible CUShort CLong
+ Data.Convertible.Instances.C: instance Convertible CUShort CSChar
+ Data.Convertible.Instances.C: instance Convertible CUShort CShort
+ Data.Convertible.Instances.C: instance Convertible CUShort CSize
+ Data.Convertible.Instances.C: instance Convertible CUShort CUChar
+ Data.Convertible.Instances.C: instance Convertible CUShort CUInt
+ Data.Convertible.Instances.C: instance Convertible CUShort CULLong
+ Data.Convertible.Instances.C: instance Convertible CUShort CULong
+ Data.Convertible.Instances.C: instance Convertible CUShort CWchar
+ Data.Convertible.Instances.C: instance Convertible CUShort Char
+ Data.Convertible.Instances.C: instance Convertible CUShort Int
+ Data.Convertible.Instances.C: instance Convertible CUShort Int16
+ Data.Convertible.Instances.C: instance Convertible CUShort Int32
+ Data.Convertible.Instances.C: instance Convertible CUShort Int64
+ Data.Convertible.Instances.C: instance Convertible CUShort Int8
+ Data.Convertible.Instances.C: instance Convertible CUShort Integer
+ Data.Convertible.Instances.C: instance Convertible CUShort Word
+ Data.Convertible.Instances.C: instance Convertible CUShort Word16
+ Data.Convertible.Instances.C: instance Convertible CUShort Word32
+ Data.Convertible.Instances.C: instance Convertible CUShort Word64
+ Data.Convertible.Instances.C: instance Convertible CUShort Word8
+ Data.Convertible.Instances.C: instance Convertible CWchar CChar
+ Data.Convertible.Instances.C: instance Convertible CWchar CInt
+ Data.Convertible.Instances.C: instance Convertible CWchar CLLong
+ Data.Convertible.Instances.C: instance Convertible CWchar CLong
+ Data.Convertible.Instances.C: instance Convertible CWchar CSChar
+ Data.Convertible.Instances.C: instance Convertible CWchar CShort
+ Data.Convertible.Instances.C: instance Convertible CWchar CSize
+ Data.Convertible.Instances.C: instance Convertible CWchar CUChar
+ Data.Convertible.Instances.C: instance Convertible CWchar CUInt
+ Data.Convertible.Instances.C: instance Convertible CWchar CULLong
+ Data.Convertible.Instances.C: instance Convertible CWchar CULong
+ Data.Convertible.Instances.C: instance Convertible CWchar CUShort
+ Data.Convertible.Instances.C: instance Convertible CWchar Char
+ Data.Convertible.Instances.C: instance Convertible CWchar Int
+ Data.Convertible.Instances.C: instance Convertible CWchar Int16
+ Data.Convertible.Instances.C: instance Convertible CWchar Int32
+ Data.Convertible.Instances.C: instance Convertible CWchar Int64
+ Data.Convertible.Instances.C: instance Convertible CWchar Int8
+ Data.Convertible.Instances.C: instance Convertible CWchar Integer
+ Data.Convertible.Instances.C: instance Convertible CWchar Word
+ Data.Convertible.Instances.C: instance Convertible CWchar Word16
+ Data.Convertible.Instances.C: instance Convertible CWchar Word32
+ Data.Convertible.Instances.C: instance Convertible CWchar Word64
+ Data.Convertible.Instances.C: instance Convertible CWchar Word8
+ Data.Convertible.Instances.C: instance Convertible Char CChar
+ Data.Convertible.Instances.C: instance Convertible Char CInt
+ Data.Convertible.Instances.C: instance Convertible Char CLLong
+ Data.Convertible.Instances.C: instance Convertible Char CLong
+ Data.Convertible.Instances.C: instance Convertible Char CSChar
+ Data.Convertible.Instances.C: instance Convertible Char CShort
+ Data.Convertible.Instances.C: instance Convertible Char CSize
+ Data.Convertible.Instances.C: instance Convertible Char CUChar
+ Data.Convertible.Instances.C: instance Convertible Char CUInt
+ Data.Convertible.Instances.C: instance Convertible Char CULLong
+ Data.Convertible.Instances.C: instance Convertible Char CULong
+ Data.Convertible.Instances.C: instance Convertible Char CUShort
+ Data.Convertible.Instances.C: instance Convertible Char CWchar
+ Data.Convertible.Instances.C: instance Convertible Double CDouble
+ Data.Convertible.Instances.C: instance Convertible Double CFloat
+ Data.Convertible.Instances.C: instance Convertible Double CLDouble
+ Data.Convertible.Instances.C: instance Convertible Float CDouble
+ Data.Convertible.Instances.C: instance Convertible Float CFloat
+ Data.Convertible.Instances.C: instance Convertible Float CLDouble
+ Data.Convertible.Instances.C: instance Convertible Int CChar
+ Data.Convertible.Instances.C: instance Convertible Int CDouble
+ Data.Convertible.Instances.C: instance Convertible Int CFloat
+ Data.Convertible.Instances.C: instance Convertible Int CInt
+ Data.Convertible.Instances.C: instance Convertible Int CLDouble
+ Data.Convertible.Instances.C: instance Convertible Int CLLong
+ Data.Convertible.Instances.C: instance Convertible Int CLong
+ Data.Convertible.Instances.C: instance Convertible Int CSChar
+ Data.Convertible.Instances.C: instance Convertible Int CShort
+ Data.Convertible.Instances.C: instance Convertible Int CSize
+ Data.Convertible.Instances.C: instance Convertible Int CUChar
+ Data.Convertible.Instances.C: instance Convertible Int CUInt
+ Data.Convertible.Instances.C: instance Convertible Int CULLong
+ Data.Convertible.Instances.C: instance Convertible Int CULong
+ Data.Convertible.Instances.C: instance Convertible Int CUShort
+ Data.Convertible.Instances.C: instance Convertible Int CWchar
+ Data.Convertible.Instances.C: instance Convertible Int16 CChar
+ Data.Convertible.Instances.C: instance Convertible Int16 CDouble
+ Data.Convertible.Instances.C: instance Convertible Int16 CFloat
+ Data.Convertible.Instances.C: instance Convertible Int16 CInt
+ Data.Convertible.Instances.C: instance Convertible Int16 CLDouble
+ Data.Convertible.Instances.C: instance Convertible Int16 CLLong
+ Data.Convertible.Instances.C: instance Convertible Int16 CLong
+ Data.Convertible.Instances.C: instance Convertible Int16 CSChar
+ Data.Convertible.Instances.C: instance Convertible Int16 CShort
+ Data.Convertible.Instances.C: instance Convertible Int16 CSize
+ Data.Convertible.Instances.C: instance Convertible Int16 CUChar
+ Data.Convertible.Instances.C: instance Convertible Int16 CUInt
+ Data.Convertible.Instances.C: instance Convertible Int16 CULLong
+ Data.Convertible.Instances.C: instance Convertible Int16 CULong
+ Data.Convertible.Instances.C: instance Convertible Int16 CUShort
+ Data.Convertible.Instances.C: instance Convertible Int16 CWchar
+ Data.Convertible.Instances.C: instance Convertible Int32 CChar
+ Data.Convertible.Instances.C: instance Convertible Int32 CDouble
+ Data.Convertible.Instances.C: instance Convertible Int32 CFloat
+ Data.Convertible.Instances.C: instance Convertible Int32 CInt
+ Data.Convertible.Instances.C: instance Convertible Int32 CLDouble
+ Data.Convertible.Instances.C: instance Convertible Int32 CLLong
+ Data.Convertible.Instances.C: instance Convertible Int32 CLong
+ Data.Convertible.Instances.C: instance Convertible Int32 CSChar
+ Data.Convertible.Instances.C: instance Convertible Int32 CShort
+ Data.Convertible.Instances.C: instance Convertible Int32 CSize
+ Data.Convertible.Instances.C: instance Convertible Int32 CUChar
+ Data.Convertible.Instances.C: instance Convertible Int32 CUInt
+ Data.Convertible.Instances.C: instance Convertible Int32 CULLong
+ Data.Convertible.Instances.C: instance Convertible Int32 CULong
+ Data.Convertible.Instances.C: instance Convertible Int32 CUShort
+ Data.Convertible.Instances.C: instance Convertible Int32 CWchar
+ Data.Convertible.Instances.C: instance Convertible Int64 CChar
+ Data.Convertible.Instances.C: instance Convertible Int64 CDouble
+ Data.Convertible.Instances.C: instance Convertible Int64 CFloat
+ Data.Convertible.Instances.C: instance Convertible Int64 CInt
+ Data.Convertible.Instances.C: instance Convertible Int64 CLDouble
+ Data.Convertible.Instances.C: instance Convertible Int64 CLLong
+ Data.Convertible.Instances.C: instance Convertible Int64 CLong
+ Data.Convertible.Instances.C: instance Convertible Int64 CSChar
+ Data.Convertible.Instances.C: instance Convertible Int64 CShort
+ Data.Convertible.Instances.C: instance Convertible Int64 CSize
+ Data.Convertible.Instances.C: instance Convertible Int64 CUChar
+ Data.Convertible.Instances.C: instance Convertible Int64 CUInt
+ Data.Convertible.Instances.C: instance Convertible Int64 CULLong
+ Data.Convertible.Instances.C: instance Convertible Int64 CULong
+ Data.Convertible.Instances.C: instance Convertible Int64 CUShort
+ Data.Convertible.Instances.C: instance Convertible Int64 CWchar
+ Data.Convertible.Instances.C: instance Convertible Int8 CChar
+ Data.Convertible.Instances.C: instance Convertible Int8 CDouble
+ Data.Convertible.Instances.C: instance Convertible Int8 CFloat
+ Data.Convertible.Instances.C: instance Convertible Int8 CInt
+ Data.Convertible.Instances.C: instance Convertible Int8 CLDouble
+ Data.Convertible.Instances.C: instance Convertible Int8 CLLong
+ Data.Convertible.Instances.C: instance Convertible Int8 CLong
+ Data.Convertible.Instances.C: instance Convertible Int8 CSChar
+ Data.Convertible.Instances.C: instance Convertible Int8 CShort
+ Data.Convertible.Instances.C: instance Convertible Int8 CSize
+ Data.Convertible.Instances.C: instance Convertible Int8 CUChar
+ Data.Convertible.Instances.C: instance Convertible Int8 CUInt
+ Data.Convertible.Instances.C: instance Convertible Int8 CULLong
+ Data.Convertible.Instances.C: instance Convertible Int8 CULong
+ Data.Convertible.Instances.C: instance Convertible Int8 CUShort
+ Data.Convertible.Instances.C: instance Convertible Int8 CWchar
+ Data.Convertible.Instances.C: instance Convertible Integer CChar
+ Data.Convertible.Instances.C: instance Convertible Integer CDouble
+ Data.Convertible.Instances.C: instance Convertible Integer CFloat
+ Data.Convertible.Instances.C: instance Convertible Integer CInt
+ Data.Convertible.Instances.C: instance Convertible Integer CLDouble
+ Data.Convertible.Instances.C: instance Convertible Integer CLLong
+ Data.Convertible.Instances.C: instance Convertible Integer CLong
+ Data.Convertible.Instances.C: instance Convertible Integer CSChar
+ Data.Convertible.Instances.C: instance Convertible Integer CShort
+ Data.Convertible.Instances.C: instance Convertible Integer CSize
+ Data.Convertible.Instances.C: instance Convertible Integer CUChar
+ Data.Convertible.Instances.C: instance Convertible Integer CUInt
+ Data.Convertible.Instances.C: instance Convertible Integer CULLong
+ Data.Convertible.Instances.C: instance Convertible Integer CULong
+ Data.Convertible.Instances.C: instance Convertible Integer CUShort
+ Data.Convertible.Instances.C: instance Convertible Integer CWchar
+ Data.Convertible.Instances.C: instance Convertible Rational CDouble
+ Data.Convertible.Instances.C: instance Convertible Rational CFloat
+ Data.Convertible.Instances.C: instance Convertible Rational CLDouble
+ Data.Convertible.Instances.C: instance Convertible Word CChar
+ Data.Convertible.Instances.C: instance Convertible Word CDouble
+ Data.Convertible.Instances.C: instance Convertible Word CFloat
+ Data.Convertible.Instances.C: instance Convertible Word CInt
+ Data.Convertible.Instances.C: instance Convertible Word CLDouble
+ Data.Convertible.Instances.C: instance Convertible Word CLLong
+ Data.Convertible.Instances.C: instance Convertible Word CLong
+ Data.Convertible.Instances.C: instance Convertible Word CSChar
+ Data.Convertible.Instances.C: instance Convertible Word CShort
+ Data.Convertible.Instances.C: instance Convertible Word CSize
+ Data.Convertible.Instances.C: instance Convertible Word CUChar
+ Data.Convertible.Instances.C: instance Convertible Word CUInt
+ Data.Convertible.Instances.C: instance Convertible Word CULLong
+ Data.Convertible.Instances.C: instance Convertible Word CULong
+ Data.Convertible.Instances.C: instance Convertible Word CUShort
+ Data.Convertible.Instances.C: instance Convertible Word CWchar
+ Data.Convertible.Instances.C: instance Convertible Word16 CChar
+ Data.Convertible.Instances.C: instance Convertible Word16 CDouble
+ Data.Convertible.Instances.C: instance Convertible Word16 CFloat
+ Data.Convertible.Instances.C: instance Convertible Word16 CInt
+ Data.Convertible.Instances.C: instance Convertible Word16 CLDouble
+ Data.Convertible.Instances.C: instance Convertible Word16 CLLong
+ Data.Convertible.Instances.C: instance Convertible Word16 CLong
+ Data.Convertible.Instances.C: instance Convertible Word16 CSChar
+ Data.Convertible.Instances.C: instance Convertible Word16 CShort
+ Data.Convertible.Instances.C: instance Convertible Word16 CSize
+ Data.Convertible.Instances.C: instance Convertible Word16 CUChar
+ Data.Convertible.Instances.C: instance Convertible Word16 CUInt
+ Data.Convertible.Instances.C: instance Convertible Word16 CULLong
+ Data.Convertible.Instances.C: instance Convertible Word16 CULong
+ Data.Convertible.Instances.C: instance Convertible Word16 CUShort
+ Data.Convertible.Instances.C: instance Convertible Word16 CWchar
+ Data.Convertible.Instances.C: instance Convertible Word32 CChar
+ Data.Convertible.Instances.C: instance Convertible Word32 CDouble
+ Data.Convertible.Instances.C: instance Convertible Word32 CFloat
+ Data.Convertible.Instances.C: instance Convertible Word32 CInt
+ Data.Convertible.Instances.C: instance Convertible Word32 CLDouble
+ Data.Convertible.Instances.C: instance Convertible Word32 CLLong
+ Data.Convertible.Instances.C: instance Convertible Word32 CLong
+ Data.Convertible.Instances.C: instance Convertible Word32 CSChar
+ Data.Convertible.Instances.C: instance Convertible Word32 CShort
+ Data.Convertible.Instances.C: instance Convertible Word32 CSize
+ Data.Convertible.Instances.C: instance Convertible Word32 CUChar
+ Data.Convertible.Instances.C: instance Convertible Word32 CUInt
+ Data.Convertible.Instances.C: instance Convertible Word32 CULLong
+ Data.Convertible.Instances.C: instance Convertible Word32 CULong
+ Data.Convertible.Instances.C: instance Convertible Word32 CUShort
+ Data.Convertible.Instances.C: instance Convertible Word32 CWchar
+ Data.Convertible.Instances.C: instance Convertible Word64 CChar
+ Data.Convertible.Instances.C: instance Convertible Word64 CDouble
+ Data.Convertible.Instances.C: instance Convertible Word64 CFloat
+ Data.Convertible.Instances.C: instance Convertible Word64 CInt
+ Data.Convertible.Instances.C: instance Convertible Word64 CLDouble
+ Data.Convertible.Instances.C: instance Convertible Word64 CLLong
+ Data.Convertible.Instances.C: instance Convertible Word64 CLong
+ Data.Convertible.Instances.C: instance Convertible Word64 CSChar
+ Data.Convertible.Instances.C: instance Convertible Word64 CShort
+ Data.Convertible.Instances.C: instance Convertible Word64 CSize
+ Data.Convertible.Instances.C: instance Convertible Word64 CUChar
+ Data.Convertible.Instances.C: instance Convertible Word64 CUInt
+ Data.Convertible.Instances.C: instance Convertible Word64 CULLong
+ Data.Convertible.Instances.C: instance Convertible Word64 CULong
+ Data.Convertible.Instances.C: instance Convertible Word64 CUShort
+ Data.Convertible.Instances.C: instance Convertible Word64 CWchar
+ Data.Convertible.Instances.C: instance Convertible Word8 CChar
+ Data.Convertible.Instances.C: instance Convertible Word8 CDouble
+ Data.Convertible.Instances.C: instance Convertible Word8 CFloat
+ Data.Convertible.Instances.C: instance Convertible Word8 CInt
+ Data.Convertible.Instances.C: instance Convertible Word8 CLDouble
+ Data.Convertible.Instances.C: instance Convertible Word8 CLLong
+ Data.Convertible.Instances.C: instance Convertible Word8 CLong
+ Data.Convertible.Instances.C: instance Convertible Word8 CSChar
+ Data.Convertible.Instances.C: instance Convertible Word8 CShort
+ Data.Convertible.Instances.C: instance Convertible Word8 CSize
+ Data.Convertible.Instances.C: instance Convertible Word8 CUChar
+ Data.Convertible.Instances.C: instance Convertible Word8 CUInt
+ Data.Convertible.Instances.C: instance Convertible Word8 CULLong
+ Data.Convertible.Instances.C: instance Convertible Word8 CULong
+ Data.Convertible.Instances.C: instance Convertible Word8 CUShort
+ Data.Convertible.Instances.C: instance Convertible Word8 CWchar
+ Data.Convertible.Instances.Time: instance Convertible CTime CalendarTime
+ Data.Convertible.Instances.Time: instance Convertible CTime ClockTime
+ Data.Convertible.Instances.Time: instance Convertible CTime Double
+ Data.Convertible.Instances.Time: instance Convertible CTime Int
+ Data.Convertible.Instances.Time: instance Convertible CTime Integer
+ Data.Convertible.Instances.Time: instance Convertible CTime POSIXTime
+ Data.Convertible.Instances.Time: instance Convertible CTime UTCTime
+ Data.Convertible.Instances.Time: instance Convertible CTime ZonedTime
+ Data.Convertible.Instances.Time: instance Convertible CalendarTime CTime
+ Data.Convertible.Instances.Time: instance Convertible ClockTime CTime
+ Data.Convertible.Instances.Time: instance Convertible Double CTime
+ Data.Convertible.Instances.Time: instance Convertible Int CTime
+ Data.Convertible.Instances.Time: instance Convertible Integer CTime
+ Data.Convertible.Instances.Time: instance Convertible Integer TimeDiff
+ Data.Convertible.Instances.Time: instance Convertible POSIXTime CTime
+ Data.Convertible.Instances.Time: instance Convertible TimeDiff Integer
+ Data.Convertible.Instances.Time: instance Convertible TimeDiff Rational
+ Data.Convertible.Instances.Time: instance Convertible UTCTime CTime
+ Data.Convertible.Instances.Time: instance Convertible ZonedTime CTime
+ Data.Convertible.Instances.Time: instance Convertible ZonedTime ClockTime
+ Data.Convertible.Utils: convertVia :: (Convertible a b, Convertible b c) => b -> a -> ConvertResult c
Files
- Data/Convertible/Instances.hs +3/−0
- Data/Convertible/Instances/C.hs +1514/−0
- Data/Convertible/Instances/Num.hs +2/−2
- Data/Convertible/Instances/Time.hs +68/−17
- Data/Convertible/Utils.hs +30/−1
- convertible.cabal +4/−3
- utils/genCinstances.hs +66/−0
Data/Convertible/Instances.hs view
@@ -19,6 +19,8 @@ Collection of ready-made 'Data.Convertible.Convertible' instances. See each individual module for more docs: +"Data.Convertible.Instances.C"+ "Data.Convertible.Instances.Map" "Data.Convertible.Instances.Num"@@ -31,6 +33,7 @@ module Data.Convertible.Instances( ) where +import Data.Convertible.Instances.C() import Data.Convertible.Instances.Map() import Data.Convertible.Instances.Num() import Data.Convertible.Instances.Time()
+ Data/Convertible/Instances/C.hs view
@@ -0,0 +1,1514 @@+{- |+ Module : Data.Convertible.Instances.C+ Copyright : Copyright (C) 2009 John Goerzen+ License : LGPL++ Maintainer : John Goerzen <jgoerzen@complete.org>+ Stability : provisional+ Portability: portable++Numeric instances for Convertible for C types. See comments in+"Data.Convertible.Instances.Num".++Copyright (C) 2009 John Goerzen <jgoerzen@complete.org>++All rights reserved.++For license and copyright information, see the file COPYRIGHT+-}+module Data.Convertible.Instances.C()+where++import Data.Convertible.Base+import Data.Convertible.Utils+import Data.Convertible.Instances.Num()+import Data.Int+import Data.Word+import Foreign.C.Types++-- remainder of this file generated by utils/genCinstances.hs++-- Section 1+instance Convertible CFloat Int where + safeConvert = boundedConversion (return . truncate)+instance Convertible Int CFloat where + safeConvert = return . fromIntegral++instance Convertible CFloat Int8 where + safeConvert = boundedConversion (return . truncate)+instance Convertible Int8 CFloat where + safeConvert = return . fromIntegral++instance Convertible CFloat Int16 where + safeConvert = boundedConversion (return . truncate)+instance Convertible Int16 CFloat where + safeConvert = return . fromIntegral++instance Convertible CFloat Int32 where + safeConvert = boundedConversion (return . truncate)+instance Convertible Int32 CFloat where + safeConvert = return . fromIntegral++instance Convertible CFloat Int64 where + safeConvert = boundedConversion (return . truncate)+instance Convertible Int64 CFloat where + safeConvert = return . fromIntegral++instance Convertible CFloat Word where + safeConvert = boundedConversion (return . truncate)+instance Convertible Word CFloat where + safeConvert = return . fromIntegral++instance Convertible CFloat Word8 where + safeConvert = boundedConversion (return . truncate)+instance Convertible Word8 CFloat where + safeConvert = return . fromIntegral++instance Convertible CFloat Word16 where + safeConvert = boundedConversion (return . truncate)+instance Convertible Word16 CFloat where + safeConvert = return . fromIntegral++instance Convertible CFloat Word32 where + safeConvert = boundedConversion (return . truncate)+instance Convertible Word32 CFloat where + safeConvert = return . fromIntegral++instance Convertible CFloat Word64 where + safeConvert = boundedConversion (return . truncate)+instance Convertible Word64 CFloat where + safeConvert = return . fromIntegral++instance Convertible CDouble Int where + safeConvert = boundedConversion (return . truncate)+instance Convertible Int CDouble where + safeConvert = return . fromIntegral++instance Convertible CDouble Int8 where + safeConvert = boundedConversion (return . truncate)+instance Convertible Int8 CDouble where + safeConvert = return . fromIntegral++instance Convertible CDouble Int16 where + safeConvert = boundedConversion (return . truncate)+instance Convertible Int16 CDouble where + safeConvert = return . fromIntegral++instance Convertible CDouble Int32 where + safeConvert = boundedConversion (return . truncate)+instance Convertible Int32 CDouble where + safeConvert = return . fromIntegral++instance Convertible CDouble Int64 where + safeConvert = boundedConversion (return . truncate)+instance Convertible Int64 CDouble where + safeConvert = return . fromIntegral++instance Convertible CDouble Word where + safeConvert = boundedConversion (return . truncate)+instance Convertible Word CDouble where + safeConvert = return . fromIntegral++instance Convertible CDouble Word8 where + safeConvert = boundedConversion (return . truncate)+instance Convertible Word8 CDouble where + safeConvert = return . fromIntegral++instance Convertible CDouble Word16 where + safeConvert = boundedConversion (return . truncate)+instance Convertible Word16 CDouble where + safeConvert = return . fromIntegral++instance Convertible CDouble Word32 where + safeConvert = boundedConversion (return . truncate)+instance Convertible Word32 CDouble where + safeConvert = return . fromIntegral++instance Convertible CDouble Word64 where + safeConvert = boundedConversion (return . truncate)+instance Convertible Word64 CDouble where + safeConvert = return . fromIntegral++instance Convertible CLDouble Int where + safeConvert = boundedConversion (return . truncate)+instance Convertible Int CLDouble where + safeConvert = return . fromIntegral++instance Convertible CLDouble Int8 where + safeConvert = boundedConversion (return . truncate)+instance Convertible Int8 CLDouble where + safeConvert = return . fromIntegral++instance Convertible CLDouble Int16 where + safeConvert = boundedConversion (return . truncate)+instance Convertible Int16 CLDouble where + safeConvert = return . fromIntegral++instance Convertible CLDouble Int32 where + safeConvert = boundedConversion (return . truncate)+instance Convertible Int32 CLDouble where + safeConvert = return . fromIntegral++instance Convertible CLDouble Int64 where + safeConvert = boundedConversion (return . truncate)+instance Convertible Int64 CLDouble where + safeConvert = return . fromIntegral++instance Convertible CLDouble Word where + safeConvert = boundedConversion (return . truncate)+instance Convertible Word CLDouble where + safeConvert = return . fromIntegral++instance Convertible CLDouble Word8 where + safeConvert = boundedConversion (return . truncate)+instance Convertible Word8 CLDouble where + safeConvert = return . fromIntegral++instance Convertible CLDouble Word16 where + safeConvert = boundedConversion (return . truncate)+instance Convertible Word16 CLDouble where + safeConvert = return . fromIntegral++instance Convertible CLDouble Word32 where + safeConvert = boundedConversion (return . truncate)+instance Convertible Word32 CLDouble where + safeConvert = return . fromIntegral++instance Convertible CLDouble Word64 where + safeConvert = boundedConversion (return . truncate)+instance Convertible Word64 CLDouble where + safeConvert = return . fromIntegral++-- Section 2+instance Convertible CFloat Double where+ safeConvert = return . realToFrac+instance Convertible Double CFloat where+ safeConvert = return . realToFrac++instance Convertible CFloat Float where+ safeConvert = return . realToFrac+instance Convertible Float CFloat where+ safeConvert = return . realToFrac++instance Convertible CFloat Rational where+ safeConvert = return . realToFrac+instance Convertible Rational CFloat where+ safeConvert = return . realToFrac++instance Convertible CDouble Double where+ safeConvert = return . realToFrac+instance Convertible Double CDouble where+ safeConvert = return . realToFrac++instance Convertible CDouble Float where+ safeConvert = return . realToFrac+instance Convertible Float CDouble where+ safeConvert = return . realToFrac++instance Convertible CDouble Rational where+ safeConvert = return . realToFrac+instance Convertible Rational CDouble where+ safeConvert = return . realToFrac++instance Convertible CLDouble Double where+ safeConvert = return . realToFrac+instance Convertible Double CLDouble where+ safeConvert = return . realToFrac++instance Convertible CLDouble Float where+ safeConvert = return . realToFrac+instance Convertible Float CLDouble where+ safeConvert = return . realToFrac++instance Convertible CLDouble Rational where+ safeConvert = return . realToFrac+instance Convertible Rational CLDouble where+ safeConvert = return . realToFrac++-- Section 3+instance Convertible CChar Int where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int CChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CChar Int8 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int8 CChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CChar Int16 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int16 CChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CChar Int32 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int32 CChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CChar Int64 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int64 CChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CChar Word where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word CChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CChar Word8 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word8 CChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CChar Word16 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word16 CChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CChar Word32 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word32 CChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CChar Word64 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word64 CChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSChar Int where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int CSChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSChar Int8 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int8 CSChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSChar Int16 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int16 CSChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSChar Int32 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int32 CSChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSChar Int64 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int64 CSChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSChar Word where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word CSChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSChar Word8 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word8 CSChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSChar Word16 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word16 CSChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSChar Word32 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word32 CSChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSChar Word64 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word64 CSChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUChar Int where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int CUChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUChar Int8 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int8 CUChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUChar Int16 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int16 CUChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUChar Int32 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int32 CUChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUChar Int64 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int64 CUChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUChar Word where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word CUChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUChar Word8 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word8 CUChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUChar Word16 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word16 CUChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUChar Word32 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word32 CUChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUChar Word64 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word64 CUChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CShort Int where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int CShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CShort Int8 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int8 CShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CShort Int16 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int16 CShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CShort Int32 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int32 CShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CShort Int64 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int64 CShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CShort Word where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word CShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CShort Word8 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word8 CShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CShort Word16 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word16 CShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CShort Word32 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word32 CShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CShort Word64 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word64 CShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUShort Int where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int CUShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUShort Int8 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int8 CUShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUShort Int16 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int16 CUShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUShort Int32 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int32 CUShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUShort Int64 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int64 CUShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUShort Word where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word CUShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUShort Word8 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word8 CUShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUShort Word16 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word16 CUShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUShort Word32 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word32 CUShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUShort Word64 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word64 CUShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CInt Int where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int CInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CInt Int8 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int8 CInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CInt Int16 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int16 CInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CInt Int32 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int32 CInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CInt Int64 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int64 CInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CInt Word where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word CInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CInt Word8 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word8 CInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CInt Word16 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word16 CInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CInt Word32 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word32 CInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CInt Word64 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word64 CInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUInt Int where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int CUInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUInt Int8 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int8 CUInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUInt Int16 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int16 CUInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUInt Int32 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int32 CUInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUInt Int64 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int64 CUInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUInt Word where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word CUInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUInt Word8 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word8 CUInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUInt Word16 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word16 CUInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUInt Word32 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word32 CUInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUInt Word64 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word64 CUInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLong Int where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int CLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLong Int8 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int8 CLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLong Int16 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int16 CLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLong Int32 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int32 CLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLong Int64 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int64 CLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLong Word where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word CLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLong Word8 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word8 CLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLong Word16 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word16 CLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLong Word32 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word32 CLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLong Word64 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word64 CLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULong Int where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int CULong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULong Int8 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int8 CULong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULong Int16 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int16 CULong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULong Int32 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int32 CULong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULong Int64 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int64 CULong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULong Word where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word CULong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULong Word8 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word8 CULong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULong Word16 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word16 CULong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULong Word32 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word32 CULong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULong Word64 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word64 CULong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSize Int where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int CSize where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSize Int8 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int8 CSize where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSize Int16 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int16 CSize where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSize Int32 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int32 CSize where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSize Int64 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int64 CSize where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSize Word where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word CSize where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSize Word8 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word8 CSize where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSize Word16 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word16 CSize where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSize Word32 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word32 CSize where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSize Word64 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word64 CSize where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CWchar Int where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int CWchar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CWchar Int8 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int8 CWchar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CWchar Int16 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int16 CWchar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CWchar Int32 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int32 CWchar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CWchar Int64 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int64 CWchar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CWchar Word where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word CWchar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CWchar Word8 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word8 CWchar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CWchar Word16 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word16 CWchar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CWchar Word32 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word32 CWchar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CWchar Word64 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word64 CWchar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLLong Int where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int CLLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLLong Int8 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int8 CLLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLLong Int16 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int16 CLLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLLong Int32 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int32 CLLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLLong Int64 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int64 CLLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLLong Word where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word CLLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLLong Word8 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word8 CLLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLLong Word16 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word16 CLLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLLong Word32 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word32 CLLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLLong Word64 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word64 CLLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULLong Int where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int CULLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULLong Int8 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int8 CULLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULLong Int16 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int16 CULLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULLong Int32 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int32 CULLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULLong Int64 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Int64 CULLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULLong Word where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word CULLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULLong Word8 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word8 CULLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULLong Word16 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word16 CULLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULLong Word32 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word32 CULLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULLong Word64 where+ safeConvert = boundedConversion (return . fromIntegral)+instance Convertible Word64 CULLong where+ safeConvert = boundedConversion (return . fromIntegral)++-- Section 4+instance Convertible CChar CSChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CChar CUChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CChar CShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CChar CUShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CChar CInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CChar CUInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CChar CLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CChar CULong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CChar CSize where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CChar CWchar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CChar CLLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CChar CULLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSChar CChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSChar CUChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSChar CShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSChar CUShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSChar CInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSChar CUInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSChar CLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSChar CULong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSChar CSize where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSChar CWchar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSChar CLLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSChar CULLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUChar CChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUChar CSChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUChar CShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUChar CUShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUChar CInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUChar CUInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUChar CLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUChar CULong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUChar CSize where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUChar CWchar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUChar CLLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUChar CULLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CShort CChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CShort CSChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CShort CUChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CShort CUShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CShort CInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CShort CUInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CShort CLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CShort CULong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CShort CSize where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CShort CWchar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CShort CLLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CShort CULLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUShort CChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUShort CSChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUShort CUChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUShort CShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUShort CInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUShort CUInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUShort CLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUShort CULong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUShort CSize where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUShort CWchar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUShort CLLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUShort CULLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CInt CChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CInt CSChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CInt CUChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CInt CShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CInt CUShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CInt CUInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CInt CLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CInt CULong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CInt CSize where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CInt CWchar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CInt CLLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CInt CULLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUInt CChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUInt CSChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUInt CUChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUInt CShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUInt CUShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUInt CInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUInt CLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUInt CULong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUInt CSize where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUInt CWchar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUInt CLLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUInt CULLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLong CChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLong CSChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLong CUChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLong CShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLong CUShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLong CInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLong CUInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLong CULong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLong CSize where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLong CWchar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLong CLLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLong CULLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULong CChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULong CSChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULong CUChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULong CShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULong CUShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULong CInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULong CUInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULong CLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULong CSize where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULong CWchar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULong CLLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULong CULLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSize CChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSize CSChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSize CUChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSize CShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSize CUShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSize CInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSize CUInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSize CLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSize CULong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSize CWchar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSize CLLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSize CULLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CWchar CChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CWchar CSChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CWchar CUChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CWchar CShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CWchar CUShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CWchar CInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CWchar CUInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CWchar CLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CWchar CULong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CWchar CSize where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CWchar CLLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CWchar CULLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLLong CChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLLong CSChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLLong CUChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLLong CShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLLong CUShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLLong CInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLLong CUInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLLong CLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLLong CULong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLLong CSize where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLLong CWchar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLLong CULLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULLong CChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULLong CSChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULLong CUChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULLong CShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULLong CUShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULLong CInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULLong CUInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULLong CLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULLong CULong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULLong CSize where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULLong CWchar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULLong CLLong where+ safeConvert = boundedConversion (return . fromIntegral)++-- Section 5+instance Convertible CFloat CDouble where+ safeConvert = return . realToFrac++instance Convertible CFloat CLDouble where+ safeConvert = return . realToFrac++instance Convertible CDouble CFloat where+ safeConvert = return . realToFrac++instance Convertible CDouble CLDouble where+ safeConvert = return . realToFrac++instance Convertible CLDouble CFloat where+ safeConvert = return . realToFrac++instance Convertible CLDouble CDouble where+ safeConvert = return . realToFrac++-- Section 6+instance Convertible CFloat Integer where+ safeConvert = return . truncate+instance Convertible Integer CFloat where+ safeConvert = return . fromIntegral++instance Convertible CDouble Integer where+ safeConvert = return . truncate+instance Convertible Integer CDouble where+ safeConvert = return . fromIntegral++instance Convertible CLDouble Integer where+ safeConvert = return . truncate+instance Convertible Integer CLDouble where+ safeConvert = return . fromIntegral++-- Section 7+instance Convertible CChar Integer where+ safeConvert = return . fromIntegral+instance Convertible Integer CChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSChar Integer where+ safeConvert = return . fromIntegral+instance Convertible Integer CSChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUChar Integer where+ safeConvert = return . fromIntegral+instance Convertible Integer CUChar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CShort Integer where+ safeConvert = return . fromIntegral+instance Convertible Integer CShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUShort Integer where+ safeConvert = return . fromIntegral+instance Convertible Integer CUShort where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CInt Integer where+ safeConvert = return . fromIntegral+instance Convertible Integer CInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CUInt Integer where+ safeConvert = return . fromIntegral+instance Convertible Integer CUInt where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLong Integer where+ safeConvert = return . fromIntegral+instance Convertible Integer CLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULong Integer where+ safeConvert = return . fromIntegral+instance Convertible Integer CULong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CSize Integer where+ safeConvert = return . fromIntegral+instance Convertible Integer CSize where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CWchar Integer where+ safeConvert = return . fromIntegral+instance Convertible Integer CWchar where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CLLong Integer where+ safeConvert = return . fromIntegral+instance Convertible Integer CLLong where+ safeConvert = boundedConversion (return . fromIntegral)++instance Convertible CULLong Integer where+ safeConvert = return . fromIntegral+instance Convertible Integer CULLong where+ safeConvert = boundedConversion (return . fromIntegral)++-- Section 8o+instance Convertible CChar Char where+ safeConvert = boundedConversion (return . toEnum . fromIntegral)+instance Convertible Char CChar where+ safeConvert = boundedConversion (return . fromIntegral . fromEnum)++instance Convertible CSChar Char where+ safeConvert = boundedConversion (return . toEnum . fromIntegral)+instance Convertible Char CSChar where+ safeConvert = boundedConversion (return . fromIntegral . fromEnum)++instance Convertible CUChar Char where+ safeConvert = boundedConversion (return . toEnum . fromIntegral)+instance Convertible Char CUChar where+ safeConvert = boundedConversion (return . fromIntegral . fromEnum)++instance Convertible CShort Char where+ safeConvert = boundedConversion (return . toEnum . fromIntegral)+instance Convertible Char CShort where+ safeConvert = boundedConversion (return . fromIntegral . fromEnum)++instance Convertible CUShort Char where+ safeConvert = boundedConversion (return . toEnum . fromIntegral)+instance Convertible Char CUShort where+ safeConvert = boundedConversion (return . fromIntegral . fromEnum)++instance Convertible CInt Char where+ safeConvert = boundedConversion (return . toEnum . fromIntegral)+instance Convertible Char CInt where+ safeConvert = boundedConversion (return . fromIntegral . fromEnum)++instance Convertible CUInt Char where+ safeConvert = boundedConversion (return . toEnum . fromIntegral)+instance Convertible Char CUInt where+ safeConvert = boundedConversion (return . fromIntegral . fromEnum)++instance Convertible CLong Char where+ safeConvert = boundedConversion (return . toEnum . fromIntegral)+instance Convertible Char CLong where+ safeConvert = boundedConversion (return . fromIntegral . fromEnum)++instance Convertible CULong Char where+ safeConvert = boundedConversion (return . toEnum . fromIntegral)+instance Convertible Char CULong where+ safeConvert = boundedConversion (return . fromIntegral . fromEnum)++instance Convertible CSize Char where+ safeConvert = boundedConversion (return . toEnum . fromIntegral)+instance Convertible Char CSize where+ safeConvert = boundedConversion (return . fromIntegral . fromEnum)++instance Convertible CWchar Char where+ safeConvert = boundedConversion (return . toEnum . fromIntegral)+instance Convertible Char CWchar where+ safeConvert = boundedConversion (return . fromIntegral . fromEnum)++instance Convertible CLLong Char where+ safeConvert = boundedConversion (return . toEnum . fromIntegral)+instance Convertible Char CLLong where+ safeConvert = boundedConversion (return . fromIntegral . fromEnum)++instance Convertible CULLong Char where+ safeConvert = boundedConversion (return . toEnum . fromIntegral)+instance Convertible Char CULLong where+ safeConvert = boundedConversion (return . fromIntegral . fromEnum)+
Data/Convertible/Instances/Num.hs view
@@ -575,9 +575,9 @@ safeConvert = return . truncate instance Convertible Float Double where- safeConvert = return . fromRational . toRational+ safeConvert = return . realToFrac instance Convertible Double Float where- safeConvert = return . fromRational . toRational+ safeConvert = return . realToFrac instance Convertible Float Rational where safeConvert = return . toRational instance Convertible Rational Float where
Data/Convertible/Instances/Time.hs view
@@ -34,6 +34,7 @@ import Data.Time.Calendar.OrdinalDate import Data.Typeable import Data.Ratio+import Foreign.C.Types ---------------------------------------------------------------------- -- Intra-System.Time stuff@@ -75,14 +76,14 @@ instance Convertible Int POSIXTime where safeConvert = return . fromIntegral instance Convertible Double POSIXTime where- safeConvert = return . fromRational . toRational+ safeConvert = return . realToFrac instance Convertible POSIXTime Integer where safeConvert = return . truncate instance Convertible POSIXTime Rational where safeConvert = return . toRational instance Convertible POSIXTime Double where- safeConvert = return . fromRational . toRational+ safeConvert = return . realToFrac instance Convertible POSIXTime Int where safeConvert = boundedConversion (return . truncate) @@ -150,26 +151,23 @@ } instance Convertible ST.CalendarTime POSIXTime where- safeConvert a = do r <- (safeConvert a)::ConvertResult ST.ClockTime- safeConvert r+ safeConvert = convertVia (undefined::ST.ClockTime) instance Convertible ST.CalendarTime UTCTime where- safeConvert a = do r <- (safeConvert a)::ConvertResult POSIXTime- safeConvert r+ safeConvert = convertVia (undefined::POSIXTime) instance Convertible ST.ClockTime POSIXTime where safeConvert (ST.TOD x y) = return $ fromRational $ - fromInteger x `plusorminus` fromRational (y % 1000000000000)- where plusorminus = if x < 0 then (-) else (+)+ fromInteger x + fromRational (y % 1000000000000) instance Convertible ST.ClockTime UTCTime where- safeConvert a = do r <- (safeConvert a)::ConvertResult POSIXTime- safeConvert r+ safeConvert = convertVia (undefined::POSIXTime) instance Convertible ST.ClockTime ZonedTime where- safeConvert a = do r <- (safeConvert a)::ConvertResult UTCTime- safeConvert r+ safeConvert = convertVia (undefined::UTCTime)+instance Convertible ZonedTime ST.ClockTime where+ safeConvert = convertVia (undefined::POSIXTime) instance Convertible POSIXTime ST.ClockTime where safeConvert x = return $ ST.TOD rsecs rpico- where rsecs = (truncate x :: Integer)+ where rsecs = floor x rpico = truncate $ abs $ 1000000000000 * (x - (fromIntegral rsecs)) instance Convertible UTCTime ST.ClockTime where safeConvert = safeConvert . utcTimeToPOSIXSeconds@@ -182,9 +180,9 @@ ST.ctHour = todHour ltod, ST.ctMin = todMin ltod, ST.ctSec = secs,- ST.ctPicosec = truncate $ (((toRational (todSec ltod) - (toRational secs)) * 1000000000000)::Rational),+ ST.ctPicosec = pico, ST.ctWDay = toEnum . snd . sundayStartWeek . localDay . zonedTimeToLocalTime $ zt,- ST.ctYDay = snd . toOrdinalDate . localDay . zonedTimeToLocalTime $ zt,+ ST.ctYDay = (snd . toOrdinalDate . localDay . zonedTimeToLocalTime $ zt) - 1, ST.ctTZName = timeZoneName . zonedTimeZone $ zt, ST.ctTZ = (timeZoneMinutes . zonedTimeZone $ zt) * 60, ST.ctIsDST = timeZoneSummerOnly . zonedTimeZone $ zt@@ -192,9 +190,10 @@ where (year, month, day) = toGregorian . localDay . zonedTimeToLocalTime $ zt ltod = localTimeOfDay . zonedTimeToLocalTime $ zt secs = (truncate . todSec $ ltod)::Int+ picoRational = toRational (todSec ltod) - toRational secs+ pico = truncate (picoRational * 1000000000000) instance Convertible POSIXTime ST.CalendarTime where- safeConvert pt = do r <- (safeConvert pt)::ConvertResult ZonedTime- safeConvert r+ safeConvert = convertVia (undefined::ZonedTime) instance Convertible UTCTime ST.CalendarTime where safeConvert = safeConvert . utcTimeToPOSIXSeconds @@ -210,3 +209,55 @@ safeConvert ndt = do clockt <- safeConvert ndt return (ST.diffClockTimes clockt (ST.TOD 0 0))++instance Convertible Integer ST.TimeDiff where+ safeConvert = convertVia (undefined::NominalDiffTime)+instance Convertible ST.TimeDiff Integer where+ safeConvert = convertVia (undefined :: NominalDiffTime)+instance Convertible ST.TimeDiff Rational where+ safeConvert = convertVia (undefined :: NominalDiffTime)++----------------------------------------------------------------------+-- Foreign.C Types+----------------------------------------------------------------------++instance Convertible CTime POSIXTime where+ safeConvert = return . realToFrac+instance Convertible POSIXTime CTime where+ safeConvert = return . fromInteger . truncate++instance Convertible CTime Integer where+ safeConvert = return . truncate . toRational+instance Convertible Integer CTime where+ safeConvert = return . fromInteger++instance Convertible CTime Double where+ safeConvert = return . realToFrac+instance Convertible Double CTime where+ safeConvert = return . fromInteger . truncate++instance Convertible CTime Int where+ safeConvert x = do r1 <- safeConvert x+ boundedConversion (return . fromInteger) r1+instance Convertible Int CTime where+ safeConvert = safeConvert . toInteger++instance Convertible CTime UTCTime where+ safeConvert = convertVia (undefined :: POSIXTime)+instance Convertible UTCTime CTime where+ safeConvert = convertVia (undefined :: POSIXTime)++instance Convertible CTime ST.ClockTime where+ safeConvert = convertVia (undefined :: POSIXTime)+instance Convertible ST.ClockTime CTime where+ safeConvert = convertVia (undefined :: POSIXTime)++instance Convertible CTime ST.CalendarTime where+ safeConvert = convertVia (undefined::POSIXTime)+instance Convertible ST.CalendarTime CTime where+ safeConvert = convertVia (undefined::POSIXTime)++instance Convertible CTime ZonedTime where+ safeConvert = convertVia (undefined::POSIXTime)+instance Convertible ZonedTime CTime where+ safeConvert = convertVia (undefined::POSIXTime)
Data/Convertible/Utils.hs view
@@ -19,7 +19,8 @@ -} module Data.Convertible.Utils(boundedConversion,- mkTypeName+ mkTypeName,+ convertVia ) where import Data.Convertible.Base@@ -48,5 +49,33 @@ inp else return result +{- | Useful for defining 'Typeable' instances. Example:++>instance Typeable TimeOfDay where+> typeOf _ = mkTypeName "TimeOfDay"+-} mkTypeName :: String -> TypeRep mkTypeName name = mkTyConApp (mkTyCon name) []++{- | Useful for defining conversions that are implemented in terms of other+conversions via an intermediary type. Instead of:++>instance Convertible CalendarTime POSIXTime where+> safeConvert a = do r <- safeConvert a+> safeConvert (r :: ClockTime)++we can now write:++>instance Convertible CalendarTime POSIXTime where+> safeConvert = convertVia (undefined::ClockTime)++which does the same thing -- converts a CalendarTime to a ClockTime, then a+ClockTime to a POSIXTime, both using existing 'Convertible' instances.+ -}+convertVia :: (Convertible a b, Convertible b c) =>+ b -- ^ Dummy data to establish intermediate type - can be undefined+ -> a -- ^ Input value+ -> ConvertResult c -- ^ Result+convertVia dummy inp =+ do r1 <- safeConvert inp+ safeConvert (asTypeOf r1 dummy)
convertible.cabal view
@@ -1,11 +1,11 @@ Name: convertible-Version: 1.0.0+Version: 1.0.1 License: LGPL Maintainer: John Goerzen <jgoerzen@complete.org> Author: John Goerzen Copyright: Copyright (c) 2009-2009 John Goerzen license-file: COPYRIGHT-extra-source-files: COPYING+extra-source-files: COPYING, utils/genCinstances.hs homepage: http://hackage.haskell.org/cgi-bin/hackage-scripts/package/convertible Category: Data synopsis: Typeclasses and instances for converting between types@@ -25,7 +25,7 @@ implemented in terms of the safer function described above. . Convertible is also used by HDBC 2.0 for handling marshalling of- data to/from databases.+ data to and from databases. . Convertible is backed by an extensive test suite and passes tests on GHC and Hugs.@@ -53,6 +53,7 @@ Data.Convertible.Base, Data.Convertible.Utils, Data.Convertible.Instances,+ Data.Convertible.Instances.C, Data.Convertible.Instances.Map, Data.Convertible.Instances.Num, Data.Convertible.Instances.Time
+ utils/genCinstances.hs view
@@ -0,0 +1,66 @@+cint = ["CChar", "CSChar", "CUChar", "CShort", "CUShort", "CInt", "CUInt", "CLong",+ "CULong", "CSize", "CWchar", "CLLong", "CULLong"]+cfloat = ["CFloat", "CDouble", "CLDouble"]+hsint = ["Int", "Int8", "Int16", "Int32", "Int64", "Word", "Word8", "Word16", "Word32",+ "Word64"]+hsfloat = ["Double", "Float", "Rational"]++printFP (f, i) = + "instance Convertible " ++ f ++ " " ++ i ++ " where \n\+ \ safeConvert = boundedConversion (return . truncate)\n\+ \instance Convertible " ++ i ++ " " ++ f ++ " where \n\+ \ safeConvert = return . fromIntegral\n"++printIntegerF f =+ "instance Convertible " ++ f ++ " Integer where\n\+ \ safeConvert = return . truncate\n\+ \instance Convertible Integer " ++ f ++ " where\n\+ \ safeConvert = return . fromIntegral\n"++printIntegerI i =+ "instance Convertible " ++ i ++ " Integer where\n\+ \ safeConvert = return . fromIntegral\n\+ \instance Convertible Integer " ++ i ++ " where\n\+ \ safeConvert = boundedConversion (return . fromIntegral)\n"++printCharI i =+ "instance Convertible " ++ i ++ " Char where\n\+ \ safeConvert = boundedConversion (return . toEnum . fromIntegral)\n\+ \instance Convertible Char " ++ i ++ " where\n\+ \ safeConvert = boundedConversion (return . fromIntegral . fromEnum)\n"++printFP1 (f1, f2) = + "instance Convertible " ++ f1 ++ " " ++ f2 ++ " where\n\+ \ safeConvert = return . realToFrac\n"++printFPFP (f1, f2) = printFP1 (f1, f2) ++ printFP1 (f2, f1)++printInt (i1, i2) =+ "instance Convertible " ++ i1 ++ " " ++ i2 ++ " where\n\+ \ safeConvert = boundedConversion (return . fromIntegral)\n"++printIntInt (i1, i2) = printInt (i1, i2) ++ printInt (i2, i1)++main = do putStrLn "-- Section 1"+ mapM_ (putStrLn . printFP) (concatMap (\x -> map (\y -> (x, y)) hsint) cfloat)+ putStrLn "-- Section 2"+ mapM_ (putStrLn . printFPFP) (concatMap (\x -> map (\y -> (x, y)) hsfloat) cfloat)+ putStrLn "-- Section 3"+ mapM_ (putStrLn . printIntInt) (concatMap (\x -> map (\y -> (x, y)) hsint) cint)+ putStrLn "-- Section 4"+ mapM_ (putStrLn . printInt) . filter (\(a, b) -> a /= b) $ + (concatMap (\x -> map (\y -> (x, y)) cint) cint)+ putStrLn "-- Section 5"+ mapM_ (putStrLn . printFP1) . filter (\(a, b) -> a /= b) $+ (concatMap (\x -> map (\y -> (x, y)) cfloat) cfloat)+ putStrLn "-- Section 6"+ mapM_ (putStrLn . printIntegerF) cfloat+ putStrLn "-- Section 7"+ mapM_ (putStrLn . printIntegerI) cint+ putStrLn "-- Section 8o"+ mapM_ (putStrLn . printCharI) cint+++++