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