Preliminary settings work

This commit is contained in:
Simone
2024-01-23 11:44:46 +01:00
parent f5a4cb1fd3
commit e3cc520fa5
10 changed files with 159 additions and 7 deletions

View File

@@ -0,0 +1,37 @@
#pragma once
#include <nlohmann/json.hpp>
#include <filesystem>
#include <fstream>
namespace fs = std::filesystem;
static inline nlohmann::json JSONOpenOrCreate(const std::string& path) {
auto fileExists = fs::exists(path);
if (fileExists) {
auto file = std::fstream(path, std::fstream::in | std::fstream::out);
auto json = nlohmann::json::parse(file);
file.close();
return json;
} else {
auto file = std::fstream(path, std::fstream::in | std::fstream::out | std::fstream::trunc);
nlohmann::json json;
json["audio"]["volume"] = 0.5;
json["cpu"]["type"] = std::string("interpreter");
file << json;
file.close();
return json;
}
}
template <typename T>
static inline void JSONSetField(nlohmann::json& json, const std::string& field1, const std::string& field2, const T& value) {
json[field1][field2] = value;
}
template <typename T>
static inline const T& JSONGetField(nlohmann::json& json, const std::string& field1, const std::string& field2) {
return json[field1][field2];
}