{-# LANGUAGE CApiFFI #-} module OpenCascade.BRep.Tool ( curve , curveParamFirst , curveParamLast ) where import qualified OpenCascade.Geom as Geom import qualified OpenCascade.TopoDS as TopoDS import OpenCascade.Handle (Handle) import OpenCascade.Geom.Internal.Destructors (deleteHandleCurve) import Foreign.Ptr import Foreign.C import Data.Coerce import Data.Acquire import qualified Data.Acquire as Data foreign import capi unsafe "hs_BRep_Tool.h hs_BRep_Tool_curve" rawCurve :: Ptr (TopoDS.Edge) -> IO(Ptr (Handle Geom.Curve)) curve :: Ptr TopoDS.Edge -> Data.Acquire (Ptr (Handle Geom.Curve)) curve :: Ptr Edge -> Acquire (Ptr (Handle Curve)) curve Ptr Edge edge = IO (Ptr (Handle Curve)) -> (Ptr (Handle Curve) -> IO ()) -> Acquire (Ptr (Handle Curve)) forall a. IO a -> (a -> IO ()) -> Acquire a mkAcquire (Ptr Edge -> IO (Ptr (Handle Curve)) rawCurve Ptr Edge edge) Ptr (Handle Curve) -> IO () deleteHandleCurve foreign import capi unsafe "hs_BRep_Tool.h hs_BRep_Tool_curveParamFirst" rawCurveParamFirst :: Ptr (TopoDS.Edge) -> IO(CDouble) curveParamFirst :: Ptr TopoDS.Edge -> IO Double curveParamFirst :: Ptr Edge -> IO Double curveParamFirst = (Ptr Edge -> IO CDouble) -> Ptr Edge -> IO Double forall a b. Coercible a b => a -> b coerce Ptr Edge -> IO CDouble rawCurveParamFirst foreign import capi unsafe "hs_BRep_Tool.h hs_BRep_Tool_curveParamLast" rawCurveParamLast :: Ptr (TopoDS.Edge) -> IO(CDouble) curveParamLast :: Ptr TopoDS.Edge -> IO Double curveParamLast :: Ptr Edge -> IO Double curveParamLast = (Ptr Edge -> IO CDouble) -> Ptr Edge -> IO Double forall a b. Coercible a b => a -> b coerce Ptr Edge -> IO CDouble rawCurveParamLast