{-# LANGUAGE CApiFFI #-} module OpenCascade.GeomAdaptor.Curve ( Curve , fromHandle , firstParameter , lastParameter , curve ) where import OpenCascade.GeomAdaptor.Types (Curve) import qualified OpenCascade.Geom.Types as Geom import qualified OpenCascade.Geom.Internal.Destructors as Geom.Destructors import OpenCascade.GeomAdaptor.Internal.Destructors (deleteCurve) import OpenCascade.Handle (Handle) import Foreign.C (CDouble (..)) import Data.Coerce (coerce) import Foreign.Ptr import Data.Acquire (Acquire, mkAcquire) foreign import capi unsafe "hs_GeomAdaptor_Curve.h hs_new_GeomAdaptor_Curve_fromHandle" rawFromHandle :: Ptr (Handle Geom.Curve) -> IO (Ptr Curve) fromHandle :: Ptr (Handle Geom.Curve) -> Acquire (Ptr Curve) fromHandle :: Ptr (Handle Curve) -> Acquire (Ptr Curve) fromHandle Ptr (Handle Curve) h = IO (Ptr Curve) -> (Ptr Curve -> IO ()) -> Acquire (Ptr Curve) forall a. IO a -> (a -> IO ()) -> Acquire a mkAcquire (Ptr (Handle Curve) -> IO (Ptr Curve) rawFromHandle Ptr (Handle Curve) h) Ptr Curve -> IO () deleteCurve foreign import capi unsafe "hs_GeomAdaptor_Curve.h hs_GeomAdaptor_Curve_curve" rawCurve :: Ptr Curve -> IO (Ptr (Handle Geom.Curve)) curve :: Ptr Curve -> Acquire (Ptr (Handle Geom.Curve)) curve :: Ptr Curve -> Acquire (Ptr (Handle Curve)) curve Ptr Curve adaptor = IO (Ptr (Handle Curve)) -> (Ptr (Handle Curve) -> IO ()) -> Acquire (Ptr (Handle Curve)) forall a. IO a -> (a -> IO ()) -> Acquire a mkAcquire (Ptr Curve -> IO (Ptr (Handle Curve)) rawCurve Ptr Curve adaptor) Ptr (Handle Curve) -> IO () Geom.Destructors.deleteHandleCurve foreign import capi unsafe "hs_GeomAdaptor_Curve.h hs_GeomAdaptor_Curve_firstParameter" rawFirstParameter :: Ptr Curve-> IO (CDouble) firstParameter :: Ptr Curve -> IO Double firstParameter :: Ptr Curve -> IO Double firstParameter = (Ptr Curve -> IO CDouble) -> Ptr Curve -> IO Double forall a b. Coercible a b => a -> b coerce Ptr Curve -> IO CDouble rawFirstParameter foreign import capi unsafe "hs_GeomAdaptor_Curve.h hs_GeomAdaptor_Curve_lastParameter" rawLastParameter :: Ptr Curve -> IO (CDouble) lastParameter :: Ptr Curve -> IO Double lastParameter :: Ptr Curve -> IO Double lastParameter = (Ptr Curve -> IO CDouble) -> Ptr Curve -> IO Double forall a b. Coercible a b => a -> b coerce Ptr Curve -> IO CDouble rawLastParameter