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