libfoedus-core
FOEDUS Core Library
|
Calls Initializable::uninitialize() automatically when it gets out of scope. More...
Calls Initializable::uninitialize() automatically when it gets out of scope.
NOT A SILVER BULLET! This is a scope guard object to help release Initializable objects, but there are inherent difficulties to handle errors out of uninitialization. eg: http://stackoverflow.com/questions/159240/raii-vs-exceptions
The only correct solution is for every code to make sure calling uninitialize() explicitly and handling the returned ErrorStack responsively. This object is just an imperfect safety net.
Definition at line 220 of file initializable.hpp.
#include <initializable.hpp>
Public Types | |
enum | Policy { kAbortIfNotExplicitlyUninitialized = 0, kAbortIfUninitializeError, kWarnIfUninitializeError, kSilent } |
Defines the behavior of this scope guard. More... | |
Public Member Functions | |
UninitializeGuard (Initializable *target, Policy policy=kAbortIfUninitializeError) | |
~UninitializeGuard () | |
Defines the behavior of this scope guard.
Definition at line 225 of file initializable.hpp.
|
inline |
Definition at line 251 of file initializable.hpp.
foedus::UninitializeGuard::~UninitializeGuard | ( | ) |
Definition at line 29 of file initializable.cpp.
References ASSERT_ND, foedus::ErrorStack::is_error(), foedus::Initializable::is_initialized(), kAbortIfNotExplicitlyUninitialized, kAbortIfUninitializeError, kSilent, kWarnIfUninitializeError, foedus::print_backtrace(), and foedus::Initializable::uninitialize().