Simpatico  v1.10
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 
13 namespace 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
Utility classes for scientific computation.
Definition: accumulators.mod:1
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