{-# LANGUAGE CApiFFI #-}
module OpenCascade.BRepPrimAPI.MakePrism
( fromVec
, fromDir
) where

import qualified OpenCascade.GP as GP
import qualified OpenCascade.TopoDS as TopoDS
import OpenCascade.Internal.Bool
import qualified OpenCascade.TopoDS.Internal.Destructors as TopoDS.Destructors
import Foreign.C
import Foreign.Ptr
import Data.Acquire 

foreign import capi unsafe "hs_BRepPrimAPI_MakePrism.h hs_BRepPrimAPI_MakePrism_fromVec" rawFromVec :: Ptr TopoDS.Shape -> Ptr GP.Vec -> CBool -> CBool -> IO (Ptr TopoDS.Shape)

fromVec :: Ptr TopoDS.Shape -> Ptr GP.Vec -> Bool -> Bool -> Acquire (Ptr TopoDS.Shape)
fromVec :: Ptr Shape -> Ptr Vec -> Bool -> Bool -> Acquire (Ptr Shape)
fromVec Ptr Shape
shape Ptr Vec
vec Bool
copy Bool
canonize = IO (Ptr Shape) -> (Ptr Shape -> IO ()) -> Acquire (Ptr Shape)
forall a. IO a -> (a -> IO ()) -> Acquire a
mkAcquire (Ptr Shape -> Ptr Vec -> CBool -> CBool -> IO (Ptr Shape)
rawFromVec Ptr Shape
shape Ptr Vec
vec (Bool -> CBool
boolToCBool Bool
copy) (Bool -> CBool
boolToCBool Bool
canonize)) Ptr Shape -> IO ()
TopoDS.Destructors.deleteShape


foreign import capi unsafe "hs_BRepPrimAPI_MakePrism.h hs_BRepPrimAPI_MakePrism_fromDir" rawFromDir :: Ptr TopoDS.Shape -> Ptr GP.Dir -> CBool -> CBool -> CBool -> IO (Ptr TopoDS.Shape)

fromDir :: Ptr TopoDS.Shape -> Ptr GP.Dir -> Bool -> Bool -> Bool -> Acquire (Ptr TopoDS.Shape)
fromDir :: Ptr Shape -> Ptr Dir -> Bool -> Bool -> Bool -> Acquire (Ptr Shape)
fromDir Ptr Shape
shape Ptr Dir
dir Bool
inf Bool
copy Bool
canonize = IO (Ptr Shape) -> (Ptr Shape -> IO ()) -> Acquire (Ptr Shape)
forall a. IO a -> (a -> IO ()) -> Acquire a
mkAcquire (Ptr Shape -> Ptr Dir -> CBool -> CBool -> CBool -> IO (Ptr Shape)
rawFromDir Ptr Shape
shape Ptr Dir
dir (Bool -> CBool
boolToCBool Bool
inf) (Bool -> CBool
boolToCBool Bool
copy) (Bool -> CBool
boolToCBool Bool
canonize)) Ptr Shape -> IO ()
TopoDS.Destructors.deleteShape