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