dune-common  2.2.0
Macros
bartonnackmanifcheck.hh File Reference

Provides check for implementation of interface methods when using static polymorphism, i.e. the Barton-Nackman trick. More...

Go to the source code of this file.

Macros

#define CHECK_INTERFACE_IMPLEMENTATION(__interface_method_to_call__)
#define CHECK_AND_CALL_INTERFACE_IMPLEMENTATION(__interface_method_to_call__)   CHECK_INTERFACE_IMPLEMENTATION(__interface_method_to_call__)

Detailed Description

Provides check for implementation of interface methods when using static polymorphism, i.e. the Barton-Nackman trick.

Author
Robert Kloefkorn Use by invoking CHECK_INTERFACE_IMPLEMENTATION(asImp().methodToCheck()) and for template methods double ( CHECK_INTERFACE_IMPLEMENTATION((asImp().template methodToCheck<param> ())).

Macro Definition Documentation

#define CHECK_AND_CALL_INTERFACE_IMPLEMENTATION (   __interface_method_to_call__)    CHECK_INTERFACE_IMPLEMENTATION(__interface_method_to_call__)

The macro CHECK_AND_CALL_INTERFACE_IMPLEMENTATION throws an exception, if the interface method ist not implemented and just calls the method otherwise. If NDEBUG is defined no checking is done and the method is just called.

#define CHECK_INTERFACE_IMPLEMENTATION (   __interface_method_to_call__)
Value:
{\
static bool call = false; \
if( call == true ) \
DUNE_THROW(NotImplemented,"Interface method not implemented!");\
call = true; \
try { \
(__interface_method_to_call__); \
call = false; \
} \
catch ( ... ) \
{ \
call = false; \
throw; \
} \
}