@@ -17,7 +17,12 @@ namespace REX::JSON
1717 T& a_valueDefault)
1818 {
1919 const auto & json = *static_cast <glz::json_t *>(a_data);
20- a_value = glz::get<T>(json, a_path).value_or (a_valueDefault);
20+ if (a_path[0 ] == ' /' ) {
21+ a_value = glz::get<T>(json, a_path).value_or (a_valueDefault);
22+ } else {
23+ auto path = std::format (" /{}" sv, a_path);
24+ a_value = glz::get<T>(json, path).value_or (a_valueDefault);
25+ }
2126 }
2227
2328 template void SettingLoad<bool >(void *, path_t , bool &, bool &);
@@ -37,8 +42,13 @@ namespace REX::JSON
3742 path_t a_path,
3843 T& a_value)
3944 {
40- const auto & json = *static_cast <glz::json_t *>(a_data);
41- glz::set (json, a_path, a_value);
45+ auto & json = *static_cast <glz::json_t *>(a_data);
46+ if (a_path[0 ] == ' /' ) {
47+ glz::set (json, a_path, a_value);
48+ } else {
49+ auto path = std::format (" /{}" sv, a_path);
50+ glz::set (json, path, a_value);
51+ }
4252 }
4353
4454 template void SettingSave<bool >(void *, path_t , bool &);
@@ -58,9 +68,9 @@ namespace REX::JSON
5868 if (std::filesystem::exists (m_fileBase)) {
5969 glz::json_t result;
6070 std::string buffer;
61- const auto error = glz::read_file_json (result, m_fileBase, buffer);
62- if (error ) {
63- REX::ERROR (" {}" sv, glz::format_error (error , buffer));
71+ const auto errorc = glz::read_file_json (result, m_fileBase, buffer);
72+ if (errorc ) {
73+ REX::ERROR (" {}" sv, glz::format_error (errorc , buffer));
6474 } else {
6575 for (auto setting : m_settings) {
6676 setting->Load (&result, true );
@@ -71,9 +81,9 @@ namespace REX::JSON
7181 if (std::filesystem::exists (m_fileUser)) {
7282 glz::json_t result;
7383 std::string buffer;
74- const auto error = glz::read_file_json (result, m_fileUser, buffer);
75- if (error ) {
76- REX::ERROR (" {}" sv, glz::format_error (error , buffer));
84+ const auto errorc = glz::read_file_json (result, m_fileUser, buffer);
85+ if (errorc ) {
86+ REX::ERROR (" {}" sv, glz::format_error (errorc , buffer));
7787 } else {
7888 for (auto setting : m_settings) {
7989 setting->Load (&result, true );
@@ -87,17 +97,21 @@ namespace REX::JSON
8797 glz::json_t output;
8898 if (std::filesystem::exists (m_fileBase)) {
8999 std::string buffer;
90- const auto error = glz::read_file_json (output, m_fileBase, buffer);
91- if (error ) {
92- REX::ERROR (" {}" sv, glz::format_error (error , buffer));
100+ const auto errorc = glz::read_file_json (output, m_fileBase, buffer);
101+ if (errorc ) {
102+ REX::ERROR (" {}" sv, glz::format_error (errorc , buffer));
93103 }
94104 }
95105
96106 for (auto & setting : m_settings) {
97107 setting->Save (&output);
98108 }
99109
100- glz::write_file_json (output, m_fileBase, std::string{});
110+ std::string buffer;
111+ const auto errorc = glz::write_file_json (output, m_fileBase, buffer);
112+ if (errorc) {
113+ REX::ERROR (" {}" sv, glz::format_error (errorc, buffer));
114+ }
101115 }
102116}
103117#endif
0 commit comments