{-# LANGUAGE CApiFFI #-} module OpenCascade.GCPnts.AbscissaPoint ( AbscissaPoint , fromCurveAbscissaAndParam , parameter , isDone ) where import OpenCascade.GCPnts.Types (AbscissaPoint) import OpenCascade.GCPnts.Internal.Destructors (deleteAbscissaPoint) import qualified OpenCascade.BRepAdaptor.Types as BRepAdaptor import OpenCascade.Internal.Bool (cBoolToBool) import Foreign.Ptr import Foreign.C import Data.Acquire (Acquire, mkAcquire) import Data.Coerce (coerce) foreign import capi unsafe "hs_GCPnts_AbscissaPoint.h hs_new_GCPnts_AbscissaPoint" rawNew :: Ptr BRepAdaptor.Curve -> CDouble -> CDouble -> IO (Ptr AbscissaPoint) fromCurveAbscissaAndParam :: Ptr BRepAdaptor.Curve -> Double -> Double -> Acquire (Ptr AbscissaPoint) fromCurveAbscissaAndParam :: Ptr Curve -> Double -> Double -> Acquire (Ptr AbscissaPoint) fromCurveAbscissaAndParam Ptr Curve curve Double abscissa Double u0 = IO (Ptr AbscissaPoint) -> (Ptr AbscissaPoint -> IO ()) -> Acquire (Ptr AbscissaPoint) forall a. IO a -> (a -> IO ()) -> Acquire a mkAcquire (Ptr Curve -> CDouble -> CDouble -> IO (Ptr AbscissaPoint) rawNew Ptr Curve curve (Double -> CDouble CDouble Double abscissa) (Double -> CDouble CDouble Double u0)) Ptr AbscissaPoint -> IO () deleteAbscissaPoint foreign import capi unsafe "hs_GCPnts_AbscissaPoint.h hs_GCPnts_AbscissaPoint_parameter" rawParameter :: Ptr AbscissaPoint -> IO CDouble parameter :: Ptr AbscissaPoint -> IO Double parameter :: Ptr AbscissaPoint -> IO Double parameter = (Ptr AbscissaPoint -> IO CDouble) -> Ptr AbscissaPoint -> IO Double forall a b. Coercible a b => a -> b coerce Ptr AbscissaPoint -> IO CDouble rawParameter foreign import capi unsafe "hs_GCPnts_AbscissaPoint.h hs_GCPnts_AbscissaPoint_isDone" rawIsDone :: Ptr AbscissaPoint -> IO CBool isDone :: Ptr AbscissaPoint -> IO Bool isDone :: Ptr AbscissaPoint -> IO Bool isDone = (CBool -> Bool) -> IO CBool -> IO Bool forall a b. (a -> b) -> IO a -> IO b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap CBool -> Bool cBoolToBool (IO CBool -> IO Bool) -> (Ptr AbscissaPoint -> IO CBool) -> Ptr AbscissaPoint -> IO Bool forall b c a. (b -> c) -> (a -> b) -> a -> c . Ptr AbscissaPoint -> IO CBool rawIsDone