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