view src/portaudio_20140130/bindings/cpp/include/portaudiocpp/HostApi.hxx @ 83:ae30d91d2ffe

Replace these with versions built using an older toolset (so as to avoid ABI compatibilities when linking on Ubuntu 14.04 for packaging purposes)
author Chris Cannam
date Fri, 07 Feb 2020 11:51:13 +0000
parents 7ddb4fc30dac
children
line wrap: on
line source
#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 retreived.
	//////
	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