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