annotate src/portaudio_20161030/bindings/cpp/include/portaudiocpp/System.hxx @ 81:7029a4916348

Merge build update
author Chris Cannam
date Thu, 31 Oct 2019 13:36:58 +0000
parents 284acf908dcd
children
rev   line source
Chris@55 1 #ifndef INCLUDED_PORTAUDIO_SYSTEM_HXX
Chris@55 2 #define INCLUDED_PORTAUDIO_SYSTEM_HXX
Chris@55 3
Chris@55 4 // ---------------------------------------------------------------------------------------
Chris@55 5
Chris@55 6 #include "portaudio.h"
Chris@55 7
Chris@55 8 // ---------------------------------------------------------------------------------------
Chris@55 9
Chris@55 10 // Forward declaration(s):
Chris@55 11 namespace portaudio
Chris@55 12 {
Chris@55 13 class Device;
Chris@55 14 class Stream;
Chris@55 15 class HostApi;
Chris@55 16 }
Chris@55 17
Chris@55 18 // ---------------------------------------------------------------------------------------
Chris@55 19
Chris@55 20 // Declaration(s):
Chris@55 21 namespace portaudio
Chris@55 22 {
Chris@55 23
Chris@55 24
Chris@55 25 //////
Chris@55 26 /// @brief System singleton which represents the PortAudio system.
Chris@55 27 ///
Chris@55 28 /// The System is used to initialize/terminate PortAudio and provide
Chris@55 29 /// a single acccess point to the PortAudio System (instance()).
Chris@55 30 /// It can be used to iterate through all HostApi 's in the System as
Chris@55 31 /// well as all devices in the System. It also provides some utility
Chris@55 32 /// functionality of PortAudio.
Chris@55 33 ///
Chris@55 34 /// Terminating the System will also abort and close the open streams.
Chris@55 35 /// The Stream objects will need to be deallocated by the client though
Chris@55 36 /// (it's usually a good idea to have them cleaned up automatically).
Chris@55 37 //////
Chris@55 38 class System
Chris@55 39 {
Chris@55 40 public:
Chris@55 41 class HostApiIterator; // forward declaration
Chris@55 42 class DeviceIterator; // forward declaration
Chris@55 43
Chris@55 44 // -------------------------------------------------------------------------------
Chris@55 45
Chris@55 46 static int version();
Chris@55 47 static const char *versionText();
Chris@55 48
Chris@55 49 static void initialize();
Chris@55 50 static void terminate();
Chris@55 51
Chris@55 52 static System &instance();
Chris@55 53 static bool exists();
Chris@55 54
Chris@55 55 // -------------------------------------------------------------------------------
Chris@55 56
Chris@55 57 // host apis:
Chris@55 58 HostApiIterator hostApisBegin();
Chris@55 59 HostApiIterator hostApisEnd();
Chris@55 60
Chris@55 61 HostApi &defaultHostApi();
Chris@55 62
Chris@55 63 HostApi &hostApiByTypeId(PaHostApiTypeId type);
Chris@55 64 HostApi &hostApiByIndex(PaHostApiIndex index);
Chris@55 65
Chris@55 66 int hostApiCount();
Chris@55 67
Chris@55 68 // -------------------------------------------------------------------------------
Chris@55 69
Chris@55 70 // devices:
Chris@55 71 DeviceIterator devicesBegin();
Chris@55 72 DeviceIterator devicesEnd();
Chris@55 73
Chris@55 74 Device &defaultInputDevice();
Chris@55 75 Device &defaultOutputDevice();
Chris@55 76
Chris@55 77 Device &deviceByIndex(PaDeviceIndex index);
Chris@55 78
Chris@55 79 int deviceCount();
Chris@55 80
Chris@55 81 static Device &nullDevice();
Chris@55 82
Chris@55 83 // -------------------------------------------------------------------------------
Chris@55 84
Chris@55 85 // misc:
Chris@55 86 void sleep(long msec);
Chris@55 87 int sizeOfSample(PaSampleFormat format);
Chris@55 88
Chris@55 89 private:
Chris@55 90 System();
Chris@55 91 ~System();
Chris@55 92
Chris@55 93 static System *instance_;
Chris@55 94 static int initCount_;
Chris@55 95
Chris@55 96 static HostApi **hostApis_;
Chris@55 97 static Device **devices_;
Chris@55 98
Chris@55 99 static Device *nullDevice_;
Chris@55 100 };
Chris@55 101
Chris@55 102
Chris@55 103 } // namespace portaudio
Chris@55 104
Chris@55 105
Chris@55 106 #endif // INCLUDED_PORTAUDIO_SYSTEM_HXX
Chris@55 107