Chris@4
|
1 #ifndef INCLUDED_PORTAUDIO_SYSTEMHOSTAPIITERATOR_HXX
|
Chris@4
|
2 #define INCLUDED_PORTAUDIO_SYSTEMHOSTAPIITERATOR_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 HostApi;
|
Chris@4
|
17 }
|
Chris@4
|
18
|
Chris@4
|
19 // ---------------------------------------------------------------------------------------
|
Chris@4
|
20
|
Chris@4
|
21 // Declaration(s):
|
Chris@4
|
22 namespace portaudio
|
Chris@4
|
23 {
|
Chris@4
|
24
|
Chris@4
|
25
|
Chris@4
|
26 //////
|
Chris@4
|
27 /// @brief Iterator class for iterating through all HostApis in a System.
|
Chris@4
|
28 ///
|
Chris@4
|
29 /// Compliant with the STL bidirectional iterator concept.
|
Chris@4
|
30 //////
|
Chris@4
|
31 class System::HostApiIterator
|
Chris@4
|
32 {
|
Chris@4
|
33 public:
|
Chris@4
|
34 typedef std::bidirectional_iterator_tag iterator_category;
|
Chris@4
|
35 typedef Device value_type;
|
Chris@4
|
36 typedef ptrdiff_t difference_type;
|
Chris@4
|
37 typedef HostApi * pointer;
|
Chris@4
|
38 typedef HostApi & reference;
|
Chris@4
|
39
|
Chris@4
|
40 HostApi &operator*() const;
|
Chris@4
|
41 HostApi *operator->() const;
|
Chris@4
|
42
|
Chris@4
|
43 HostApiIterator &operator++();
|
Chris@4
|
44 HostApiIterator operator++(int);
|
Chris@4
|
45 HostApiIterator &operator--();
|
Chris@4
|
46 HostApiIterator operator--(int);
|
Chris@4
|
47
|
Chris@4
|
48 bool operator==(const HostApiIterator &rhs);
|
Chris@4
|
49 bool operator!=(const HostApiIterator &rhs);
|
Chris@4
|
50
|
Chris@4
|
51 private:
|
Chris@4
|
52 friend class System;
|
Chris@4
|
53 HostApi **ptr_;
|
Chris@4
|
54 };
|
Chris@4
|
55
|
Chris@4
|
56
|
Chris@4
|
57 } // namespace portaudio
|
Chris@4
|
58
|
Chris@4
|
59 // ---------------------------------------------------------------------------------------
|
Chris@4
|
60
|
Chris@4
|
61 #endif // INCLUDED_PORTAUDIO_SYSTEMHOSTAPIITERATOR_HXX
|