aboutsummaryrefslogtreecommitdiff
path: root/src/defines.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/defines.h')
-rw-r--r--src/defines.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/defines.h b/src/defines.h
new file mode 100644
index 0000000..587656a
--- /dev/null
+++ b/src/defines.h
@@ -0,0 +1,4 @@
+#define NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE(Super, Derived, ...) \
+ friend void to_json(nlohmann::json& nlohmann_json_j, const Derived& nlohmann_json_t) { nlohmann::to_json(nlohmann_json_j, static_cast<Super>(nlohmann_json_t)); NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \
+ friend void from_json(const nlohmann::json& nlohmann_json_j, Derived& nlohmann_json_t) { nlohmann::from_json(nlohmann_json_j, static_cast<Super&>(nlohmann_json_t)); NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } \
+ virtual nlohmann::json serialize(void) const override { nlohmann::json ret; to_json(ret, *this); return ret; }