IMP logo
IMP Reference Guide  develop.62cd6b8d93,2024/10/30
The Integrative Modeling Platform
doxygen_macros.h
Go to the documentation of this file.
1 /**
2  * \file IMP/doxygen_macros.h
3  * \brief Helper macros for writing doxygen documentation
4  *
5  * Copyright 2007-2022 IMP Inventors. All rights reserved.
6  *
7  */
8 
9 #ifndef IMPKERNEL_DOXYGEN_MACROS_H
10 #define IMPKERNEL_DOXYGEN_MACROS_H
11 #include <IMP/kernel_config.h>
12 // for override
13 #include "swig_macros.h"
14 
15 #ifdef IMP_DOXYGEN
16 //! Hide something from doxygen
17 /** */
18 #define IMP_NO_DOXYGEN(x)
19 //! Only show something to doxygen
20 /** */
21 #define IMP_ONLY_DOXYGEN(x) x IMP_REQUIRE_SEMICOLON_CLASS(only_doxy)
22 #define IMP_SWITCH_DOXYGEN(x, y) x
23 #else
24 #define IMP_NO_DOXYGEN(x) x
25 #define IMP_ONLY_DOXYGEN(x) IMP_REQUIRE_SEMICOLON_CLASS(only_doxy)
26 #define IMP_SWITCH_DOXYGEN(x, y) y
27 #endif
28 
29 #ifdef IMP_DOXYGEN
30 /** Declare a method that implements a method that is pure virtual in the
31  base class.
32 */
33 #define IMP_IMPLEMENT(signature)
34 /** Define a method inline that implements a pure virtual method.
35  */
36 #define IMP_IMPLEMENT_INLINE(signature, body)
37 
38 /** Define a method inline that implements a pure virtual method that
39  is hidden from swig.
40  */
41 #define IMP_IMPLEMENT_INLINE_NO_SWIG(signature, body)
42 
43 /** Define an implementation detail template method.
44  */
45 #define IMP_IMPLEMENTATION_TEMPLATE_1(arg0, signature, body)
46 #define IMP_IMPLEMENTATION_TEMPLATE_2(arg0, arg1, signature, body)
47 #else
48 #define IMP_IMPLEMENT(signature) signature
49 
50 #define IMP_IMPLEMENT_INLINE(signature, body) \
51  signature override { body; }
52 
53 #ifndef SWIG
54 #define IMP_IMPLEMENT_INLINE_NO_SWIG(signature, body) \
55  signature override { body; }
56 #else
57 #define IMP_IMPLEMENT_INLINE_NO_SWIG(signature, body)
58 
59 #endif
60 
61 #define IMP_IMPLEMENTATION_TEMPLATE_1(arg0, signature, body) \
62  template <arg0> \
63  signature override { \
64  body \
65  }
66 
67 #define IMP_IMPLEMENTATION_TEMPLATE_2(arg0, arg1, signature, body) \
68  template <arg0, arg1> \
69  signature override { \
70  body \
71  }
72 
73 #endif
74 
75 #endif /* IMPKERNEL_DOXYGEN_MACROS_H */
Macros to hide code from SWIG.