#include #include "../asibfm700_configfile.h" template struct rec_t { std::string_view key; VT value; }; static std::string_view cfg_str = R"--(A = 11 B=3.3 # this is comment C = WWWWWeeeWWWW E = 10,20, 40, 32 )--"; int main() { auto desc = std::make_tuple(rec_t{"A", 1}, rec_t{"B", 2.2}, rec_t{"C", std::string("EEE")}, rec_t{"D", 3.3}, rec_t{"E", std::vector{1, 2, 3}}); asibfm700::ConfigHolder ch(desc); // auto err = ch.parse(cfg_str, [](auto s, auto &v) { // if constexpr (std::is_arithmetic_v>) { // v = 77; // } else { // v = std::string{s.begin(), s.end()}; // } // return true; // }); auto err = ch.parse(cfg_str); auto v = ch.value("A"); std::cout << v.value() << "\n"; // auto v2 = ch.value("D"); auto v2 = ch.value("C"); std::cout << v2.value_or("") << "\n"; auto v3 = ch.value>("E"); std::cout << "["; for (auto& el : v3.value_or({0, 0, 0})) { std::cout << el << " "; } std::cout << "]\n"; std::ofstream fst("/tmp/cfg.cfg"); fst << asibfm700::Asibfm700MountConfigString; fst.close(); asibfm700::Asibfm700MountConfig acfg; auto ec = acfg.load("/tmp/cfg.cfg"); std::cout << "EC (load) = " << ec.message() << "\n"; std::cout << "refr w: " << acfg.refractWavelength << "\n"; acfg.update("refractWavelength", 0.3); auto e = acfg.value("refractWavelength"); std::cout << "refr w: " << e.value_or(0.0) << "\n"; std::cout << "refr w: " << acfg.refractWavelength << "\n"; return 0; }