dune-common  2.2.1
bartonnackmanifcheck.hh
Go to the documentation of this file.
1 
11 //- Dune includes
13 
14 #ifdef CHECK_INTERFACE_IMPLEMENTATION
15 #undef CHECK_INTERFACE_IMPLEMENTATION
16 #endif
17 #ifdef CHECK_AND_CALL_INTERFACE_IMPLEMENTATION
18 #undef CHECK_AND_CALL_INTERFACE_IMPLEMENTATION
19 #endif
20 
21 #ifdef NDEBUG
22 #define CHECK_INTERFACE_IMPLEMENTATION(dummy)
23 #else
24 #define CHECK_INTERFACE_IMPLEMENTATION(__interface_method_to_call__) \
25  {\
26  static bool call = false; \
27  if( call == true ) \
28  DUNE_THROW(NotImplemented,"Interface method not implemented!");\
29  call = true; \
30  try { \
31  (__interface_method_to_call__); \
32  call = false; \
33  } \
34  catch ( ... ) \
35  { \
36  call = false; \
37  throw; \
38  } \
39  }
40 #endif
41 
47 #ifdef NDEBUG
48 #define CHECK_AND_CALL_INTERFACE_IMPLEMENTATION(__interface_method_to_call__) \
49  (__interface_method_to_call__)
50 #else
51 #define CHECK_AND_CALL_INTERFACE_IMPLEMENTATION(__interface_method_to_call__) \
52  CHECK_INTERFACE_IMPLEMENTATION(__interface_method_to_call__)
53 #endif