|
Serialization
|
Sometimes a certain value has to change only for a limited scope. This class wrapper saves a copy of the current state of some object, and resets the object's state at destruction time, undoing any change the object may have gone through. Here is the interface:
template<class T>
// T requirements:
// - POD or object semantic (cannot be reference, function, ...)
// - copy constructor
// - operator = (no-throw one preferred)
class state_saver : private boost::noncopyable
{
private:
... // implementation
public:
state_saver(T & object);
~state_saver();
};
The complete implementation can be found
here
The following illustrates how this is expected to be used.
#include <boost/state_saver.hpp>
void func(A & a)
boost::state_saver<A> s(a);
... // alter state of a by calling non-const functions
... // call other functions
// original state of a automatically restored on exit
}
Robert Ramey made an initial version for the serialization library.
Pavel Vozenilek made several non-obvious refinements to make it more secure and boost friendly
© Copyright Robert Ramey 2002-2004. Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)