{-# LANGUAGE CApiFFI #-}
module OpenCascade.BRepMesh.IncrementalMesh
( fromShapeAndLinDeflection
, perform
) where 

import OpenCascade.BRepMesh.Types (IncrementalMesh)
import OpenCascade.BRepMesh.Internal.Destructors (deleteIncrementalMesh)
import qualified OpenCascade.TopoDS as TopoDS
import Foreign.Ptr
import Data.Acquire
import Data.Coerce (coerce)


foreign import capi unsafe "hs_BRepMesh_IncrementalMesh.h hs_BRepMesh_IncrementalMesh_fromShapeAndLinDeflection" rawFromShapeAndLinDeflection :: Ptr TopoDS.Shape -> Double ->  IO (Ptr IncrementalMesh)

fromShapeAndLinDeflection :: Ptr TopoDS.Shape -> Double -> Acquire (Ptr IncrementalMesh)
fromShapeAndLinDeflection :: Ptr Shape -> Double -> Acquire (Ptr IncrementalMesh)
fromShapeAndLinDeflection Ptr Shape
shape Double
linDeflection = IO (Ptr IncrementalMesh)
-> (Ptr IncrementalMesh -> IO ()) -> Acquire (Ptr IncrementalMesh)
forall a. IO a -> (a -> IO ()) -> Acquire a
mkAcquire (Ptr Shape -> Double -> IO (Ptr IncrementalMesh)
rawFromShapeAndLinDeflection Ptr Shape
shape (Double -> Double
forall a b. Coercible a b => a -> b
coerce Double
linDeflection)) Ptr IncrementalMesh -> IO ()
deleteIncrementalMesh

foreign import capi unsafe "hs_BRepMesh_IncrementalMesh.h hs_BRepMesh_IncrementalMesh_Perform" perform :: Ptr IncrementalMesh -> IO ()