debug: check sanity at end of scope for CHECK_SANITY
This commit is contained in:
parent
fe88708c50
commit
5ba9da1828
32
debug.hpp
32
debug.hpp
@ -96,14 +96,9 @@
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
#define CHECK_SANITY(A) do { \
|
||||
DEBUG_ONLY ( \
|
||||
const auto &__a = (A); \
|
||||
if (!::util::debug::is_valid (__a)) { \
|
||||
_CHECK_PANIC("failed sanity test for %s, %!\n", #A, __a); \
|
||||
} \
|
||||
); \
|
||||
} while (0)
|
||||
#define CHECK_SANITY(A) \
|
||||
::util::debug::scoped_sanity PASTE(__scoped_sanity_checker,__LINE__) (A); \
|
||||
(void)PASTE(__scoped_sanity_checker,__LINE__);
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
@ -615,7 +610,26 @@ namespace util::debug {
|
||||
(void)t;
|
||||
CHECK (is_valid (t));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
template <typename ValueT>
|
||||
class scoped_sanity {
|
||||
public:
|
||||
scoped_sanity (ValueT &_value):
|
||||
m_value (_value)
|
||||
{
|
||||
sanity (m_value);
|
||||
}
|
||||
|
||||
~scoped_sanity ()
|
||||
{
|
||||
sanity (m_value);
|
||||
}
|
||||
|
||||
private:
|
||||
const ValueT& m_value;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
Loading…
Reference in New Issue
Block a user