20#include <boost/assert.hpp>
22#pragma GCC diagnostic push
23#pragma GCC diagnostic ignored "-Weffc++"
36#ifndef BOOST_ASSERT_IS_VOID
77 BOOST_ASSERT_MSG( (
obj_->*
fun_)(),
"invariant violated" );
92#ifndef BOOST_ASSERT_IS_VOID
93# define DBC_INV_RAII(TT) const DbCRAIIassert<TT> _destructmeatreturn( &TT::invariant, this )
96# define DBC_INV_RAII(TT) ((void)0)
103#define DBC_PRE(XXX) BOOST_ASSERT(XXX)
109#define DBC_POST(XXX) BOOST_ASSERT(XXX)
113#define DBC_INV BOOST_ASSERT(invariant())
121#define DBC_INV_CTOR(T) BOOST_ASSERT(T::invariant())
124#pragma GCC diagnostic pop
Helper class to call a check always at function return.
Definition dbc.h:51
~DbCRAIIassert()
Dtor.
Definition dbc.h:76
bool(T::*)() const noexcept assert_t
A shortcut for the invariant() function pointers.
Definition dbc.h:54
DbCRAIIassert(assert_t p_fun, T *p_obj)
Ctor.
Definition dbc.h:70
const T * obj_
The this of the invariant function.
Definition dbc.h:62
const assert_t fun_
The invariant() of the current class to be called at function return.
Definition dbc.h:58
Design by contract interface class.
Definition dbc.h:30
~DbC()=default
Protected dtor.
virtual bool invariant() const noexcept
Checks the invariants of the class in which it is defined.
Definition dbc.h:39