{-# 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 :: Acquire (Ptr Writer) new = IO (Ptr Writer) -> (Ptr Writer -> IO ()) -> Acquire (Ptr Writer) forall a. IO a -> (a -> IO ()) -> Acquire a mkAcquire IO (Ptr Writer) rawNew Ptr Writer -> IO () deleteWriter foreign import capi unsafe "hs_STEPControl_Writer.h hs_STEPControl_Writer_setTolerance" rawSetTolerance :: Ptr Writer -> CDouble -> IO () setTolerance :: Ptr Writer -> Double -> IO () setTolerance :: Ptr Writer -> Double -> IO () setTolerance = (Ptr Writer -> CDouble -> IO ()) -> Ptr Writer -> Double -> IO () forall a b. Coercible a b => a -> b coerce Ptr Writer -> CDouble -> IO () 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 :: Ptr Writer -> Ptr Shape -> StepModelType -> Bool -> IO ReturnStatus transfer Ptr Writer writer Ptr Shape shape StepModelType mode Bool compgraph = Int -> ReturnStatus forall a. Enum a => Int -> a toEnum (Int -> ReturnStatus) -> (CInt -> Int) -> CInt -> ReturnStatus forall b c a. (b -> c) -> (a -> b) -> a -> c . CInt -> Int forall a b. (Integral a, Num b) => a -> b fromIntegral (CInt -> ReturnStatus) -> IO CInt -> IO ReturnStatus forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Ptr Writer -> Ptr Shape -> CInt -> CBool -> IO CInt rawTransfer Ptr Writer writer Ptr Shape shape (Int -> CInt forall a b. (Integral a, Num b) => a -> b fromIntegral (Int -> CInt) -> (StepModelType -> Int) -> StepModelType -> CInt forall b c a. (b -> c) -> (a -> b) -> a -> c . StepModelType -> Int forall a. Enum a => a -> Int fromEnum (StepModelType -> CInt) -> StepModelType -> CInt forall a b. (a -> b) -> a -> b $ StepModelType mode) (Bool -> CBool boolToCBool Bool 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 :: Ptr Writer -> String -> IO ReturnStatus write Ptr Writer writer String filename = Int -> ReturnStatus forall a. Enum a => Int -> a toEnum (Int -> ReturnStatus) -> (CInt -> Int) -> CInt -> ReturnStatus forall b c a. (b -> c) -> (a -> b) -> a -> c . CInt -> Int forall a b. (Integral a, Num b) => a -> b fromIntegral (CInt -> ReturnStatus) -> IO CInt -> IO ReturnStatus forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> String -> (CString -> IO CInt) -> IO CInt forall a. String -> (CString -> IO a) -> IO a withCString String filename (Ptr Writer -> CString -> IO CInt rawWrite Ptr Writer writer)