{-# LINE 1 "lib/CPython/Types/Iterator.chs" #-}
{-# LANGUAGE ForeignFunctionInterface #-}
module CPython.Types.Iterator
( SequenceIterator
, sequenceIteratorType
, sequenceIteratorNew
, CallableIterator
, callableIteratorType
, callableIteratorNew
) where
import CPython.Internal
newtype SequenceIterator = SequenceIterator (ForeignPtr SequenceIterator)
instance Iterator SequenceIterator where
toIterator = unsafeCastToIterator
instance Object SequenceIterator where
toObject (SequenceIterator x) = SomeObject x
fromForeignPtr = SequenceIterator
instance Concrete SequenceIterator where
concreteType _ = sequenceIteratorType
newtype CallableIterator = CallableIterator (ForeignPtr CallableIterator)
instance Iterator CallableIterator where
toIterator = unsafeCastToIterator
instance Object CallableIterator where
toObject (CallableIterator x) = SomeObject x
fromForeignPtr = CallableIterator
instance Concrete CallableIterator where
concreteType _ = callableIteratorType
sequenceIteratorType :: (Type)
sequenceIteratorType =
unsafePerformIO $
let {res = sequenceIteratorType'_} in
peekStaticObject res >>= \res' ->
return (res')
{-# LINE 57 "lib/CPython/Types/Iterator.chs" #-}
callableIteratorType :: (Type)
callableIteratorType =
unsafePerformIO $
let {res = callableIteratorType'_} in
peekStaticObject res >>= \res' ->
return (res')
{-# LINE 60 "lib/CPython/Types/Iterator.chs" #-}
sequenceIteratorNew :: Sequence seq => (seq) -> IO ((SequenceIterator))
sequenceIteratorNew a1 =
withObject a1 $ \a1' ->
sequenceIteratorNew'_ a1' >>= \res ->
stealObject res >>= \res' ->
return (res')
{-# LINE 68 "lib/CPython/Types/Iterator.chs" #-}
callableIteratorNew :: (Object callable, Object sentinel) => (callable) -> (sentinel) -> IO ((CallableIterator))
callableIteratorNew a1 a2 =
withObject a1 $ \a1' ->
withObject a2 $ \a2' ->
callableIteratorNew'_ a1' a2' >>= \res ->
stealObject res >>= \res' ->
return (res')
{-# LINE 78 "lib/CPython/Types/Iterator.chs" #-}
foreign import ccall unsafe "CPython/Types/Iterator.chs.h hscpython_PySeqIter_Type"
sequenceIteratorType'_ :: (Ptr ())
foreign import ccall unsafe "CPython/Types/Iterator.chs.h hscpython_PyCallIter_Type"
callableIteratorType'_ :: (Ptr ())
foreign import ccall safe "CPython/Types/Iterator.chs.h PySeqIter_New"
sequenceIteratorNew'_ :: ((Ptr ()) -> (IO (Ptr ())))
foreign import ccall safe "CPython/Types/Iterator.chs.h PyCallIter_New"
callableIteratorNew'_ :: ((Ptr ()) -> ((Ptr ()) -> (IO (Ptr ()))))