packages feed

opencascade-hs-0.7.0.0: src/OpenCascade/ShapeUpgrade/UnifySameDomain.hs

{-# LANGUAGE CApiFFI #-}
module OpenCascade.ShapeUpgrade.UnifySameDomain
( UnifySameDomain
, fromShape
, setSafeInputMode
, allowInternalEdges
, build
, shape
) where

import OpenCascade.ShapeUpgrade.Types (UnifySameDomain)
import OpenCascade.ShapeUpgrade.Internal.Destructors (deleteUnifySameDomain)
import OpenCascade.TopoDS.Internal.Destructors (deleteShape)
import qualified OpenCascade.TopoDS.Types as TopoDS
import OpenCascade.Internal.Bool (boolToCBool)
import OpenCascade.Internal.Exception (wrapException)
import Data.Acquire (Acquire, mkAcquire)
import Foreign.Ptr (Ptr)
import Foreign.C (CInt (..), CBool (..))

foreign import capi unsafe "hs_ShapeUpgrade_UnifySameDomain.h hs_new_ShapeUpgrade_UnifySameDomain_fromShape" rawFromShape
    :: Ptr TopoDS.Shape
    -> CBool
    -> CBool
    -> CBool
    -> Ptr CInt
    -> Ptr (Ptr ())
    -> IO (Ptr UnifySameDomain)

fromShape :: Ptr TopoDS.Shape -> Bool -> Bool -> Bool -> Acquire (Ptr UnifySameDomain)
fromShape s unifyEdges unifyFaces concatBSplines =
    mkAcquire
        (wrapException $ rawFromShape s (boolToCBool unifyEdges) (boolToCBool unifyFaces) (boolToCBool concatBSplines))
        deleteUnifySameDomain

foreign import capi unsafe "hs_ShapeUpgrade_UnifySameDomain.h hs_ShapeUpgrade_UnifySameDomain_setSafeInputMode" rawSetSafeInputMode :: Ptr UnifySameDomain -> CBool -> IO ()

setSafeInputMode :: Ptr UnifySameDomain -> Bool -> IO ()
setSafeInputMode unify = rawSetSafeInputMode unify . boolToCBool

foreign import capi unsafe "hs_ShapeUpgrade_UnifySameDomain.h hs_ShapeUpgrade_UnifySameDomain_allowInternalEdges" rawAllowInternalEdges :: Ptr UnifySameDomain -> CBool -> IO ()

allowInternalEdges :: Ptr UnifySameDomain -> Bool -> IO ()
allowInternalEdges unify = rawAllowInternalEdges unify . boolToCBool

foreign import capi unsafe "hs_ShapeUpgrade_UnifySameDomain.h hs_ShapeUpgrade_UnifySameDomain_build" rawBuild :: Ptr UnifySameDomain -> Ptr CInt -> Ptr (Ptr ()) -> IO ()

build :: Ptr UnifySameDomain -> IO ()
build unify = wrapException $ rawBuild unify

foreign import capi unsafe "hs_ShapeUpgrade_UnifySameDomain.h hs_ShapeUpgrade_UnifySameDomain_shape" rawShape :: Ptr UnifySameDomain -> IO (Ptr TopoDS.Shape)

shape :: Ptr UnifySameDomain -> Acquire (Ptr TopoDS.Shape)
shape unify = mkAcquire (rawShape unify) deleteShape