opencascade-hs-0.0.0.1: src/OpenCascade/STEPControl/Writer.hs
{-# LANGUAGE CApiFFI #-}
module OpenCascade.STEPControl.Writer
( new
, setTolerance
, unsetTolerance
, transfer
, write
) where
import OpenCascade.STEPControl.Types (Writer)
import OpenCascade.STEPControl.Internal.Destructors (deleteWriter)
import qualified OpenCascade.TopoDS as TopoDS
import Foreign.C
import Foreign.Ptr
import Data.Acquire
import OpenCascade.Internal.Bool (boolToCBool)
import qualified OpenCascade.IFSelect.ReturnStatus as IFSelect.ReturnStatus
import OpenCascade.STEPControl.StepModelType (StepModelType)
import Data.Coerce (coerce)
foreign import capi unsafe "hs_STEPControl_Writer.h hs_new_STEPControl_Writer" rawNew :: IO (Ptr Writer)
new :: Acquire (Ptr Writer)
new = mkAcquire rawNew deleteWriter
foreign import capi unsafe "hs_STEPControl_Writer.h hs_STEPControl_Writer_setTolerance" rawSetTolerance :: Ptr Writer -> CDouble -> IO ()
setTolerance :: Ptr Writer -> Double -> IO ()
setTolerance = coerce rawSetTolerance
foreign import capi unsafe "hs_STEPControl_Writer.h hs_STEPControl_Writer_unsetTolerance" unsetTolerance :: Ptr Writer -> IO ()
foreign import capi unsafe "hs_STEPControl_Writer.h hs_STEPControl_Writer_transfer" rawTransfer :: Ptr Writer -> Ptr TopoDS.Shape -> CInt -> CBool -> IO CInt
transfer :: Ptr Writer -> Ptr TopoDS.Shape -> StepModelType -> Bool -> IO IFSelect.ReturnStatus.ReturnStatus
transfer writer shape mode compgraph = toEnum . fromIntegral <$> rawTransfer writer shape (fromIntegral . fromEnum $ mode) (boolToCBool compgraph)
foreign import capi unsafe "hs_STEPControl_Writer.h hs_STEPControl_Writer_write" rawWrite :: Ptr Writer -> CString -> IO CInt
write :: Ptr Writer -> String -> IO IFSelect.ReturnStatus.ReturnStatus
write writer filename = toEnum . fromIntegral <$> withCString filename (rawWrite writer)