annotate src/portaudio_20140130/bindings/cpp/include/portaudiocpp/AutoSystem.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_AUTOSYSTEM_HXX
Chris@39 2 #define INCLUDED_PORTAUDIO_AUTOSYSTEM_HXX
Chris@39 3
Chris@39 4 // ---------------------------------------------------------------------------------------
Chris@39 5
Chris@39 6 #include "portaudiocpp/System.hxx"
Chris@39 7
Chris@39 8 // ---------------------------------------------------------------------------------------
Chris@39 9
Chris@39 10 namespace portaudio
Chris@39 11 {
Chris@39 12
Chris@39 13
Chris@39 14 //////
Chris@39 15 /// @brief A RAII idiom class to ensure automatic clean-up when an exception is
Chris@39 16 /// raised.
Chris@39 17 ///
Chris@39 18 /// A simple helper class which uses the 'Resource Acquisition is Initialization'
Chris@39 19 /// idiom (RAII). Use this class to initialize/terminate the System rather than
Chris@39 20 /// using System directly. AutoSystem must be created on stack and must be valid
Chris@39 21 /// throughout the time you wish to use PortAudioCpp. Your 'main' function might be
Chris@39 22 /// a good place for it.
Chris@39 23 ///
Chris@39 24 /// To avoid having to type portaudio::System::instance().xyz() all the time, it's usually
Chris@39 25 /// a good idea to make a reference to the System which can be accessed directly.
Chris@39 26 /// @verbatim
Chris@39 27 /// portaudio::AutoSys autoSys;
Chris@39 28 /// portaudio::System &sys = portaudio::System::instance();
Chris@39 29 /// @endverbatim
Chris@39 30 //////
Chris@39 31 class AutoSystem
Chris@39 32 {
Chris@39 33 public:
Chris@39 34 AutoSystem(bool initialize = true)
Chris@39 35 {
Chris@39 36 if (initialize)
Chris@39 37 System::initialize();
Chris@39 38 }
Chris@39 39
Chris@39 40 ~AutoSystem()
Chris@39 41 {
Chris@39 42 if (System::exists())
Chris@39 43 System::terminate();
Chris@39 44 }
Chris@39 45
Chris@39 46 void initialize()
Chris@39 47 {
Chris@39 48 System::initialize();
Chris@39 49 }
Chris@39 50
Chris@39 51 void terminate()
Chris@39 52 {
Chris@39 53 System::terminate();
Chris@39 54 }
Chris@39 55 };
Chris@39 56
Chris@39 57
Chris@39 58 } // namespace portaudio
Chris@39 59
Chris@39 60 // ---------------------------------------------------------------------------------------
Chris@39 61
Chris@39 62 #endif // INCLUDED_PORTAUDIO_AUTOSYSTEM_HXX