00001
00002
00022
00023 #include <dune/common/exceptions.hh>
00024
00025 #ifdef CHECK_INTERFACE_IMPLEMENTATION
00026 #undef CHECK_INTERFACE_IMPLEMENTATION
00027 #endif
00028 #ifdef CHECK_AND_CALL_INTERFACE_IMPLEMENTATION
00029 #undef CHECK_AND_CALL_INTERFACE_IMPLEMENTATION
00030 #endif
00031
00032 #if defined NDEBUG || !defined DUNE_INTERFACECHECK
00033 #define CHECK_INTERFACE_IMPLEMENTATION(dummy)
00034 #else
00035 #define CHECK_INTERFACE_IMPLEMENTATION(__interface_method_to_call__) \
00036 {\
00037 static bool call = false; \
00038 if( call == true ) \
00039 DUNE_THROW(NotImplemented,"Interface method not implemented!");\
00040 call = true; \
00041 try { \
00042 (__interface_method_to_call__); \
00043 call = false; \
00044 } \
00045 catch ( ... ) \
00046 { \
00047 call = false; \
00048 throw; \
00049 } \
00050 }
00051 #endif
00052
00058 #if defined NDEBUG || !defined DUNE_INTERFACECHECK
00059 #define CHECK_AND_CALL_INTERFACE_IMPLEMENTATION(__interface_method_to_call__) \
00060 (__interface_method_to_call__)
00061 #else
00062 #define CHECK_AND_CALL_INTERFACE_IMPLEMENTATION(__interface_method_to_call__) \
00063 CHECK_INTERFACE_IMPLEMENTATION(__interface_method_to_call__)
00064 #endif