{-# LANGUAGE CApiFFI #-} module OpenCascade.RWMesh.CafReader ( CafReader , setDocument , perform , singleShape , setFileLengthUnit ) where import OpenCascade.RWMesh.Types (CafReader) import qualified OpenCascade.TDocStd.Types as TDocStd import qualified OpenCascade.Message.Types as Message import qualified OpenCascade.TopoDS.Types as TopoDS import OpenCascade.TopoDS.Internal.Destructors (deleteShape) import OpenCascade.Handle (Handle) import OpenCascade.Internal.Bool (cBoolToBool) import Foreign.C (CBool (..), CDouble (..)) import Foreign.C.String (CString, withCString) import Foreign.Ptr (Ptr) import Data.Coerce (coerce) import Data.Acquire (Acquire, mkAcquire) foreign import capi unsafe "hs_RWMesh_CafReader.h hs_RWMesh_CafReader_setDocument" setDocument :: Ptr CafReader -> Ptr (Handle TDocStd.Document) -> IO () foreign import capi unsafe "hs_RWMesh_CafReader.h hs_RWMesh_CafReader_setFileLengthUnit" rawSetFileLengthUnit :: Ptr CafReader -> CDouble -> IO () setFileLengthUnit :: Ptr CafReader -> Double -> IO () setFileLengthUnit :: Ptr CafReader -> Double -> IO () setFileLengthUnit = (Ptr CafReader -> CDouble -> IO ()) -> Ptr CafReader -> Double -> IO () forall a b. Coercible a b => a -> b coerce Ptr CafReader -> CDouble -> IO () rawSetFileLengthUnit foreign import capi unsafe "hs_RWMesh_CafReader.h hs_RWMesh_CafReader_perform" rawPerform :: Ptr CafReader -> CString -> Ptr Message.ProgressRange -> IO CBool perform :: Ptr CafReader -> String -> Ptr Message.ProgressRange -> IO Bool perform :: Ptr CafReader -> String -> Ptr ProgressRange -> IO Bool perform Ptr CafReader reader String filename Ptr ProgressRange progress = 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 ((CString -> IO CBool) -> IO CBool) -> (CString -> IO CBool) -> IO CBool forall a b. (a -> b) -> a -> b $ \CString str -> Ptr CafReader -> CString -> Ptr ProgressRange -> IO CBool rawPerform Ptr CafReader reader CString str Ptr ProgressRange progress) foreign import capi unsafe "hs_RWMesh_CafReader.h hs_RWMesh_CafReader_singleShape" rawSingleShape :: Ptr CafReader -> IO (Ptr TopoDS.Shape) singleShape :: Ptr CafReader -> Acquire (Ptr TopoDS.Shape) singleShape :: Ptr CafReader -> Acquire (Ptr Shape) singleShape Ptr CafReader reader = IO (Ptr Shape) -> (Ptr Shape -> IO ()) -> Acquire (Ptr Shape) forall a. IO a -> (a -> IO ()) -> Acquire a mkAcquire (Ptr CafReader -> IO (Ptr Shape) rawSingleShape Ptr CafReader reader) Ptr Shape -> IO () deleteShape