packages feed

opencascade-hs-0.7.0.0: src/OpenCascade/NCollection/List/Iterator.hs

{-# LANGUAGE CApiFFI #-}
module OpenCascade.NCollection.List.Iterator
( ListIterator
, newListOfShapeIterator
, moreListOfShapeIterator
, nextListOfShapeIterator
, valueListOfShapeIterator
) where

import OpenCascade.NCollection.Types (List, ListIterator)
import OpenCascade.NCollection.Internal.Destructors (deleteListOfShapeIterator)
import qualified OpenCascade.TopoDS.Types as TopoDS
import OpenCascade.TopoDS.Internal.Destructors (deleteShape)
import OpenCascade.Internal.Bool (cBoolToBool)
import Foreign.Ptr (Ptr)
import Foreign.C (CBool (..))
import Data.Acquire (Acquire, mkAcquire)

foreign import capi unsafe "hs_NCollection_List.h hs_new_NCollection_List_TopoDS_Shape_Iterator" rawNewListOfShapeIterator :: Ptr (List TopoDS.Shape) -> IO (Ptr (ListIterator TopoDS.Shape))

newListOfShapeIterator :: Ptr (List TopoDS.Shape) -> Acquire (Ptr (ListIterator TopoDS.Shape))
newListOfShapeIterator list = mkAcquire (rawNewListOfShapeIterator list) deleteListOfShapeIterator

foreign import capi unsafe "hs_NCollection_List.h hs_NCollection_List_TopoDS_Shape_Iterator_more" rawMoreListOfShapeIterator :: Ptr (ListIterator TopoDS.Shape) -> IO CBool

moreListOfShapeIterator :: Ptr (ListIterator TopoDS.Shape) -> IO Bool
moreListOfShapeIterator = fmap cBoolToBool . rawMoreListOfShapeIterator

foreign import capi unsafe "hs_NCollection_List.h hs_NCollection_List_TopoDS_Shape_Iterator_next" nextListOfShapeIterator :: Ptr (ListIterator TopoDS.Shape) -> IO ()

foreign import capi unsafe "hs_NCollection_List.h hs_NCollection_List_TopoDS_Shape_Iterator_value" rawValueListOfShapeIterator :: Ptr (ListIterator TopoDS.Shape) -> IO (Ptr TopoDS.Shape)

valueListOfShapeIterator :: Ptr (ListIterator TopoDS.Shape) -> Acquire (Ptr TopoDS.Shape)
valueListOfShapeIterator iterator = mkAcquire (rawValueListOfShapeIterator iterator) deleteShape