#include <libkern/c++/OSIterator.h>

libkern/c++/OSIterator.h Kernel.framework

@header @abstract This header declares the OSIterator collection class.
1 class

classOSIterator

@class OSIterator @abstract The abstract superclass for Libkern iterators. @discussion OSIterator is the abstract superclass for all Libkern C++ object iterators. It defines the basic interface for iterating and resetting. See @link //apple_ref/cpp/macro/OSCollection OSCollection@/link and @link //apple_ref/cpp/macro/OSCollectionIterator OSCollectionIterator@/link for more information. With very few exceptions in the I/O Kit, all Libkern-based C++ classes, functions, and macros are <b>unsafe</b> to use in a primary interrupt context. Consult the I/O Kit documentation related to primary interrupts for more information. OSIterator provides no concurrency protection.
: public OSObject
virtual void reset() = 0pure virtual
@function reset @abstract Resets the iterator to the beginning of the collection, as if it had just been created. @discussion Subclasses must implement this pure virtual member function.
virtual bool isValid() = 0pure virtual
@function isValid @abstract Check that the collection hasn't been modified during iteration. @result <code>true</code> if the iterator is valid for continued use, <code>false</code> otherwise (typically because the collection being iterated has been modified). @discussion Subclasses must implement this pure virtual member function.
virtual OSObject *getNextObject() = 0pure virtual
@function getNextObject @abstract Advances to and returns the next object in the iteration. @return The next object in the iteration context, <code>NULL</code> if there is no next object or if the iterator is no longer valid. @discussion The returned object will be released if removed from the collection; if you plan to store the reference, you should call <code>@link //apple_ref/cpp/instm/OSObject/retain/virtualvoid/() retain@/link</code> on that object. Subclasses must implement this pure virtual function to check for validity with <code>@link isValid isValid@/link</code>, and then to advance the iteration context to the next object (if any) and return that next object, or <code>NULL</code> if there is none.