{-# LANGUAGE CApiFFI #-} module OpenCascade.StlAPI.Writer ( new , setAsciiMode , write ) where import OpenCascade.StlAPI.Types (Writer) import OpenCascade.StlAPI.Internal.Destructors (deleteWriter) import qualified OpenCascade.TopoDS as TopoDS import Foreign.C import Foreign.Ptr import Data.Acquire import OpenCascade.Internal.Bool (boolToCBool, cBoolToBool) foreign import capi unsafe "hs_StlAPI_Writer.h hs_new_StlAPI_Writer" rawNew :: IO (Ptr Writer) new :: Acquire (Ptr Writer) new :: Acquire (Ptr Writer) new = IO (Ptr Writer) -> (Ptr Writer -> IO ()) -> Acquire (Ptr Writer) forall a. IO a -> (a -> IO ()) -> Acquire a mkAcquire IO (Ptr Writer) rawNew Ptr Writer -> IO () deleteWriter foreign import capi unsafe "hs_StlAPI_Writer.h hs_StlAPI_Writer_setAsciiMode" rawSetAsciiMode :: Ptr Writer -> CBool -> IO () setAsciiMode :: Ptr Writer -> Bool -> IO () setAsciiMode :: Ptr Writer -> Bool -> IO () setAsciiMode Ptr Writer writer Bool mode = Ptr Writer -> CBool -> IO () rawSetAsciiMode Ptr Writer writer (Bool -> CBool boolToCBool Bool mode) foreign import capi unsafe "hs_StlAPI_Writer.h hs_StlAPI_Writer_write" rawWrite :: Ptr Writer -> Ptr TopoDS.Shape -> CString -> IO (CBool) write :: Ptr Writer -> Ptr TopoDS.Shape -> String -> IO (Bool) write :: Ptr Writer -> Ptr Shape -> String -> IO Bool write Ptr Writer writer Ptr Shape shape String filename = CBool -> Bool cBoolToBool (CBool -> Bool) -> IO CBool -> IO Bool forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> String -> (CString -> IO CBool) -> IO CBool forall a. String -> (CString -> IO a) -> IO a withCString String filename (Ptr Writer -> Ptr Shape -> CString -> IO CBool rawWrite Ptr Writer writer Ptr Shape shape)