76 lines
		
	
	
		
			2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
		
		
			
		
	
	
			76 lines
		
	
	
		
			2 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
							 |