Mercurial > minori
view include/core/json.h @ 229:adc20fa321c1
theme: force Fusion style on platforms other than Win32 or OS X
I was reluctant to do this, but most of the other styles just
look like pure shite regardless of whether I force a stylesheet
on them or not. KDE's style is actually hilariously bad paired
with my stylesheet, so I've decided to also make the stylesheet
Windows-specific as well, because that's really the only platform
where it makes sense in the first place.
author | Paper <paper@paper.us.eu.org> |
---|---|
date | Wed, 10 Jan 2024 21:23:57 -0500 |
parents | 79a87a6dd39d |
children | 862d0d8619f6 |
line wrap: on
line source
#ifndef __core__json_h #define __core__json_h #include "json/json.hpp" #include <optional> namespace nlohmann { template<typename T> void to_json(nlohmann::json& j, const std::optional<T>& v) { if (v.has_value()) j = v.value(); else j = nullptr; } template<typename T> void from_json(const nlohmann::json& j, std::optional<T>& v) { v = j.is_null() ? std::nullopt : j.get<T>(); } } // namespace nlohmann namespace JSON { template<typename T = std::string> T GetString(const nlohmann::json& json, const nlohmann::json::json_pointer& ptr, T def) { if (json.contains(ptr) && json[ptr].is_string()) return json[ptr].get<T>(); else return def; } template<typename T = int> T GetNumber(const nlohmann::json& json, const nlohmann::json::json_pointer& ptr, T def = 0) { if (json.contains(ptr) && json[ptr].is_number()) return json[ptr].get<T>(); else return def; } template<typename T = std::vector<std::string>> T GetArray(const nlohmann::json& json, const nlohmann::json::json_pointer& ptr, T def = 0) { if (json.contains(ptr) && json[ptr].is_array()) return json[ptr].get<T>(); else return def; } nlohmann::json GetValue(const nlohmann::json& json, const nlohmann::json::json_pointer& ptr); bool GetBoolean(const nlohmann::json& json, const nlohmann::json::json_pointer& ptr, bool def = false); } // namespace JSON #endif // __core__json_h