{-# LANGUAGE CApiFFI #-} module OpenCascade.TopExp.Explorer ( Explorer , new , more , next , value ) where import OpenCascade.TopExp.Types (Explorer) import OpenCascade.TopExp.Internal.Destructors (deleteExplorer) import qualified OpenCascade.TopoDS as TopoDS import qualified OpenCascade.TopAbs as TopAbs import Data.Acquire import Foreign.Ptr import Foreign.C import OpenCascade.Internal.Bool (cBoolToBool) foreign import capi unsafe "hs_TopExp_Explorer.h hs_new_TopExp_Explorer" rawNew :: Ptr TopoDS.Shape -> CInt -> IO (Ptr Explorer) new :: Ptr TopoDS.Shape -> TopAbs.ShapeEnum -> Acquire (Ptr Explorer) new :: Ptr Shape -> ShapeEnum -> Acquire (Ptr Explorer) new Ptr Shape shape ShapeEnum theType = IO (Ptr Explorer) -> (Ptr Explorer -> IO ()) -> Acquire (Ptr Explorer) forall a. IO a -> (a -> IO ()) -> Acquire a mkAcquire (Ptr Shape -> CInt -> IO (Ptr Explorer) rawNew Ptr Shape shape (Int -> CInt forall a b. (Integral a, Num b) => a -> b fromIntegral (Int -> CInt) -> (ShapeEnum -> Int) -> ShapeEnum -> CInt forall b c a. (b -> c) -> (a -> b) -> a -> c . ShapeEnum -> Int forall a. Enum a => a -> Int fromEnum (ShapeEnum -> CInt) -> ShapeEnum -> CInt forall a b. (a -> b) -> a -> b $ ShapeEnum theType)) Ptr Explorer -> IO () deleteExplorer foreign import capi unsafe "hs_TopExp_Explorer.h hs_TopExp_Explorer_more" rawMore :: Ptr Explorer -> IO (CBool) more :: Ptr Explorer -> IO Bool more :: Ptr Explorer -> IO Bool more = (CBool -> Bool) -> IO CBool -> IO Bool forall a b. (a -> b) -> IO a -> IO b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap (CBool -> Bool cBoolToBool) (IO CBool -> IO Bool) -> (Ptr Explorer -> IO CBool) -> Ptr Explorer -> IO Bool forall b c a. (b -> c) -> (a -> b) -> a -> c . Ptr Explorer -> IO CBool rawMore foreign import capi unsafe "hs_TopExp_Explorer.h hs_TopExp_Explorer_next" next :: Ptr Explorer -> IO () foreign import capi unsafe "hs_TopExp_Explorer.h hs_TopExp_Explorer_value" value :: Ptr Explorer -> IO (Ptr TopoDS.Shape)