packages feed

opencascade-hs-0.2.0.0: src/OpenCascade/GP/XYZ.hs

{-# 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 = mkAcquire rawNewXYZ 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 x' y' z' = mkAcquire ((coerce rawFromDoubles) x' y' z') (deleteXYZ)

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

setX :: Ptr XYZ -> Double -> IO ()
setX = coerce  rawSetX

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

setY :: Ptr XYZ -> Double -> IO ()
setY = coerce  rawSetY

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

setZ :: Ptr XYZ -> Double -> IO ()
setZ = coerce rawSetZ

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

x :: Ptr XYZ -> IO Double
x = coerce rawX

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

y:: Ptr XYZ -> IO Double
y = coerce rawY

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

z :: Ptr XYZ -> IO Double
z = coerce rawZ