To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.

The primary repository for this project is hosted at https://github.com/sonic-visualiser/sv-dependency-builds .
This repository is a read-only copy which is updated automatically every hour.

Statistics Download as Zip
| Branch: | Tag: | Revision:

root / src / portaudio_20161030_catalina_patch / bindings / cpp / include / portaudiocpp / AutoSystem.hxx @ 164:9fa11135915a

History | View | Annotate | Download (1.55 KB)

1
#ifndef INCLUDED_PORTAUDIO_AUTOSYSTEM_HXX
2
#define INCLUDED_PORTAUDIO_AUTOSYSTEM_HXX
3

    
4
// ---------------------------------------------------------------------------------------
5

    
6
#include "portaudiocpp/System.hxx"
7

    
8
// ---------------------------------------------------------------------------------------
9

    
10
namespace portaudio
11
{
12

    
13

    
14
	//////
15
	/// @brief A RAII idiom class to ensure automatic clean-up when an exception is 
16
	/// raised.
17
	///
18
	/// A simple helper class which uses the 'Resource Acquisition is Initialization' 
19
	/// idiom (RAII). Use this class to initialize/terminate the System rather than 
20
	/// using System directly. AutoSystem must be created on stack and must be valid 
21
	/// throughout the time you wish to use PortAudioCpp. Your 'main' function might be 
22
	/// a good place for it.
23
	///
24
	/// To avoid having to type portaudio::System::instance().xyz() all the time, it's usually 
25
	/// a good idea to make a reference to the System which can be accessed directly.
26
	/// @verbatim
27
	/// portaudio::AutoSys autoSys;
28
	/// portaudio::System &sys = portaudio::System::instance();
29
	/// @endverbatim
30
	//////
31
	class AutoSystem
32
	{
33
	public:
34
		AutoSystem(bool initialize = true)
35
		{
36
			if (initialize)
37
				System::initialize();
38
		}
39

    
40
		~AutoSystem()
41
		{
42
			if (System::exists())
43
				System::terminate();
44
		}
45

    
46
		void initialize()
47
		{
48
			System::initialize();
49
		}
50

    
51
		void terminate()
52
		{
53
			System::terminate();
54
		}
55
	};
56

    
57

    
58
} // namespace portaudio
59

    
60
// ---------------------------------------------------------------------------------------
61

    
62
#endif // INCLUDED_PORTAUDIO_AUTOSYSTEM_HXX