{-# LINE 1 "src/XlsxWriter/Common.chs" #-}
{-# LANGUAGE ForeignFunctionInterface #-}
module XlsxWriter.Common where
import qualified Foreign.C.Types as C2HSImp
import qualified Foreign.Ptr as C2HSImp
import qualified Foreign.Storable as C2HSImp
import Foreign
import Foreign.C
import Control.Monad (liftM)
type Row = (C2HSImp.CUInt)
{-# LINE 12 "src/XlsxWriter/Common.chs" #-}
type Col = (C2HSImp.CUShort)
{-# LINE 16 "src/XlsxWriter/Common.chs" #-}
data DateTime = DateTime
{ DateTime -> Int
dtYear :: Int,
DateTime -> Int
dtMonth :: Int,
DateTime -> Int
dtDay :: Int,
DateTime -> Int
dtHour :: Int,
DateTime -> Int
dtMin :: Int,
DateTime -> Double
dtSec :: Double
} deriving Int -> DateTime -> ShowS
[DateTime] -> ShowS
DateTime -> String
(Int -> DateTime -> ShowS)
-> (DateTime -> String) -> ([DateTime] -> ShowS) -> Show DateTime
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DateTime] -> ShowS
$cshowList :: [DateTime] -> ShowS
show :: DateTime -> String
$cshow :: DateTime -> String
showsPrec :: Int -> DateTime -> ShowS
$cshowsPrec :: Int -> DateTime -> ShowS
Show
instance Storable DateTime where
sizeOf :: DateTime -> Int
sizeOf DateTime
_ = Int
32
{-# LINE 35 "src/XlsxWriter/Common.chs" #-}
alignment _ = 8
{-# LINE 36 "src/XlsxWriter/Common.chs" #-}
peek p = DateTime
<$> liftM fromIntegral ((\ptr -> do {C2HSImp.peekByteOff ptr 0 :: IO C2HSImp.CInt}) p)
<*> liftM fromIntegral ((\ptr -> do {C2HSImp.peekByteOff ptr 4 :: IO C2HSImp.CInt}) p)
<*> liftM fromIntegral ((\ptr -> do {C2HSImp.peekByteOff ptr 8 :: IO C2HSImp.CInt}) p)
<*> liftM fromIntegral ((\ptr -> do {C2HSImp.peekByteOff ptr 12 :: IO C2HSImp.CInt}) p)
<*> liftM fromIntegral ((\ptr -> do {C2HSImp.peekByteOff ptr 16 :: IO C2HSImp.CInt}) p)
<*> ((\ptr -> do {C2HSImp.peekByteOff ptr 24 :: IO C2HSImp.CDouble}) p >>= \(CDouble dbl) -> pure dbl)
poke :: Ptr DateTime -> DateTime -> IO ()
poke Ptr DateTime
p DateTime
x = do
(\Ptr DateTime
ptr CInt
val -> do {Ptr DateTime -> Int -> CInt -> IO ()
forall a b. Storable a => Ptr b -> Int -> a -> IO ()
C2HSImp.pokeByteOff Ptr DateTime
ptr Int
0 (CInt
val :: C2HSImp.CInt)}) Ptr DateTime
p (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CInt) -> Int -> CInt
forall a b. (a -> b) -> a -> b
$ DateTime -> Int
dtYear DateTime
x)
(\Ptr DateTime
ptr CInt
val -> do {Ptr DateTime -> Int -> CInt -> IO ()
forall a b. Storable a => Ptr b -> Int -> a -> IO ()
C2HSImp.pokeByteOff Ptr DateTime
ptr Int
4 (CInt
val :: C2HSImp.CInt)}) Ptr DateTime
p (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CInt) -> Int -> CInt
forall a b. (a -> b) -> a -> b
$ DateTime -> Int
dtMonth DateTime
x)
(\Ptr DateTime
ptr CInt
val -> do {Ptr DateTime -> Int -> CInt -> IO ()
forall a b. Storable a => Ptr b -> Int -> a -> IO ()
C2HSImp.pokeByteOff Ptr DateTime
ptr Int
8 (CInt
val :: C2HSImp.CInt)}) Ptr DateTime
p (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CInt) -> Int -> CInt
forall a b. (a -> b) -> a -> b
$ DateTime -> Int
dtDay DateTime
x)
(\Ptr DateTime
ptr CInt
val -> do {Ptr DateTime -> Int -> CInt -> IO ()
forall a b. Storable a => Ptr b -> Int -> a -> IO ()
C2HSImp.pokeByteOff Ptr DateTime
ptr Int
12 (CInt
val :: C2HSImp.CInt)}) Ptr DateTime
p (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CInt) -> Int -> CInt
forall a b. (a -> b) -> a -> b
$ DateTime -> Int
dtHour DateTime
x)
(\Ptr DateTime
ptr CInt
val -> do {Ptr DateTime -> Int -> CInt -> IO ()
forall a b. Storable a => Ptr b -> Int -> a -> IO ()
C2HSImp.pokeByteOff Ptr DateTime
ptr Int
16 (CInt
val :: C2HSImp.CInt)}) Ptr DateTime
p (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CInt) -> Int -> CInt
forall a b. (a -> b) -> a -> b
$ DateTime -> Int
dtMin DateTime
x)
(\Ptr DateTime
ptr CDouble
val -> do {Ptr DateTime -> Int -> CDouble -> IO ()
forall a b. Storable a => Ptr b -> Int -> a -> IO ()
C2HSImp.pokeByteOff Ptr DateTime
ptr Int
24 (CDouble
val :: C2HSImp.CDouble)}) Ptr DateTime
p (Double -> CDouble
CDouble (Double -> CDouble) -> Double -> CDouble
forall a b. (a -> b) -> a -> b
$ DateTime -> Double
dtSec DateTime
x)
type DateTimePtr = C2HSImp.Ptr (DateTime)
{-# LINE 52 "src/XlsxWriter/Common.chs" #-}
data Error = LxwNoError
| LxwErrorMemoryMallocFailed
| LxwErrorCreatingXlsxFile
| LxwErrorCreatingTmpfile
| LxwErrorReadingTmpfile
| LxwErrorZipFileOperation
| LxwErrorZipParameterError
| LxwErrorZipBadZipFile
| LxwErrorZipInternalError
| LxwErrorZipFileAdd
| LxwErrorZipClose
| LxwErrorFeatureNotSupported
| LxwErrorNullParameterIgnored
| LxwErrorParameterValidation
| LxwErrorSheetnameLengthExceeded
| LxwErrorInvalidSheetnameCharacter
| LxwErrorSheetnameStartEndApostrophe
| LxwErrorSheetnameAlreadyUsed
| LxwError32StringLengthExceeded
| LxwError128StringLengthExceeded
| LxwError255StringLengthExceeded
| LxwErrorMaxStringLengthExceeded
| LxwErrorSharedStringIndexNotFound
| LxwErrorWorksheetIndexOutOfRange
| LxwErrorWorksheetMaxUrlLengthExceeded
| LxwErrorWorksheetMaxNumberUrlsExceeded
| LxwErrorImageDimensions
| LxwMaxErrno
deriving (Int -> Error -> ShowS
[Error] -> ShowS
Error -> String
(Int -> Error -> ShowS)
-> (Error -> String) -> ([Error] -> ShowS) -> Show Error
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Error] -> ShowS
$cshowList :: [Error] -> ShowS
show :: Error -> String
$cshow :: Error -> String
showsPrec :: Int -> Error -> ShowS
$cshowsPrec :: Int -> Error -> ShowS
Show,Error -> Error -> Bool
(Error -> Error -> Bool) -> (Error -> Error -> Bool) -> Eq Error
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Error -> Error -> Bool
$c/= :: Error -> Error -> Bool
== :: Error -> Error -> Bool
$c== :: Error -> Error -> Bool
Eq)
instance Enum Error where
succ :: Error -> Error
succ Error
LxwNoError = Error
LxwErrorMemoryMallocFailed
succ Error
LxwErrorMemoryMallocFailed = Error
LxwErrorCreatingXlsxFile
succ Error
LxwErrorCreatingXlsxFile = Error
LxwErrorCreatingTmpfile
succ Error
LxwErrorCreatingTmpfile = Error
LxwErrorReadingTmpfile
succ Error
LxwErrorReadingTmpfile = Error
LxwErrorZipFileOperation
succ Error
LxwErrorZipFileOperation = Error
LxwErrorZipParameterError
succ Error
LxwErrorZipParameterError = Error
LxwErrorZipBadZipFile
succ Error
LxwErrorZipBadZipFile = Error
LxwErrorZipInternalError
succ Error
LxwErrorZipInternalError = Error
LxwErrorZipFileAdd
succ Error
LxwErrorZipFileAdd = Error
LxwErrorZipClose
succ Error
LxwErrorZipClose = Error
LxwErrorFeatureNotSupported
succ Error
LxwErrorFeatureNotSupported = Error
LxwErrorNullParameterIgnored
succ Error
LxwErrorNullParameterIgnored = Error
LxwErrorParameterValidation
succ Error
LxwErrorParameterValidation = Error
LxwErrorSheetnameLengthExceeded
succ Error
LxwErrorSheetnameLengthExceeded = Error
LxwErrorInvalidSheetnameCharacter
succ Error
LxwErrorInvalidSheetnameCharacter = Error
LxwErrorSheetnameStartEndApostrophe
succ Error
LxwErrorSheetnameStartEndApostrophe = Error
LxwErrorSheetnameAlreadyUsed
succ Error
LxwErrorSheetnameAlreadyUsed = Error
LxwError32StringLengthExceeded
succ Error
LxwError32StringLengthExceeded = Error
LxwError128StringLengthExceeded
succ Error
LxwError128StringLengthExceeded = Error
LxwError255StringLengthExceeded
succ Error
LxwError255StringLengthExceeded = Error
LxwErrorMaxStringLengthExceeded
succ Error
LxwErrorMaxStringLengthExceeded = Error
LxwErrorSharedStringIndexNotFound
succ Error
LxwErrorSharedStringIndexNotFound = Error
LxwErrorWorksheetIndexOutOfRange
succ Error
LxwErrorWorksheetIndexOutOfRange = Error
LxwErrorWorksheetMaxUrlLengthExceeded
succ Error
LxwErrorWorksheetMaxUrlLengthExceeded = Error
LxwErrorWorksheetMaxNumberUrlsExceeded
succ Error
LxwErrorWorksheetMaxNumberUrlsExceeded = Error
LxwErrorImageDimensions
succ Error
LxwErrorImageDimensions = Error
LxwMaxErrno
succ Error
LxwMaxErrno = String -> Error
forall a. HasCallStack => String -> a
error String
"Error.succ: LxwMaxErrno has no successor"
pred :: Error -> Error
pred Error
LxwErrorMemoryMallocFailed = Error
LxwNoError
pred Error
LxwErrorCreatingXlsxFile = Error
LxwErrorMemoryMallocFailed
pred Error
LxwErrorCreatingTmpfile = Error
LxwErrorCreatingXlsxFile
pred Error
LxwErrorReadingTmpfile = Error
LxwErrorCreatingTmpfile
pred Error
LxwErrorZipFileOperation = Error
LxwErrorReadingTmpfile
pred Error
LxwErrorZipParameterError = Error
LxwErrorZipFileOperation
pred Error
LxwErrorZipBadZipFile = Error
LxwErrorZipParameterError
pred Error
LxwErrorZipInternalError = Error
LxwErrorZipBadZipFile
pred Error
LxwErrorZipFileAdd = Error
LxwErrorZipInternalError
pred Error
LxwErrorZipClose = Error
LxwErrorZipFileAdd
pred Error
LxwErrorFeatureNotSupported = Error
LxwErrorZipClose
pred Error
LxwErrorNullParameterIgnored = Error
LxwErrorFeatureNotSupported
pred Error
LxwErrorParameterValidation = Error
LxwErrorNullParameterIgnored
pred Error
LxwErrorSheetnameLengthExceeded = Error
LxwErrorParameterValidation
pred Error
LxwErrorInvalidSheetnameCharacter = Error
LxwErrorSheetnameLengthExceeded
pred Error
LxwErrorSheetnameStartEndApostrophe = Error
LxwErrorInvalidSheetnameCharacter
pred Error
LxwErrorSheetnameAlreadyUsed = Error
LxwErrorSheetnameStartEndApostrophe
pred Error
LxwError32StringLengthExceeded = Error
LxwErrorSheetnameAlreadyUsed
pred Error
LxwError128StringLengthExceeded = Error
LxwError32StringLengthExceeded
pred Error
LxwError255StringLengthExceeded = Error
LxwError128StringLengthExceeded
pred Error
LxwErrorMaxStringLengthExceeded = Error
LxwError255StringLengthExceeded
pred Error
LxwErrorSharedStringIndexNotFound = Error
LxwErrorMaxStringLengthExceeded
pred Error
LxwErrorWorksheetIndexOutOfRange = Error
LxwErrorSharedStringIndexNotFound
pred Error
LxwErrorWorksheetMaxUrlLengthExceeded = Error
LxwErrorWorksheetIndexOutOfRange
pred Error
LxwErrorWorksheetMaxNumberUrlsExceeded = Error
LxwErrorWorksheetMaxUrlLengthExceeded
pred Error
LxwErrorImageDimensions = Error
LxwErrorWorksheetMaxNumberUrlsExceeded
pred Error
LxwMaxErrno = Error
LxwErrorImageDimensions
pred Error
LxwNoError = String -> Error
forall a. HasCallStack => String -> a
error String
"Error.pred: LxwNoError has no predecessor"
enumFromTo :: Error -> Error -> [Error]
enumFromTo Error
from Error
to = Error -> [Error]
forall t. Enum t => t -> [t]
go Error
from
where
end :: Int
end = Error -> Int
forall a. Enum a => a -> Int
fromEnum Error
to
go :: t -> [t]
go t
v = case Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (t -> Int
forall a. Enum a => a -> Int
fromEnum t
v) Int
end of
Ordering
LT -> t
v t -> [t] -> [t]
forall a. a -> [a] -> [a]
: t -> [t]
go (t -> t
forall a. Enum a => a -> a
succ t
v)
Ordering
EQ -> [t
v]
Ordering
GT -> []
enumFrom :: Error -> [Error]
enumFrom Error
from = Error -> Error -> [Error]
forall a. Enum a => a -> a -> [a]
enumFromTo Error
from Error
LxwMaxErrno
fromEnum :: Error -> Int
fromEnum Error
LxwNoError = Int
0
fromEnum Error
LxwErrorMemoryMallocFailed = Int
1
fromEnum Error
LxwErrorCreatingXlsxFile = Int
2
fromEnum Error
LxwErrorCreatingTmpfile = Int
3
fromEnum Error
LxwErrorReadingTmpfile = Int
4
fromEnum Error
LxwErrorZipFileOperation = Int
5
fromEnum Error
LxwErrorZipParameterError = Int
6
fromEnum Error
LxwErrorZipBadZipFile = Int
7
fromEnum Error
LxwErrorZipInternalError = Int
8
fromEnum Error
LxwErrorZipFileAdd = Int
9
fromEnum Error
LxwErrorZipClose = Int
10
fromEnum Error
LxwErrorFeatureNotSupported = Int
11
fromEnum Error
LxwErrorNullParameterIgnored = Int
12
fromEnum Error
LxwErrorParameterValidation = Int
13
fromEnum Error
LxwErrorSheetnameLengthExceeded = Int
14
fromEnum Error
LxwErrorInvalidSheetnameCharacter = Int
15
fromEnum Error
LxwErrorSheetnameStartEndApostrophe = Int
16
fromEnum Error
LxwErrorSheetnameAlreadyUsed = Int
17
fromEnum Error
LxwError32StringLengthExceeded = Int
18
fromEnum Error
LxwError128StringLengthExceeded = Int
19
fromEnum Error
LxwError255StringLengthExceeded = Int
20
fromEnum Error
LxwErrorMaxStringLengthExceeded = Int
21
fromEnum Error
LxwErrorSharedStringIndexNotFound = Int
22
fromEnum Error
LxwErrorWorksheetIndexOutOfRange = Int
23
fromEnum Error
LxwErrorWorksheetMaxUrlLengthExceeded = Int
24
fromEnum Error
LxwErrorWorksheetMaxNumberUrlsExceeded = Int
25
fromEnum Error
LxwErrorImageDimensions = Int
26
fromEnum Error
LxwMaxErrno = Int
27
toEnum :: Int -> Error
toEnum Int
0 = Error
LxwNoError
toEnum Int
1 = Error
LxwErrorMemoryMallocFailed
toEnum Int
2 = Error
LxwErrorCreatingXlsxFile
toEnum Int
3 = Error
LxwErrorCreatingTmpfile
toEnum Int
4 = Error
LxwErrorReadingTmpfile
toEnum Int
5 = Error
LxwErrorZipFileOperation
toEnum Int
6 = Error
LxwErrorZipParameterError
toEnum Int
7 = Error
LxwErrorZipBadZipFile
toEnum Int
8 = Error
LxwErrorZipInternalError
toEnum Int
9 = Error
LxwErrorZipFileAdd
toEnum Int
10 = Error
LxwErrorZipClose
toEnum Int
11 = Error
LxwErrorFeatureNotSupported
toEnum Int
12 = Error
LxwErrorNullParameterIgnored
toEnum Int
13 = Error
LxwErrorParameterValidation
toEnum Int
14 = Error
LxwErrorSheetnameLengthExceeded
toEnum Int
15 = Error
LxwErrorInvalidSheetnameCharacter
toEnum Int
16 = Error
LxwErrorSheetnameStartEndApostrophe
toEnum Int
17 = Error
LxwErrorSheetnameAlreadyUsed
toEnum Int
18 = Error
LxwError32StringLengthExceeded
toEnum Int
19 = Error
LxwError128StringLengthExceeded
toEnum Int
20 = Error
LxwError255StringLengthExceeded
toEnum Int
21 = Error
LxwErrorMaxStringLengthExceeded
toEnum Int
22 = Error
LxwErrorSharedStringIndexNotFound
toEnum Int
23 = Error
LxwErrorWorksheetIndexOutOfRange
toEnum Int
24 = Error
LxwErrorWorksheetMaxUrlLengthExceeded
toEnum Int
25 = Error
LxwErrorWorksheetMaxNumberUrlsExceeded
toEnum Int
26 = Error
LxwErrorImageDimensions
toEnum Int
27 = Error
LxwMaxErrno
toEnum Int
unmatched = String -> Error
forall a. HasCallStack => String -> a
error (String
"Error.toEnum: Cannot match " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Int -> String
forall a. Show a => a -> String
show Int
unmatched)
{-# LINE 54 "src/XlsxWriter/Common.chs" #-}
{-# LINE 55 "src/XlsxWriter/Common.chs" #-}