{-# LANGUAGE CApiFFI #-}
module OpenCascade.NCollection.Array1
(
    newGPPntArray,
    setValueGPPnt
) where

import Data.Acquire
import Foreign.Ptr
import Foreign.C
import OpenCascade.GP.Types
import OpenCascade.NCollection.Types
import OpenCascade.NCollection.Internal.Destructors

foreign import capi unsafe "hs_NCollection_Array1.h hs_new_NCollection_Array1_gp_Pnt" rawNewGPPntArray :: CInt -> CInt -> IO (Ptr (Array1 Pnt))

newGPPntArray :: Int -> Int -> Acquire (Ptr (Array1 Pnt))
newGPPntArray :: Int -> Int -> Acquire (Ptr (Array1 Pnt))
newGPPntArray Int
lo Int
hi = IO (Ptr (Array1 Pnt))
-> (Ptr (Array1 Pnt) -> IO ()) -> Acquire (Ptr (Array1 Pnt))
forall a. IO a -> (a -> IO ()) -> Acquire a
mkAcquire (CInt -> CInt -> IO (Ptr (Array1 Pnt))
rawNewGPPntArray (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
lo) (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
hi)) Ptr (Array1 Pnt) -> IO ()
deletePntArray

foreign import capi unsafe "hs_NCollection_Array1.h hs_NCollection_Array1_gp_Pnt_setValue" rawSetValueGPPnt :: Ptr (Array1 Pnt) -> CInt -> Ptr Pnt -> IO ()

setValueGPPnt :: Ptr (Array1 Pnt) -> Int -> Ptr Pnt -> IO ()
setValueGPPnt :: Ptr (Array1 Pnt) -> Int -> Ptr Pnt -> IO ()
setValueGPPnt Ptr (Array1 Pnt)
arr Int
i Ptr Pnt
p = Ptr (Array1 Pnt) -> CInt -> Ptr Pnt -> IO ()
rawSetValueGPPnt Ptr (Array1 Pnt)
arr (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
i) Ptr Pnt
p