annotate src/portaudio_20140130/bindings/cpp/include/portaudiocpp/System.hxx @ 39:7ddb4fc30dac

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