Chris@4
|
1 #ifndef INCLUDED_PORTAUDIO_SYSTEMDEVICEITERATOR_HXX
|
Chris@4
|
2 #define INCLUDED_PORTAUDIO_SYSTEMDEVICEITERATOR_HXX
|
Chris@4
|
3
|
Chris@4
|
4 // ---------------------------------------------------------------------------------------
|
Chris@4
|
5
|
Chris@4
|
6 #include <iterator>
|
Chris@4
|
7 #include <cstddef>
|
Chris@4
|
8
|
Chris@4
|
9 #include "portaudiocpp/System.hxx"
|
Chris@4
|
10
|
Chris@4
|
11 // ---------------------------------------------------------------------------------------
|
Chris@4
|
12
|
Chris@4
|
13 // Forward declaration(s):
|
Chris@4
|
14 namespace portaudio
|
Chris@4
|
15 {
|
Chris@4
|
16 class Device;
|
Chris@4
|
17 class HostApi;
|
Chris@4
|
18 }
|
Chris@4
|
19
|
Chris@4
|
20 // ---------------------------------------------------------------------------------------
|
Chris@4
|
21
|
Chris@4
|
22 // Declaration(s):
|
Chris@4
|
23 namespace portaudio
|
Chris@4
|
24 {
|
Chris@4
|
25
|
Chris@4
|
26
|
Chris@4
|
27 //////
|
Chris@4
|
28 /// @brief Iterator class for iterating through all Devices in a System.
|
Chris@4
|
29 ///
|
Chris@4
|
30 /// Devices will be iterated by iterating all Devices in each
|
Chris@4
|
31 /// HostApi in the System. Compliant with the STL bidirectional
|
Chris@4
|
32 /// iterator concept.
|
Chris@4
|
33 //////
|
Chris@4
|
34 class System::DeviceIterator
|
Chris@4
|
35 {
|
Chris@4
|
36 public:
|
Chris@4
|
37 typedef std::bidirectional_iterator_tag iterator_category;
|
Chris@4
|
38 typedef Device value_type;
|
Chris@4
|
39 typedef ptrdiff_t difference_type;
|
Chris@4
|
40 typedef Device * pointer;
|
Chris@4
|
41 typedef Device & reference;
|
Chris@4
|
42
|
Chris@4
|
43 Device &operator*() const;
|
Chris@4
|
44 Device *operator->() const;
|
Chris@4
|
45
|
Chris@4
|
46 DeviceIterator &operator++();
|
Chris@4
|
47 DeviceIterator operator++(int);
|
Chris@4
|
48 DeviceIterator &operator--();
|
Chris@4
|
49 DeviceIterator operator--(int);
|
Chris@4
|
50
|
Chris@4
|
51 bool operator==(const DeviceIterator &rhs);
|
Chris@4
|
52 bool operator!=(const DeviceIterator &rhs);
|
Chris@4
|
53
|
Chris@4
|
54 private:
|
Chris@4
|
55 friend class System;
|
Chris@4
|
56 friend class HostApi;
|
Chris@4
|
57 Device **ptr_;
|
Chris@4
|
58 };
|
Chris@4
|
59
|
Chris@4
|
60
|
Chris@4
|
61 } // namespace portaudio
|
Chris@4
|
62
|
Chris@4
|
63 // ---------------------------------------------------------------------------------------
|
Chris@4
|
64
|
Chris@4
|
65 #endif // INCLUDED_PORTAUDIO_SYSTEMDEVICEITERATOR_HXX
|
Chris@4
|
66
|