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