CharmPupable.hpp
Go to the documentation of this file.
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 derives off of a non-class template base class must contain
20  * this macro if it is to be serialized.
21  */
22 #define WRAPPED_PUPable_decl_template(className) \
23  PUPable_decl_template(SINGLE_ARG(className))
24 
25 /*!
26  * \ingroup ParallelGroup
27  * \brief Mark derived template classes as serializable
28  *
29  * Any class that derives off of a class template base class must contain
30  * this macro if it is to be serialized.
31  */
32 #define WRAPPED_PUPable_decl_base_template(baseClassName, className) \
33  PUPable_decl_base_template(SINGLE_ARG(baseClassName), SINGLE_ARG(className))
34 
35 /// Wraps the Charm++ macro, see the Charm++ documentation
36 #define WRAPPED_PUPable_decl(className) PUPable_decl(SINGLE_ARG(className))
37 
38 /// Wraps the Charm++ macro, see the Charm++ documentation
39 #define WRAPPED_PUPable_abstract(className) \
40  PUPable_abstract(SINGLE_ARG(className))