Chris@4: #ifndef INCLUDED_PORTAUDIO_SYSTEMDEVICEITERATOR_HXX Chris@4: #define INCLUDED_PORTAUDIO_SYSTEMDEVICEITERATOR_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 Device; 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 Devices in a System. Chris@4: /// Chris@4: /// Devices will be iterated by iterating all Devices in each Chris@4: /// HostApi in the System. Compliant with the STL bidirectional Chris@4: /// iterator concept. Chris@4: ////// Chris@4: class System::DeviceIterator 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 Device * pointer; Chris@4: typedef Device & reference; Chris@4: Chris@4: Device &operator*() const; Chris@4: Device *operator->() const; Chris@4: Chris@4: DeviceIterator &operator++(); Chris@4: DeviceIterator operator++(int); Chris@4: DeviceIterator &operator--(); Chris@4: DeviceIterator operator--(int); Chris@4: Chris@4: bool operator==(const DeviceIterator &rhs); Chris@4: bool operator!=(const DeviceIterator &rhs); Chris@4: Chris@4: private: Chris@4: friend class System; Chris@4: friend class HostApi; Chris@4: Device **ptr_; Chris@4: }; Chris@4: Chris@4: Chris@4: } // namespace portaudio Chris@4: Chris@4: // --------------------------------------------------------------------------------------- Chris@4: Chris@4: #endif // INCLUDED_PORTAUDIO_SYSTEMDEVICEITERATOR_HXX Chris@4: