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