PSCF v1.1
serialize.h
1#ifndef UTIL_SERIALIZE_H
2#define UTIL_SERIALIZE_H
3
4/*
5* Util Package - C++ Utilities for Scientific Computation
6*
7* Copyright 2010 - 2017, The Regents of the University of Minnesota
8* Distributed under the terms of the GNU General Public License.
9*/
10
11#include <util/global.h>
12
13namespace Util
14{
15
28 template <class Archive, typename T>
29 inline void serialize(Archive& ar, T& data, const unsigned int version)
30 { data.serialize(ar, version); }
31
41 template <class Archive, typename T>
42 inline void serializeEnum(Archive& ar, T& data, const unsigned int version = 0)
43 {
44 unsigned int i;
45 if (Archive::is_saving()) {
46 i = (unsigned int)data;
47 }
48 ar & i;
49 if (Archive::is_loading()) {
50 data = (T)i;
51 }
52 }
53
63 template <class Archive, typename T>
64 inline void serializeCheck(Archive& ar, T& data, const char* label = "")
65 {
66 T temp;
67 if (Archive::is_saving()) {
68 temp = data;
69 }
70 ar & temp;
71 if (Archive::is_loading()) {
72 if (temp != data) {
73 UTIL_THROW("Inconsistent data");
74 }
75 }
76 }
77
78}
79#endif
File containing preprocessor macros for error handling.
#define UTIL_THROW(msg)
Macro for throwing an Exception, reporting function, file and line number.
Definition: global.h:51
void serializeEnum(Archive &ar, T &data, const unsigned int version=0)
Serialize an enumeration value.
Definition: serialize.h:42
void serializeCheck(Archive &ar, T &data, const char *label="")
Save a value, or save and check correctness on loading.
Definition: serialize.h:64
Utility classes for scientific computation.
Definition: accumulators.mod:1