Line data Source code
1 1 : // Distributed under the MIT License.
2 : // See LICENSE.txt for details.
3 :
4 : /// \file
5 : /// Defines macros to allow serialization of abstract template base classes
6 :
7 : #pragma once
8 :
9 : #include <pup.h>
10 :
11 : #ifdef __GNUC__
12 : #pragma GCC system_header
13 : #endif
14 :
15 : /*!
16 : * \ingroup ParallelGroup
17 : * \brief Mark derived classes as serializable
18 : *
19 : * Any class that inherits from an abstract base class where the base class is
20 : * not a template class must contain this macro if it is to be serialized.
21 : */
22 1 : #define WRAPPED_PUPable_decl_template(className) \
23 : PUPable_decl_template(SINGLE_ARG(className)) // NOLINT
24 :
25 : /*!
26 : * \ingroup ParallelGroup
27 : * \brief Mark derived template classes as serializable
28 : *
29 : * Any class that inherits from an abstract base class where the base class is
30 : * a template class must contain this macro if it is to be serialized.
31 : */
32 1 : #define WRAPPED_PUPable_decl_base_template(baseClassName, className) \
33 : PUPable_decl_base_template(SINGLE_ARG(baseClassName), /* NOLINT */ \
34 : SINGLE_ARG(className)) // NOLINT
35 :
36 : /// Wraps the Charm++ macro, see the Charm++ documentation
37 1 : #define WRAPPED_PUPable_decl(className) \
38 : PUPable_decl(SINGLE_ARG(className)) // NOLINT
39 :
40 : /// Wraps the Charm++ macro, see the Charm++ documentation
41 1 : #define WRAPPED_PUPable_abstract(className) \
42 : PUPable_abstract(SINGLE_ARG(className)) // NOLINT
|