{-# LINE 1 "src/Graphics/Cairo/Surfaces/CairoWriteFuncT.hsc" #-} {-# LANGUAGE LambdaCase #-} {-# OPTIONS_GHC -Wall -fno-warn-tabs #-} module Graphics.Cairo.Surfaces.CairoWriteFuncT where import Foreign.Ptr import Foreign.C.Types import Foreign.C.String import Control.Monad.Primitive import Data.Word import qualified Data.Text as T import qualified Data.Text.Foreign as T import qualified Data.ByteString as BS data WriteResult = WriteFailure | WriteSuccess deriving Int -> WriteResult -> ShowS [WriteResult] -> ShowS WriteResult -> String (Int -> WriteResult -> ShowS) -> (WriteResult -> String) -> ([WriteResult] -> ShowS) -> Show WriteResult forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> WriteResult -> ShowS showsPrec :: Int -> WriteResult -> ShowS $cshow :: WriteResult -> String show :: WriteResult -> String $cshowList :: [WriteResult] -> ShowS showList :: [WriteResult] -> ShowS Show writeResultToCairoStatusT :: WriteResult -> Word32 {-# LINE 22 "src/Graphics/Cairo/Surfaces/CairoWriteFuncT.hsc" #-} writeResultToCairoStatusT = \case WriteFailure -> 11 {-# LINE 24 "src/Graphics/Cairo/Surfaces/CairoWriteFuncT.hsc" #-} WriteSuccess -> 0 {-# LINE 25 "src/Graphics/Cairo/Surfaces/CairoWriteFuncT.hsc" #-} foreign import ccall "wrapper" c_wrap_cairo_write_func_t :: (Ptr a -> CString -> CInt -> IO Word32) -> {-# LINE 28 "src/Graphics/Cairo/Surfaces/CairoWriteFuncT.hsc" #-} IO (FunPtr (Ptr a -> CString -> CInt -> IO Word32)) {-# LINE 29 "src/Graphics/Cairo/Surfaces/CairoWriteFuncT.hsc" #-} wrapCairoWriteFuncTText :: PrimBase m => (Ptr a -> T.Text -> m WriteResult) -> IO (FunPtr (Ptr a -> CString -> CInt -> IO Word32)) {-# LINE 32 "src/Graphics/Cairo/Surfaces/CairoWriteFuncT.hsc" #-} wrapCairoWriteFuncTText wf = c_wrap_cairo_write_func_t $ convertCairoWriteFuncTText wf wrapCairoWriteFuncTByteString :: PrimBase m => (Ptr a -> BS.ByteString -> m WriteResult) -> IO (FunPtr (Ptr a -> CString -> CInt -> IO Word32)) {-# LINE 36 "src/Graphics/Cairo/Surfaces/CairoWriteFuncT.hsc" #-} wrapCairoWriteFuncTByteString = c_wrap_cairo_write_func_t . convertCairoWriteFuncTByteString convertCairoWriteFuncT :: (Ptr a -> String -> IO Word32) -> {-# LINE 39 "src/Graphics/Cairo/Surfaces/CairoWriteFuncT.hsc" #-} Ptr a -> CString -> CInt -> IO Word32 {-# LINE 40 "src/Graphics/Cairo/Surfaces/CairoWriteFuncT.hsc" #-} convertCairoWriteFuncT wf p cs ln = peekCStringLen (cs, fromIntegral ln) >>= \s -> wf p s convertCairoWriteFuncTText :: PrimBase m => (Ptr a -> T.Text -> m WriteResult) -> Ptr a -> CString -> CInt -> IO Word32 {-# LINE 44 "src/Graphics/Cairo/Surfaces/CairoWriteFuncT.hsc" #-} convertCairoWriteFuncTText wf p cs ln = writeResultToCairoStatusT <$> (T.peekCStringLen (cs, fromIntegral ln) >>= \t -> unsafePrimToIO $ wf p t) convertCairoWriteFuncTByteString :: PrimBase m => (Ptr a -> BS.ByteString -> m WriteResult) -> Ptr a -> CString -> CInt -> IO Word32 {-# LINE 49 "src/Graphics/Cairo/Surfaces/CairoWriteFuncT.hsc" #-} convertCairoWriteFuncTByteString wf p cs ln = writeResultToCairoStatusT <$> (BS.packCStringLen (cs, fromIntegral ln) >>= \bs -> unsafePrimToIO $ wf p bs)