{-# LANGUAGE CApiFFI #-} module OpenCascade.RWGltf.CafWriter ( CafWriter , new , perform ) where import OpenCascade.RWGltf.Types (CafWriter) import OpenCascade.RWGltf.Internal.Destructors (deleteCafWriter) import Foreign.Ptr (Ptr) import Foreign.C.String (CString, withCString) import Foreign.C (CBool (..)) import Data.Acquire (Acquire, mkAcquire) import OpenCascade.Internal.Bool (boolToCBool) import OpenCascade.Handle (Handle) import qualified OpenCascade.TDocStd.Types as TDocStd import qualified OpenCascade.TColStd.Types as TColStd import qualified OpenCascade.Message.Types as Message foreign import capi unsafe "hs_RWGltf_CafWriter.h hs_new_RWGltf_CafWriter" rawNew :: CString -> CBool -> IO (Ptr CafWriter) new :: String -> Bool -> Acquire (Ptr CafWriter) new :: String -> Bool -> Acquire (Ptr CafWriter) new String filepath Bool binary = IO (Ptr CafWriter) -> (Ptr CafWriter -> IO ()) -> Acquire (Ptr CafWriter) forall a. IO a -> (a -> IO ()) -> Acquire a mkAcquire (String -> (CString -> IO (Ptr CafWriter)) -> IO (Ptr CafWriter) forall a. String -> (CString -> IO a) -> IO a withCString String filepath ((CString -> IO (Ptr CafWriter)) -> IO (Ptr CafWriter)) -> (CString -> IO (Ptr CafWriter)) -> IO (Ptr CafWriter) forall a b. (a -> b) -> a -> b $ \CString str -> CString -> CBool -> IO (Ptr CafWriter) rawNew CString str (Bool -> CBool boolToCBool Bool binary)) Ptr CafWriter -> IO () deleteCafWriter foreign import capi unsafe "hs_RWGltf_CafWriter.h hs_RWGltf_CafWriter_Perform" perform :: Ptr CafWriter -> Ptr (Handle TDocStd.Document) -> Ptr (TColStd.IndexedDataMapOfStringString) -> Ptr (Message.ProgressRange) -> IO ()