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