{-# LINE 1 "src/XlsxWriter/Workbook.chs" #-}
{-# LANGUAGE ForeignFunctionInterface #-}
module XlsxWriter.Workbook where
import qualified Foreign.C.Types as C2HSImp
import qualified Foreign.Ptr as C2HSImp
import qualified Foreign.Storable as C2HSImp
import Data.Foldable
import Foreign
import Foreign.C
import Data.ByteString
import XlsxWriter.Common
{-# LINE 11 "src/XlsxWriter/Workbook.chs" #-}
import XlsxWriter.Format
{-# LINE 12 "src/XlsxWriter/Workbook.chs" #-}
import XlsxWriter.Worksheet
{-# LINE 15 "src/XlsxWriter/Workbook.chs" #-}
data Workbook_struct
type Workbook = C2HSImp.Ptr (Workbook_struct)
{-# LINE 21 "src/XlsxWriter/Workbook.chs" #-}
data WorkbookOptions = WorkbookOptions
{ WorkbookOptions -> Bool
woConstantMemory :: Bool,
WorkbookOptions -> Maybe ByteString
woTmpdir :: Maybe ByteString,
WorkbookOptions -> Bool
woUseZip64 :: Bool
}
deriving (Int -> WorkbookOptions -> ShowS
[WorkbookOptions] -> ShowS
WorkbookOptions -> String
(Int -> WorkbookOptions -> ShowS)
-> (WorkbookOptions -> String)
-> ([WorkbookOptions] -> ShowS)
-> Show WorkbookOptions
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [WorkbookOptions] -> ShowS
$cshowList :: [WorkbookOptions] -> ShowS
show :: WorkbookOptions -> String
$cshow :: WorkbookOptions -> String
showsPrec :: Int -> WorkbookOptions -> ShowS
$cshowsPrec :: Int -> WorkbookOptions -> ShowS
Show)
instance Storable WorkbookOptions where
sizeOf :: WorkbookOptions -> Int
sizeOf WorkbookOptions
_ = Int
24
{-# LINE 31 "src/XlsxWriter/Workbook.chs" #-}
alignment _ = 8
{-# LINE 32 "src/XlsxWriter/Workbook.chs" #-}
peek p = do
constMem <- (/= 0) <$> (\ptr -> do {C2HSImp.peekByteOff ptr 0 :: IO C2HSImp.CUChar}) p
tmpdir <-
(\ptr -> do {C2HSImp.peekByteOff ptr 8 :: IO (C2HSImp.Ptr C2HSImp.CChar)}) p
>>= \ptr -> if ptr == nullPtr then pure Nothing else (Just <$> packCString ptr)
useZip64 <- (/= 0) <$> (\ptr -> do {C2HSImp.peekByteOff ptr 16 :: IO C2HSImp.CUChar}) p
pure $ WorkbookOptions constMem tmpdir useZip64
poke :: Ptr WorkbookOptions -> WorkbookOptions -> IO ()
poke Ptr WorkbookOptions
p WorkbookOptions
x = do
(\Ptr WorkbookOptions
ptr CUChar
val -> do {Ptr WorkbookOptions -> Int -> CUChar -> IO ()
forall a b. Storable a => Ptr b -> Int -> a -> IO ()
C2HSImp.pokeByteOff Ptr WorkbookOptions
ptr Int
0 (CUChar
val :: C2HSImp.CUChar)}) Ptr WorkbookOptions
p (CUChar -> IO ()) -> CUChar -> IO ()
forall a b. (a -> b) -> a -> b
$
if WorkbookOptions -> Bool
woConstantMemory WorkbookOptions
x then CUChar
1 else CUChar
0
Maybe ByteString -> (ByteString -> IO ()) -> IO ()
forall (t :: * -> *) (f :: * -> *) a b.
(Foldable t, Applicative f) =>
t a -> (a -> f b) -> f ()
for_ (WorkbookOptions -> Maybe ByteString
woTmpdir WorkbookOptions
x) ((ByteString -> IO ()) -> IO ()) -> (ByteString -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \ByteString
dir -> ByteString -> (Ptr CChar -> IO ()) -> IO ()
forall a. ByteString -> (Ptr CChar -> IO a) -> IO a
useAsCString ByteString
dir ((Ptr CChar -> IO ()) -> IO ()) -> (Ptr CChar -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr CChar
cstr ->
(\Ptr WorkbookOptions
ptr Ptr CChar
val -> do {Ptr WorkbookOptions -> Int -> Ptr CChar -> IO ()
forall a b. Storable a => Ptr b -> Int -> a -> IO ()
C2HSImp.pokeByteOff Ptr WorkbookOptions
ptr Int
8 (Ptr CChar
val :: (C2HSImp.Ptr C2HSImp.CChar))}) Ptr WorkbookOptions
p Ptr CChar
cstr
(\Ptr WorkbookOptions
ptr CUChar
val -> do {Ptr WorkbookOptions -> Int -> CUChar -> IO ()
forall a b. Storable a => Ptr b -> Int -> a -> IO ()
C2HSImp.pokeByteOff Ptr WorkbookOptions
ptr Int
16 (CUChar
val :: C2HSImp.CUChar)}) Ptr WorkbookOptions
p (CUChar -> IO ()) -> CUChar -> IO ()
forall a b. (a -> b) -> a -> b
$
if WorkbookOptions -> Bool
woUseZip64 WorkbookOptions
x then CUChar
1 else CUChar
0
type WorkbookOptionsPtr = C2HSImp.Ptr (WorkbookOptions)
{-# LINE 48 "src/XlsxWriter/Workbook.chs" #-}
workbook_new :: (ByteString) -> IO ((Workbook))
workbook_new :: ByteString -> IO Workbook
workbook_new ByteString
a1 =
ByteString -> (Ptr CChar -> IO Workbook) -> IO Workbook
forall a. ByteString -> (Ptr CChar -> IO a) -> IO a
useAsCString ByteString
a1 ((Ptr CChar -> IO Workbook) -> IO Workbook)
-> (Ptr CChar -> IO Workbook) -> IO Workbook
forall a b. (a -> b) -> a -> b
$ \Ptr CChar
a1' ->
Ptr CChar -> IO Workbook
workbook_new'_ Ptr CChar
a1' IO Workbook -> (Workbook -> IO Workbook) -> IO Workbook
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \Workbook
res ->
let {res' :: Workbook
res' = Workbook -> Workbook
forall a. a -> a
id Workbook
res} in
Workbook -> IO Workbook
forall (m :: * -> *) a. Monad m => a -> m a
return (Workbook
res')
{-# LINE 51 "src/XlsxWriter/Workbook.chs" #-}
workbook_new_opt :: (ByteString) -> (WorkbookOptions) -> IO ((Workbook))
workbook_new_opt a1 a2 =
useAsCString a1 $ \a1' ->
with a2 $ \a2' ->
workbook_new_opt'_ a1' a2' >>= \res ->
let {res' = id res} in
return (res')
{-# LINE 54 "src/XlsxWriter/Workbook.chs" #-}
workbook_add_worksheet :: Workbook -> ByteString -> IO Worksheet
workbook_add_worksheet wb name = do
useAsCString name $ workbook_add_worksheet'_ wb
foreign import ccall unsafe "XlsxWriter/Workbook.chs.h workbook_add_worksheet"
workbook_add_worksheet'_ :: Workbook -> Ptr CChar -> IO Worksheet
workbook_add_format :: (Workbook) -> IO ((Format))
workbook_add_format :: Workbook -> IO Format
workbook_add_format Workbook
a1 =
let {a1' :: Workbook
a1' = Workbook -> Workbook
forall a. a -> a
id Workbook
a1} in
Workbook -> IO Format
workbook_add_format'_ Workbook
a1' IO Format -> (Format -> IO Format) -> IO Format
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \Format
res ->
let {res' :: Format
res' = Format -> Format
forall a. a -> a
id Format
res} in
Format -> IO Format
forall (m :: * -> *) a. Monad m => a -> m a
return (Format
res')
{-# LINE 66 "src/XlsxWriter/Workbook.chs" #-}
workbook_close :: (Workbook) -> IO ((Error))
workbook_close a1 =
let {a1' = id a1} in
workbook_close'_ a1' >>= \res ->
let {res' = (toEnum . fromIntegral) res} in
return (res')
{-# LINE 68 "src/XlsxWriter/Workbook.chs" #-}
foreign import ccall unsafe "XlsxWriter/Workbook.chs.h workbook_new"
workbook_new'_ :: ((C2HSImp.Ptr C2HSImp.CChar) -> (IO (Workbook)))
foreign import ccall unsafe "XlsxWriter/Workbook.chs.h workbook_new_opt"
workbook_new_opt'_ :: ((C2HSImp.Ptr C2HSImp.CChar) -> ((WorkbookOptionsPtr) -> (IO (Workbook))))
foreign import ccall unsafe "XlsxWriter/Workbook.chs.h workbook_add_format"
workbook_add_format'_ :: ((Workbook) -> (IO (Format)))
foreign import ccall unsafe "XlsxWriter/Workbook.chs.h workbook_close"
workbook_close'_ :: ((Workbook) -> (IO C2HSImp.CInt))