{-# LANGUAGE CApiFFI #-} module OpenCascade.Geom.Curve ( value , dn ) where import Foreign.Ptr import Foreign.C import Data.Coerce import Data.Acquire import OpenCascade.Geom.Types (Curve) import OpenCascade.GP (Pnt, Vec) import OpenCascade.GP.Internal.Destructors (deletePnt, deleteVec) import OpenCascade.Handle (Handle) foreign import capi unsafe "hs_Geom_Curve.h hs_Geom_Curve_value" rawValue :: Ptr (Handle Curve) -> CDouble -> IO(Ptr Pnt) value :: Ptr (Handle Curve) -> Double -> Acquire (Ptr Pnt) value :: Ptr (Handle Curve) -> Double -> Acquire (Ptr Pnt) value Ptr (Handle Curve) curve Double u = IO (Ptr Pnt) -> (Ptr Pnt -> IO ()) -> Acquire (Ptr Pnt) forall a. IO a -> (a -> IO ()) -> Acquire a mkAcquire (Ptr (Handle Curve) -> CDouble -> IO (Ptr Pnt) rawValue Ptr (Handle Curve) curve (Double -> CDouble forall a b. Coercible a b => a -> b coerce Double u)) Ptr Pnt -> IO () deletePnt foreign import capi unsafe "hs_Geom_Curve.h hs_Geom_Curve_dn" rawDN :: Ptr (Handle Curve) -> CDouble -> CInt -> IO (Ptr Vec) dn :: Ptr (Handle Curve) -> Double -> Int -> Acquire (Ptr Vec) dn :: Ptr (Handle Curve) -> Double -> Int -> Acquire (Ptr Vec) dn Ptr (Handle Curve) curve Double u Int n = IO (Ptr Vec) -> (Ptr Vec -> IO ()) -> Acquire (Ptr Vec) forall a. IO a -> (a -> IO ()) -> Acquire a mkAcquire (Ptr (Handle Curve) -> CDouble -> CInt -> IO (Ptr Vec) rawDN Ptr (Handle Curve) curve (Double -> CDouble forall a b. Coercible a b => a -> b coerce Double u) (Int -> CInt forall a b. (Integral a, Num b) => a -> b fromIntegral Int n)) Ptr Vec -> IO () deleteVec