{-# LANGUAGE CApiFFI #-} module OpenCascade.Poly.Triangle ( Triangle , fromIndices , value , setValue ) where import OpenCascade.Poly.Types (Triangle) import OpenCascade.Poly.Internal.Destructors (deleteTriangle) import Foreign.C (CInt (..)) import Foreign.Ptr (Ptr) import Data.Acquire (Acquire, mkAcquire) foreign import capi unsafe "hs_Poly_Triangle.h hs_new_Poly_Triangle_fromIndices" rawFromIndices :: CInt -> CInt -> CInt -> IO (Ptr Triangle) fromIndices :: Int -> Int -> Int -> Acquire (Ptr Triangle) fromIndices :: Int -> Int -> Int -> Acquire (Ptr Triangle) fromIndices Int n1 Int n2 Int n3 = IO (Ptr Triangle) -> (Ptr Triangle -> IO ()) -> Acquire (Ptr Triangle) forall a. IO a -> (a -> IO ()) -> Acquire a mkAcquire (CInt -> CInt -> CInt -> IO (Ptr Triangle) rawFromIndices (Int -> CInt forall a b. (Integral a, Num b) => a -> b fromIntegral Int n1) (Int -> CInt forall a b. (Integral a, Num b) => a -> b fromIntegral Int n2) (Int -> CInt forall a b. (Integral a, Num b) => a -> b fromIntegral Int n3)) Ptr Triangle -> IO () deleteTriangle foreign import capi unsafe "hs_Poly_Triangle.h hs_Poly_Triangle_value" rawValue :: Ptr Triangle -> CInt -> IO CInt value :: Ptr Triangle -> Int -> IO Int value :: Ptr Triangle -> Int -> IO Int value Ptr Triangle tri Int index = CInt -> Int forall a b. (Integral a, Num b) => a -> b fromIntegral (CInt -> Int) -> IO CInt -> IO Int forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Ptr Triangle -> CInt -> IO CInt rawValue Ptr Triangle tri (Int -> CInt forall a b. (Integral a, Num b) => a -> b fromIntegral Int index) foreign import capi unsafe "hs_Poly_Triangle.h hs_Poly_Triangle_setValue" rawSetValue :: Ptr Triangle -> CInt -> CInt -> IO () setValue :: Ptr Triangle -> Int -> Int -> IO () setValue :: Ptr Triangle -> Int -> Int -> IO () setValue Ptr Triangle tri Int index Int node = Ptr Triangle -> CInt -> CInt -> IO () rawSetValue Ptr Triangle tri (Int -> CInt forall a b. (Integral a, Num b) => a -> b fromIntegral Int index) (Int -> CInt forall a b. (Integral a, Num b) => a -> b fromIntegral Int node)