packages feed

opencascade-hs-0.5.0.0: src/OpenCascade/GeomAdaptor/Curve.hs

{-# 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 h = mkAcquire (rawFromHandle h) 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 adaptor = mkAcquire (rawCurve adaptor) 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 = coerce rawFirstParameter

foreign import capi unsafe "hs_GeomAdaptor_Curve.h hs_GeomAdaptor_Curve_lastParameter" rawLastParameter :: Ptr Curve -> IO (CDouble)

lastParameter :: Ptr Curve -> IO Double
lastParameter = coerce rawLastParameter