Chris@4: #ifndef INCLUDED_PORTAUDIO_SYSTEMHOSTAPIITERATOR_HXX Chris@4: #define INCLUDED_PORTAUDIO_SYSTEMHOSTAPIITERATOR_HXX Chris@4: Chris@4: // --------------------------------------------------------------------------------------- Chris@4: Chris@4: #include Chris@4: #include Chris@4: Chris@4: #include "portaudiocpp/System.hxx" Chris@4: Chris@4: // --------------------------------------------------------------------------------------- Chris@4: Chris@4: // Forward declaration(s): Chris@4: namespace portaudio Chris@4: { Chris@4: class HostApi; Chris@4: } Chris@4: Chris@4: // --------------------------------------------------------------------------------------- Chris@4: Chris@4: // Declaration(s): Chris@4: namespace portaudio Chris@4: { Chris@4: Chris@4: Chris@4: ////// Chris@4: /// @brief Iterator class for iterating through all HostApis in a System. Chris@4: /// Chris@4: /// Compliant with the STL bidirectional iterator concept. Chris@4: ////// Chris@4: class System::HostApiIterator Chris@4: { Chris@4: public: Chris@4: typedef std::bidirectional_iterator_tag iterator_category; Chris@4: typedef Device value_type; Chris@4: typedef ptrdiff_t difference_type; Chris@4: typedef HostApi * pointer; Chris@4: typedef HostApi & reference; Chris@4: Chris@4: HostApi &operator*() const; Chris@4: HostApi *operator->() const; Chris@4: Chris@4: HostApiIterator &operator++(); Chris@4: HostApiIterator operator++(int); Chris@4: HostApiIterator &operator--(); Chris@4: HostApiIterator operator--(int); Chris@4: Chris@4: bool operator==(const HostApiIterator &rhs); Chris@4: bool operator!=(const HostApiIterator &rhs); Chris@4: Chris@4: private: Chris@4: friend class System; Chris@4: HostApi **ptr_; Chris@4: }; Chris@4: Chris@4: Chris@4: } // namespace portaudio Chris@4: Chris@4: // --------------------------------------------------------------------------------------- Chris@4: Chris@4: #endif // INCLUDED_PORTAUDIO_SYSTEMHOSTAPIITERATOR_HXX