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