dune-common
2.2.0
|
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