dune-common  2.2.0
bartonnackmanifcheck.hh
Go to the documentation of this file.
00001 
00011 //- Dune includes 
00012 #include <dune/common/exceptions.hh>
00013 
00014 #ifdef CHECK_INTERFACE_IMPLEMENTATION
00015 #undef CHECK_INTERFACE_IMPLEMENTATION
00016 #endif
00017 #ifdef CHECK_AND_CALL_INTERFACE_IMPLEMENTATION
00018 #undef CHECK_AND_CALL_INTERFACE_IMPLEMENTATION
00019 #endif
00020 
00021 #ifdef NDEBUG
00022 #define CHECK_INTERFACE_IMPLEMENTATION(dummy) 
00023 #else
00024 #define CHECK_INTERFACE_IMPLEMENTATION(__interface_method_to_call__) \
00025   {\
00026     static bool call = false; \
00027     if( call == true ) \
00028       DUNE_THROW(NotImplemented,"Interface method not implemented!");\
00029     call = true; \
00030     try { \
00031       (__interface_method_to_call__); \
00032       call = false; \
00033     } \
00034     catch ( ... ) \
00035     { \
00036       call = false; \
00037       throw; \
00038     } \
00039   }
00040 #endif
00041 
00047 #ifdef NDEBUG 
00048 #define CHECK_AND_CALL_INTERFACE_IMPLEMENTATION(__interface_method_to_call__) \
00049   (__interface_method_to_call__)
00050 #else
00051 #define CHECK_AND_CALL_INTERFACE_IMPLEMENTATION(__interface_method_to_call__) \
00052   CHECK_INTERFACE_IMPLEMENTATION(__interface_method_to_call__)
00053 #endif