cannam@124: #ifndef INCLUDED_PORTAUDIO_HOSTAPI_HXX cannam@124: #define INCLUDED_PORTAUDIO_HOSTAPI_HXX cannam@124: cannam@124: // --------------------------------------------------------------------------------------- cannam@124: cannam@124: #include "portaudio.h" cannam@124: cannam@124: #include "portaudiocpp/System.hxx" cannam@124: cannam@124: // --------------------------------------------------------------------------------------- cannam@124: cannam@124: // Forward declaration(s): cannam@124: namespace portaudio cannam@124: { cannam@124: class Device; cannam@124: } cannam@124: cannam@124: // --------------------------------------------------------------------------------------- cannam@124: cannam@124: // Declaration(s): cannam@124: namespace portaudio cannam@124: { cannam@124: cannam@124: cannam@124: ////// cannam@124: /// @brief HostApi represents a host API (usually type of driver) in the System. cannam@124: /// cannam@124: /// A single System can support multiple HostApi's each one typically having cannam@124: /// a set of Devices using that HostApi (usually driver type). All Devices in cannam@124: /// the HostApi can be enumerated and the default input/output Device for this cannam@124: /// HostApi can be retreived. cannam@124: ////// cannam@124: class HostApi cannam@124: { cannam@124: public: cannam@124: typedef System::DeviceIterator DeviceIterator; cannam@124: cannam@124: // query info: id, name, numDevices cannam@124: PaHostApiTypeId typeId() const; cannam@124: PaHostApiIndex index() const; cannam@124: const char *name() const; cannam@124: int deviceCount() const; cannam@124: cannam@124: // iterate devices cannam@124: DeviceIterator devicesBegin(); cannam@124: DeviceIterator devicesEnd(); cannam@124: cannam@124: // default devices cannam@124: Device &defaultInputDevice() const; cannam@124: Device &defaultOutputDevice() const; cannam@124: cannam@124: // comparison operators cannam@124: bool operator==(const HostApi &rhs) const; cannam@124: bool operator!=(const HostApi &rhs) const; cannam@124: cannam@124: private: cannam@124: const PaHostApiInfo *info_; cannam@124: Device **devices_; cannam@124: cannam@124: private: cannam@124: friend class System; cannam@124: cannam@124: explicit HostApi(PaHostApiIndex index); cannam@124: ~HostApi(); cannam@124: cannam@124: HostApi(const HostApi &); // non-copyable cannam@124: HostApi &operator=(const HostApi &); // non-copyable cannam@124: }; cannam@124: cannam@124: cannam@124: } cannam@124: cannam@124: // --------------------------------------------------------------------------------------- cannam@124: cannam@124: #endif // INCLUDED_PORTAUDIO_HOSTAPI_HXX cannam@124: