{-# LANGUAGE CApiFFI #-}
module OpenCascade.GP.XYZ 
( XYZ
, newXYZ
, fromDoubles
, setX, setY, setZ
, x, y, z
) where

import OpenCascade.GP.Types (XYZ)
import OpenCascade.GP.Internal.Destructors (deleteXYZ)
import Foreign.Ptr (Ptr)
import Foreign.C (CDouble (..))
import Data.Acquire (Acquire, mkAcquire)
import Data.Coerce (coerce)

foreign import capi unsafe "hs_gp_XYZ.h hs_new_gp_XYZ" rawNewXYZ :: IO (Ptr XYZ)

newXYZ :: Acquire (Ptr XYZ)
newXYZ :: Acquire (Ptr XYZ)
newXYZ = IO (Ptr XYZ) -> (Ptr XYZ -> IO ()) -> Acquire (Ptr XYZ)
forall a. IO a -> (a -> IO ()) -> Acquire a
mkAcquire IO (Ptr XYZ)
rawNewXYZ Ptr XYZ -> IO ()
deleteXYZ

foreign import capi unsafe "hs_gp_XYZ.h hs_new_gp_XYZ_fromDoubles" rawFromDoubles :: CDouble -> CDouble -> CDouble -> IO (Ptr XYZ)

fromDoubles :: Double -> Double -> Double -> Acquire (Ptr XYZ)
fromDoubles :: Double -> Double -> Double -> Acquire (Ptr XYZ)
fromDoubles Double
x' Double
y' Double
z' = IO (Ptr XYZ) -> (Ptr XYZ -> IO ()) -> Acquire (Ptr XYZ)
forall a. IO a -> (a -> IO ()) -> Acquire a
mkAcquire (((CDouble -> CDouble -> CDouble -> IO (Ptr XYZ))
-> Double -> Double -> Double -> IO (Ptr XYZ)
forall a b. Coercible a b => a -> b
coerce CDouble -> CDouble -> CDouble -> IO (Ptr XYZ)
rawFromDoubles) Double
x' Double
y' Double
z') (Ptr XYZ -> IO ()
deleteXYZ)

foreign import capi unsafe "hs_gp_XYZ.h hs_gp_XYZ_setX" rawSetX :: Ptr XYZ -> CDouble -> IO ()

setX :: Ptr XYZ -> Double -> IO ()
setX :: Ptr XYZ -> Double -> IO ()
setX = (Ptr XYZ -> CDouble -> IO ()) -> Ptr XYZ -> Double -> IO ()
forall a b. Coercible a b => a -> b
coerce  Ptr XYZ -> CDouble -> IO ()
rawSetX

foreign import capi unsafe "hs_gp_XYZ.h hs_gp_XYZ_setY" rawSetY :: Ptr XYZ -> CDouble -> IO ()

setY :: Ptr XYZ -> Double -> IO ()
setY :: Ptr XYZ -> Double -> IO ()
setY = (Ptr XYZ -> CDouble -> IO ()) -> Ptr XYZ -> Double -> IO ()
forall a b. Coercible a b => a -> b
coerce  Ptr XYZ -> CDouble -> IO ()
rawSetY

foreign import capi unsafe "hs_gp_XYZ.h hs_gp_XYZ_setZ" rawSetZ :: Ptr XYZ -> CDouble -> IO ()

setZ :: Ptr XYZ -> Double -> IO ()
setZ :: Ptr XYZ -> Double -> IO ()
setZ = (Ptr XYZ -> CDouble -> IO ()) -> Ptr XYZ -> Double -> IO ()
forall a b. Coercible a b => a -> b
coerce Ptr XYZ -> CDouble -> IO ()
rawSetZ

foreign import capi unsafe "hs_gp_XYZ.h hs_gp_XYZ_x" rawX :: Ptr XYZ -> IO (CDouble)

x :: Ptr XYZ -> IO Double
x :: Ptr XYZ -> IO Double
x = (Ptr XYZ -> IO CDouble) -> Ptr XYZ -> IO Double
forall a b. Coercible a b => a -> b
coerce Ptr XYZ -> IO CDouble
rawX

foreign import capi unsafe "hs_gp_XYZ.h hs_gp_XYZ_y" rawY :: Ptr XYZ -> IO (CDouble)

y:: Ptr XYZ -> IO Double
y :: Ptr XYZ -> IO Double
y = (Ptr XYZ -> IO CDouble) -> Ptr XYZ -> IO Double
forall a b. Coercible a b => a -> b
coerce Ptr XYZ -> IO CDouble
rawY

foreign import capi unsafe "hs_gp_XYZ.h hs_gp_XYZ_z" rawZ :: Ptr XYZ -> IO (CDouble)

z :: Ptr XYZ -> IO Double
z :: Ptr XYZ -> IO Double
z = (Ptr XYZ -> IO CDouble) -> Ptr XYZ -> IO Double
forall a b. Coercible a b => a -> b
coerce Ptr XYZ -> IO CDouble
rawZ