Format all files
This commit is contained in:
@@ -34,7 +34,6 @@
|
||||
* Derek Christ
|
||||
*/
|
||||
|
||||
|
||||
#ifndef DRAMSYS_UTIL_JSON_H
|
||||
#define DRAMSYS_UTIL_JSON_H
|
||||
|
||||
@@ -46,27 +45,31 @@
|
||||
|
||||
using json_t = nlohmann::json;
|
||||
|
||||
namespace DRAMSys::util {
|
||||
namespace DRAMSys::util
|
||||
{
|
||||
// See https://www.kdab.com/jsonify-with-nlohmann-json/
|
||||
// Try to set the value of type T into the variant data if it fails, do nothing
|
||||
template <typename T, typename... Ts>
|
||||
void variant_from_json(const nlohmann::json &j, std::variant<Ts...> &data)
|
||||
void variant_from_json(const nlohmann::json& j, std::variant<Ts...>& data)
|
||||
{
|
||||
try {
|
||||
try
|
||||
{
|
||||
data = j.get<T>();
|
||||
} catch (...) {
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void optional_to_json(nlohmann::json &j, std::string_view name, const std::optional<T> &value)
|
||||
void optional_to_json(nlohmann::json& j, std::string_view name, const std::optional<T>& value)
|
||||
{
|
||||
if (value)
|
||||
j[name] = *value;
|
||||
}
|
||||
|
||||
template <class T>
|
||||
void optional_from_json(const nlohmann::json &j, std::string_view name, std::optional<T> &value)
|
||||
void optional_from_json(const nlohmann::json& j, std::string_view name, std::optional<T>& value)
|
||||
{
|
||||
const auto it = j.find(name);
|
||||
|
||||
@@ -76,13 +79,10 @@ void optional_from_json(const nlohmann::json &j, std::string_view name, std::opt
|
||||
value = std::nullopt;
|
||||
}
|
||||
|
||||
template <typename>
|
||||
constexpr bool is_optional = false;
|
||||
template <typename T>
|
||||
constexpr bool is_optional<std::optional<T>> = true;
|
||||
template <typename> constexpr bool is_optional = false;
|
||||
template <typename T> constexpr bool is_optional<std::optional<T>> = true;
|
||||
|
||||
template <typename T>
|
||||
void extended_to_json(const char *key, nlohmann::json &j, const T &value)
|
||||
template <typename T> void extended_to_json(const char* key, nlohmann::json& j, const T& value)
|
||||
{
|
||||
if constexpr (is_optional<T>)
|
||||
optional_to_json(j, key, value);
|
||||
@@ -90,8 +90,7 @@ void extended_to_json(const char *key, nlohmann::json &j, const T &value)
|
||||
j[key] = value;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void extended_from_json(const char *key, const nlohmann::json &j, T &value)
|
||||
template <typename T> void extended_from_json(const char* key, const nlohmann::json& j, T& value)
|
||||
{
|
||||
if constexpr (is_optional<T>)
|
||||
optional_from_json(j, key, value);
|
||||
@@ -103,57 +102,65 @@ void extended_from_json(const char *key, const nlohmann::json &j, T &value)
|
||||
|
||||
NLOHMANN_JSON_NAMESPACE_BEGIN
|
||||
|
||||
template <typename... Ts>
|
||||
struct adl_serializer<std::variant<Ts...>>
|
||||
template <typename... Ts> struct adl_serializer<std::variant<Ts...>>
|
||||
{
|
||||
static void to_json(nlohmann::json &j, const std::variant<Ts...> &data)
|
||||
static void to_json(nlohmann::json& j, const std::variant<Ts...>& data)
|
||||
{
|
||||
std::visit([&j](const auto &v) { j = v; }, data);
|
||||
std::visit([&j](const auto& v) { j = v; }, data);
|
||||
}
|
||||
|
||||
static void from_json(const nlohmann::json &j, std::variant<Ts...> &data)
|
||||
static void from_json(const nlohmann::json& j, std::variant<Ts...>& data)
|
||||
{
|
||||
// Call variant_from_json for all types, only one will succeed
|
||||
(DRAMSys::util::variant_from_json<Ts>(j, data), ...);
|
||||
}
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
struct adl_serializer<std::optional<T>> {
|
||||
static void to_json(json_t& j, const std::optional<T>& opt) {
|
||||
if (opt == std::nullopt) {
|
||||
template <typename T> struct adl_serializer<std::optional<T>>
|
||||
{
|
||||
static void to_json(json_t& j, const std::optional<T>& opt)
|
||||
{
|
||||
if (opt == std::nullopt)
|
||||
{
|
||||
j = nullptr;
|
||||
}
|
||||
else {
|
||||
else
|
||||
{
|
||||
j = *opt;
|
||||
}
|
||||
}
|
||||
|
||||
static void from_json(const json_t& j, std::optional<T>& opt) {
|
||||
if (j.is_null()) {
|
||||
static void from_json(const json_t& j, std::optional<T>& opt)
|
||||
{
|
||||
if (j.is_null())
|
||||
{
|
||||
opt = std::nullopt;
|
||||
}
|
||||
else {
|
||||
else
|
||||
{
|
||||
opt = j.get<T>();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
NLOHMANN_JSON_NAMESPACE_END
|
||||
|
||||
// NOLINTBEGIN(cppcoreguidelines-macro-usage)
|
||||
|
||||
#define EXTEND_JSON_TO(v1) DRAMSys::util::extended_to_json(#v1, nlohmann_json_j, nlohmann_json_t.v1);
|
||||
#define EXTEND_JSON_FROM(v1) DRAMSys::util::extended_from_json(#v1, nlohmann_json_j, nlohmann_json_t.v1);
|
||||
|
||||
#define NLOHMANN_JSONIFY_ALL_THINGS(Type, ...) \
|
||||
inline void to_json(nlohmann::json &nlohmann_json_j, const Type &nlohmann_json_t) { \
|
||||
NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(EXTEND_JSON_TO, __VA_ARGS__)) \
|
||||
} \
|
||||
inline void from_json(const nlohmann::json &nlohmann_json_j, Type &nlohmann_json_t) { \
|
||||
NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(EXTEND_JSON_FROM, __VA_ARGS__)) \
|
||||
}
|
||||
#define EXTEND_JSON_TO(v1) \
|
||||
DRAMSys::util::extended_to_json(#v1, nlohmann_json_j, nlohmann_json_t.v1);
|
||||
#define EXTEND_JSON_FROM(v1) \
|
||||
DRAMSys::util::extended_from_json(#v1, nlohmann_json_j, nlohmann_json_t.v1);
|
||||
|
||||
#define NLOHMANN_JSONIFY_ALL_THINGS(Type, ...) \
|
||||
inline void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) \
|
||||
{ \
|
||||
NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(EXTEND_JSON_TO, __VA_ARGS__)) \
|
||||
} \
|
||||
inline void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) \
|
||||
{ \
|
||||
NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(EXTEND_JSON_FROM, __VA_ARGS__)) \
|
||||
}
|
||||
|
||||
// NOLINTEND(cppcoreguidelines-macro-usage)
|
||||
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
|
||||
#include "util.h"
|
||||
|
||||
namespace DRAMSys::util {
|
||||
namespace DRAMSys::util
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@@ -36,8 +36,9 @@
|
||||
#ifndef DRAMSYS_UTIL_UTIL_H
|
||||
#define DRAMSYS_UTIL_UTIL_H
|
||||
|
||||
namespace DRAMSys::util {
|
||||
namespace DRAMSys::util
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user