Chris@55: #ifndef INCLUDED_PORTAUDIO_AUTOSYSTEM_HXX Chris@55: #define INCLUDED_PORTAUDIO_AUTOSYSTEM_HXX Chris@55: Chris@55: // --------------------------------------------------------------------------------------- Chris@55: Chris@55: #include "portaudiocpp/System.hxx" Chris@55: Chris@55: // --------------------------------------------------------------------------------------- Chris@55: Chris@55: namespace portaudio Chris@55: { Chris@55: Chris@55: Chris@55: ////// Chris@55: /// @brief A RAII idiom class to ensure automatic clean-up when an exception is Chris@55: /// raised. Chris@55: /// Chris@55: /// A simple helper class which uses the 'Resource Acquisition is Initialization' Chris@55: /// idiom (RAII). Use this class to initialize/terminate the System rather than Chris@55: /// using System directly. AutoSystem must be created on stack and must be valid Chris@55: /// throughout the time you wish to use PortAudioCpp. Your 'main' function might be Chris@55: /// a good place for it. Chris@55: /// Chris@55: /// To avoid having to type portaudio::System::instance().xyz() all the time, it's usually Chris@55: /// a good idea to make a reference to the System which can be accessed directly. Chris@55: /// @verbatim Chris@55: /// portaudio::AutoSys autoSys; Chris@55: /// portaudio::System &sys = portaudio::System::instance(); Chris@55: /// @endverbatim Chris@55: ////// Chris@55: class AutoSystem Chris@55: { Chris@55: public: Chris@55: AutoSystem(bool initialize = true) Chris@55: { Chris@55: if (initialize) Chris@55: System::initialize(); Chris@55: } Chris@55: Chris@55: ~AutoSystem() Chris@55: { Chris@55: if (System::exists()) Chris@55: System::terminate(); Chris@55: } Chris@55: Chris@55: void initialize() Chris@55: { Chris@55: System::initialize(); Chris@55: } Chris@55: Chris@55: void terminate() Chris@55: { Chris@55: System::terminate(); Chris@55: } Chris@55: }; Chris@55: Chris@55: Chris@55: } // namespace portaudio Chris@55: Chris@55: // --------------------------------------------------------------------------------------- Chris@55: Chris@55: #endif // INCLUDED_PORTAUDIO_AUTOSYSTEM_HXX