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