77 lines
1.9 KiB
C++
77 lines
1.9 KiB
C++
#include <iostream>
|
|
|
|
#include "../asibfm700_configfile.h"
|
|
|
|
template <typename VT>
|
|
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<int>{1, 2, 3}});
|
|
|
|
std::error_code err;
|
|
|
|
// std::ofstream fst("/tmp/cfg.cfg");
|
|
// fst << asibfm700::Asibfm700MountConfigString;
|
|
// fst.close();
|
|
|
|
bool ok = asibfm700::Asibfm700MountConfig::dumpDefaults("/tmp/cfg.cfg");
|
|
if (!ok) {
|
|
std::cerr << "Cannot dump default configuration!\n";
|
|
exit(10);
|
|
}
|
|
|
|
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);
|
|
acfg.setValue("refractWavelength", 0.3);
|
|
|
|
auto e = acfg.getValue<double>("refractWavelength");
|
|
// auto e = acfg.value<double>("refractWavelength");
|
|
std::cout << "refr w: " << e.value_or(0.0) << "\n";
|
|
std::cout << "refr w: " << acfg.refractWavelength() << "\n";
|
|
|
|
|
|
mcc::utils::KeyValueHolder kvh(desc);
|
|
err = kvh.setValue("C", "ewlkjfde");
|
|
if (err) {
|
|
std::cout << "cannot set value: " << err.message() << "\n";
|
|
} else {
|
|
auto vs = kvh.getValue<std::string>("C");
|
|
std::cout << "kvh[C] = " << vs.value_or("<no value>") << "\n";
|
|
}
|
|
|
|
ec = kvh.fromCharRange(cfg_str);
|
|
if (ec) {
|
|
std::cout << "EC = " << ec.message() << "\n";
|
|
} else {
|
|
auto v3 = kvh.getValue<std::vector<int>>("E");
|
|
std::cout << "[";
|
|
for (auto& el : v3.value_or({0, 0, 0})) {
|
|
std::cout << el << " ";
|
|
}
|
|
std::cout << "]\n";
|
|
}
|
|
|
|
|
|
|
|
return 0;
|
|
}
|