
On 2/1/05 1:50 AM, "Gennadiy Rozental" <gennadiy.rozental@thomson.com> wrote:
I want to save state once at the beggining of something and restore it multiple times after some steps that may pollute io state.
Nope, the classes are pure-RAII. The classes either save or do an "atomic" save-and-change in the constructor and restore in the destructor. There are no member functions you could even use for arbitrarily-timed restoring. If you could abuse the RAII paradigm to do this, then....
Could I make an object during startup and then force restore by making copy and destroying one immediately?
Pure-RAII classes don't use anything besides their constructors and destructor, so I never bothered to check how copying worked. Copying a RAII class can only work if it stores a pointer/reference to its changeable object and the old aspect values. (I think my classes do this, but you're depending on an implementation detail, so don't do it!)
BTW, why would you need to do this unusual kind of multiple restoring in the first place?
I want to save state of cout (or any other current log/report stream for that matter) at the start of test case/framework run and restore it after each assertion?
What's wrong with wrapping each trial in a block? void my_test() { { saver_type s( cout ); // do trial 1... } { saver_type s( cout ); // do trial 2... } for ( int i = 3 ; i < 10 ; ++i ) { saver_type s( cout ); // do one of the trials 3 through 9... } //... } -- Daryle Walker Mac, Internet, and Video Game Junkie darylew AT hotmail DOT com