cannam@140
|
1 #ifndef INCLUDED_PORTAUDIO_HOSTAPI_HXX
|
cannam@140
|
2 #define INCLUDED_PORTAUDIO_HOSTAPI_HXX
|
cannam@140
|
3
|
cannam@140
|
4 // ---------------------------------------------------------------------------------------
|
cannam@140
|
5
|
cannam@140
|
6 #include "portaudio.h"
|
cannam@140
|
7
|
cannam@140
|
8 #include "portaudiocpp/System.hxx"
|
cannam@140
|
9
|
cannam@140
|
10 // ---------------------------------------------------------------------------------------
|
cannam@140
|
11
|
cannam@140
|
12 // Forward declaration(s):
|
cannam@140
|
13 namespace portaudio
|
cannam@140
|
14 {
|
cannam@140
|
15 class Device;
|
cannam@140
|
16 }
|
cannam@140
|
17
|
cannam@140
|
18 // ---------------------------------------------------------------------------------------
|
cannam@140
|
19
|
cannam@140
|
20 // Declaration(s):
|
cannam@140
|
21 namespace portaudio
|
cannam@140
|
22 {
|
cannam@140
|
23
|
cannam@140
|
24
|
cannam@140
|
25 //////
|
cannam@140
|
26 /// @brief HostApi represents a host API (usually type of driver) in the System.
|
cannam@140
|
27 ///
|
cannam@140
|
28 /// A single System can support multiple HostApi's each one typically having
|
cannam@140
|
29 /// a set of Devices using that HostApi (usually driver type). All Devices in
|
cannam@140
|
30 /// the HostApi can be enumerated and the default input/output Device for this
|
cannam@140
|
31 /// HostApi can be retreived.
|
cannam@140
|
32 //////
|
cannam@140
|
33 class HostApi
|
cannam@140
|
34 {
|
cannam@140
|
35 public:
|
cannam@140
|
36 typedef System::DeviceIterator DeviceIterator;
|
cannam@140
|
37
|
cannam@140
|
38 // query info: id, name, numDevices
|
cannam@140
|
39 PaHostApiTypeId typeId() const;
|
cannam@140
|
40 PaHostApiIndex index() const;
|
cannam@140
|
41 const char *name() const;
|
cannam@140
|
42 int deviceCount() const;
|
cannam@140
|
43
|
cannam@140
|
44 // iterate devices
|
cannam@140
|
45 DeviceIterator devicesBegin();
|
cannam@140
|
46 DeviceIterator devicesEnd();
|
cannam@140
|
47
|
cannam@140
|
48 // default devices
|
cannam@140
|
49 Device &defaultInputDevice() const;
|
cannam@140
|
50 Device &defaultOutputDevice() const;
|
cannam@140
|
51
|
cannam@140
|
52 // comparison operators
|
cannam@140
|
53 bool operator==(const HostApi &rhs) const;
|
cannam@140
|
54 bool operator!=(const HostApi &rhs) const;
|
cannam@140
|
55
|
cannam@140
|
56 private:
|
cannam@140
|
57 const PaHostApiInfo *info_;
|
cannam@140
|
58 Device **devices_;
|
cannam@140
|
59
|
cannam@140
|
60 private:
|
cannam@140
|
61 friend class System;
|
cannam@140
|
62
|
cannam@140
|
63 explicit HostApi(PaHostApiIndex index);
|
cannam@140
|
64 ~HostApi();
|
cannam@140
|
65
|
cannam@140
|
66 HostApi(const HostApi &); // non-copyable
|
cannam@140
|
67 HostApi &operator=(const HostApi &); // non-copyable
|
cannam@140
|
68 };
|
cannam@140
|
69
|
cannam@140
|
70
|
cannam@140
|
71 }
|
cannam@140
|
72
|
cannam@140
|
73 // ---------------------------------------------------------------------------------------
|
cannam@140
|
74
|
cannam@140
|
75 #endif // INCLUDED_PORTAUDIO_HOSTAPI_HXX
|
cannam@140
|
76
|