63 lines
1.4 KiB
C++
63 lines
1.4 KiB
C++
#include <iostream>
|
|
|
|
#include "../comm_server_configfile.h"
|
|
|
|
|
|
|
|
int main(int argc, char* argv[])
|
|
{
|
|
if (argc < 2) {
|
|
std::cout << "Usage: " << argv[0] << " cfg_filename\n";
|
|
return 1;
|
|
}
|
|
|
|
auto print_cfg = [](auto const& cfg) {
|
|
for (auto& [key, v] : cfg.config()) {
|
|
std::cout << key;
|
|
if (auto v_str = std::get_if<1>(&v)) {
|
|
std::cout << " = " << *v_str;
|
|
} else if (auto v_vec = std::get_if<2>(&v)) {
|
|
std::cout << " = ";
|
|
for (auto& el : *v_vec) {
|
|
std::cout << "<" << el << "> ";
|
|
}
|
|
}
|
|
|
|
std::cout << "\n";
|
|
}
|
|
};
|
|
|
|
mcc::MccConfigfile cfg;
|
|
|
|
std::string str = R"--(key_no_val
|
|
# comment example
|
|
scalar_key = scalar-value
|
|
|
|
vec_key = 1,2,3 , 345, 4576, 79
|
|
)--";
|
|
|
|
std::stringstream ist;
|
|
ist << str;
|
|
cfg.load(ist);
|
|
|
|
std::cout << "From input stream: \n";
|
|
print_cfg(cfg);
|
|
|
|
cfg["vec_key"] = std::vector<std::string>{"10", "20", "30"};
|
|
cfg["new_key"] = "new-key-value";
|
|
|
|
|
|
cfg.save(std::string_view{argv[1]});
|
|
|
|
auto ec = cfg.load(std::string_view{argv[1]});
|
|
if (ec) {
|
|
std::cout << "ERR: " << ec.message() << "\n";
|
|
return 1;
|
|
}
|
|
|
|
std::cout << "\n\nFrom file (edited):\n";
|
|
print_cfg(cfg);
|
|
|
|
return 0;
|
|
}
|