{-# LANGUAGE CApiFFI #-} module OpenCascade.BOPAlgo.Builder ( Builder , new , addArgument , setRunParallel , shape , perform ) where import OpenCascade.BOPAlgo.Types import OpenCascade.BOPAlgo.Internal.Destructors (deleteBuilder) import qualified OpenCascade.TopoDS.Types as TopoDS import OpenCascade.TopoDS.Internal.Destructors (deleteShape) import Foreign.Ptr (Ptr) import Foreign.C (CBool (..)) import Data.Acquire (Acquire, mkAcquire) import OpenCascade.Internal.Bool (boolToCBool) foreign import capi unsafe "hs_BOPAlgo_Builder.h hs_new_BOPAlgo_Builder" rawNew :: IO (Ptr Builder) new :: Acquire (Ptr Builder) new :: Acquire (Ptr Builder) new = IO (Ptr Builder) -> (Ptr Builder -> IO ()) -> Acquire (Ptr Builder) forall a. IO a -> (a -> IO ()) -> Acquire a mkAcquire IO (Ptr Builder) rawNew Ptr Builder -> IO () deleteBuilder foreign import capi unsafe "hs_BOPAlgo_Builder.h hs_BOPAlgo_Builder_AddArgument" addArgument :: Ptr Builder -> Ptr TopoDS.Shape -> IO () foreign import capi unsafe "hs_BOPAlgo_Builder.h hs_BOPAlgo_Builder_SetRunParallel" rawSetRunParallel :: Ptr Builder -> CBool -> IO () setRunParallel :: Ptr Builder -> Bool -> IO () setRunParallel :: Ptr Builder -> Bool -> IO () setRunParallel Ptr Builder builder = Ptr Builder -> CBool -> IO () rawSetRunParallel Ptr Builder builder (CBool -> IO ()) -> (Bool -> CBool) -> Bool -> IO () forall b c a. (b -> c) -> (a -> b) -> a -> c . Bool -> CBool boolToCBool foreign import capi unsafe "hs_BOPAlgo_Builder.h hs_BOPAlgo_Builder_Shape" rawShape :: Ptr Builder -> IO (Ptr TopoDS.Shape) shape :: Ptr Builder -> Acquire (Ptr TopoDS.Shape) shape :: Ptr Builder -> Acquire (Ptr Shape) shape Ptr Builder builder = IO (Ptr Shape) -> (Ptr Shape -> IO ()) -> Acquire (Ptr Shape) forall a. IO a -> (a -> IO ()) -> Acquire a mkAcquire (Ptr Builder -> IO (Ptr Shape) rawShape Ptr Builder builder) Ptr Shape -> IO () deleteShape foreign import capi unsafe "hs_BOPAlgo_Builder.h hs_BOPAlgo_Builder_Perform" perform :: Ptr Builder -> IO ()