module GI.Poppler.Callbacks
(
AttachmentSaveFunc ,
AttachmentSaveFuncC ,
attachmentSaveFuncClosure ,
attachmentSaveFuncWrapper ,
mkAttachmentSaveFunc ,
noAttachmentSaveFunc ,
MediaSaveFunc ,
MediaSaveFuncC ,
mediaSaveFuncClosure ,
mediaSaveFuncWrapper ,
mkMediaSaveFunc ,
noMediaSaveFunc ,
) where
import Prelude ()
import Data.GI.Base.ShortPrelude
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import GI.Poppler.Types
mediaSaveFuncClosure :: MediaSaveFunc -> IO Closure
mediaSaveFuncClosure cb = newCClosure =<< mkMediaSaveFunc wrapped
where wrapped = mediaSaveFuncWrapper Nothing cb
type MediaSaveFuncC =
Ptr Word8 ->
Word64 ->
Ptr () ->
IO CInt
foreign import ccall "wrapper"
mkMediaSaveFunc :: MediaSaveFuncC -> IO (FunPtr MediaSaveFuncC)
type MediaSaveFunc =
ByteString ->
IO Bool
noMediaSaveFunc :: Maybe MediaSaveFunc
noMediaSaveFunc = Nothing
mediaSaveFuncWrapper ::
Maybe (Ptr (FunPtr (MediaSaveFuncC))) ->
MediaSaveFunc ->
Ptr Word8 ->
Word64 ->
Ptr () ->
IO CInt
mediaSaveFuncWrapper funptrptr _cb buf count _ = do
buf' <- (unpackByteStringWithLength count) buf
result <- _cb buf'
maybeReleaseFunPtr funptrptr
let result' = (fromIntegral . fromEnum) result
return result'
attachmentSaveFuncClosure :: AttachmentSaveFunc -> IO Closure
attachmentSaveFuncClosure cb = newCClosure =<< mkAttachmentSaveFunc wrapped
where wrapped = attachmentSaveFuncWrapper Nothing cb
type AttachmentSaveFuncC =
Ptr Word8 ->
Word64 ->
Ptr () ->
IO CInt
foreign import ccall "wrapper"
mkAttachmentSaveFunc :: AttachmentSaveFuncC -> IO (FunPtr AttachmentSaveFuncC)
type AttachmentSaveFunc =
ByteString ->
IO Bool
noAttachmentSaveFunc :: Maybe AttachmentSaveFunc
noAttachmentSaveFunc = Nothing
attachmentSaveFuncWrapper ::
Maybe (Ptr (FunPtr (AttachmentSaveFuncC))) ->
AttachmentSaveFunc ->
Ptr Word8 ->
Word64 ->
Ptr () ->
IO CInt
attachmentSaveFuncWrapper funptrptr _cb buf count _ = do
buf' <- (unpackByteStringWithLength count) buf
result <- _cb buf'
maybeReleaseFunPtr funptrptr
let result' = (fromIntegral . fromEnum) result
return result'