CASM  1.1.0
A Clusters Approach to Statistical Mechanics
json_io.hh
Go to the documentation of this file.
1 #ifndef CASM_support_enum_json_io
2 #define CASM_support_enum_json_io
3 
5 
6 namespace CASM {
7 
8 class jsonParser;
9 
10 #define ENUM_JSON_IO_DECL(ENUM) \
11  jsonParser &to_json(const ENUM &val, jsonParser &json); \
12  \
13  void from_json(ENUM &val, const jsonParser &json);
14 
15 #define ENUM_JSON_IO_DEF(ENUM) \
16  jsonParser &to_json(const ENUM &val, jsonParser &json) { \
17  return to_json(to_string<ENUM>(val), json); \
18  } \
19  \
20  void from_json(ENUM &val, const jsonParser &json) { \
21  val = from_string<ENUM>(json.get<std::string>()); \
22  }
23 
24 #define ENUM_JSON_IO_INLINE(ENUM) \
25  inline jsonParser &to_json(const ENUM &val, jsonParser &json) { \
26  return to_json(to_string<ENUM>(val), json); \
27  } \
28  \
29  inline void from_json(ENUM &val, const jsonParser &json) { \
30  val = from_string<ENUM>(json.get<std::string>()); \
31  }
32 
33 } // namespace CASM
34 
35 #endif
Main CASM namespace.
Definition: APICommand.hh:8