Mercurial > minori
comparison include/core/json.h @ 369:47c9f8502269
*: clang-format all the things
I've edited the formatting a bit. Now pointer asterisks (and reference
ampersands) are on the variable instead of the type, as well as having
newlines for function braces (but nothing else)
author | Paper <paper@tflc.us> |
---|---|
date | Fri, 25 Jul 2025 10:16:02 -0400 |
parents | 1686fac290c5 |
children |
comparison
equal
deleted
inserted
replaced
368:6d37a998cf91 | 369:47c9f8502269 |
---|---|
5 | 5 |
6 #include <optional> | 6 #include <optional> |
7 | 7 |
8 namespace nlohmann { | 8 namespace nlohmann { |
9 | 9 |
10 /* hack to get std::optional working */ | |
10 template<typename T> | 11 template<typename T> |
11 void to_json(nlohmann::json& j, const std::optional<T>& v) { | 12 void to_json(nlohmann::json &j, const std::optional<T> &v) |
13 { | |
12 if (v.has_value()) | 14 if (v.has_value()) |
13 j = v.value(); | 15 j = v.value(); |
14 else | 16 else |
15 j = nullptr; | 17 j = nullptr; |
16 } | 18 } |
17 | 19 |
18 template<typename T> | 20 template<typename T> |
19 void from_json(const nlohmann::json& j, std::optional<T>& v) { | 21 void from_json(const nlohmann::json &j, std::optional<T> &v) |
22 { | |
20 v = j.is_null() ? std::nullopt : j.get<T>(); | 23 v = j.is_null() ? std::nullopt : j.get<T>(); |
21 } | 24 } |
22 | 25 |
23 } // namespace nlohmann | 26 } // namespace nlohmann |
24 | 27 |
25 namespace JSON { | 28 namespace JSON { |
26 | 29 |
27 template<typename T = std::string> | 30 template<typename T = std::string> |
28 T GetString(const nlohmann::json& json, const nlohmann::json::json_pointer& ptr, T def) { | 31 T GetString(const nlohmann::json &json, const nlohmann::json::json_pointer &ptr, T def) |
32 { | |
29 if (json.contains(ptr) && json[ptr].is_string()) | 33 if (json.contains(ptr) && json[ptr].is_string()) |
30 return json[ptr].get<T>(); | 34 return json[ptr].get<T>(); |
31 else | 35 else |
32 return def; | 36 return def; |
33 } | 37 } |
34 | 38 |
35 template<typename T = int> | 39 template<typename T = int> |
36 T GetNumber(const nlohmann::json& json, const nlohmann::json::json_pointer& ptr, T def = 0) { | 40 T GetNumber(const nlohmann::json &json, const nlohmann::json::json_pointer &ptr, T def = 0) |
41 { | |
37 if (json.contains(ptr) && json[ptr].is_number()) | 42 if (json.contains(ptr) && json[ptr].is_number()) |
38 return json[ptr].get<T>(); | 43 return json[ptr].get<T>(); |
39 else | 44 else |
40 return def; | 45 return def; |
41 } | 46 } |
42 | 47 |
43 template<typename T = std::vector<std::string>> | 48 template<typename T = std::vector<std::string>> |
44 T GetArray(const nlohmann::json& json, const nlohmann::json::json_pointer& ptr, T def = 0) { | 49 T GetArray(const nlohmann::json &json, const nlohmann::json::json_pointer &ptr, T def = 0) |
50 { | |
45 if (json.contains(ptr) && json[ptr].is_array()) | 51 if (json.contains(ptr) && json[ptr].is_array()) |
46 return json[ptr].get<T>(); | 52 return json[ptr].get<T>(); |
47 else | 53 else |
48 return def; | 54 return def; |
49 } | 55 } |
50 | 56 |
51 nlohmann::json GetValue(const nlohmann::json& json, const nlohmann::json::json_pointer& ptr); | 57 nlohmann::json GetValue(const nlohmann::json &json, const nlohmann::json::json_pointer &ptr); |
52 bool GetBoolean(const nlohmann::json& json, const nlohmann::json::json_pointer& ptr, bool def = false); | 58 bool GetBoolean(const nlohmann::json &json, const nlohmann::json::json_pointer &ptr, bool def = false); |
53 | 59 |
54 } // namespace JSON | 60 } // namespace JSON |
55 | 61 |
56 #endif // MINORI_CORE_JSON_H_ | 62 #endif // MINORI_CORE_JSON_H_ |