51 void addArg(std::string
name, std::string desc, T default_value)
53 addArg<T>(std::move(
name), std::move(desc));
54 _values[
name] = std::move(default_value);
57 void parse(
int argc,
char** argv);
62 const auto it = _values.find(
name);
63 if(it == _values.end())
68 if(std::holds_alternative<T>(it->second) ==
false)
70 spdlog::error(
"Type mismatch for argument \"{}\"",
name);
74 return std::get<T>(it->second);
83 std::vector<CommandLineArgDef> _args;
85 absl::flat_hash_map<std::string, std::variant<
92 std::vector<unsigned int>,
95 std::vector<std::string>,
100 std::filesystem::path,
101 std::vector<std::filesystem::path>>> _values;
105 void ArgParser::addArg<bool>(std::string
name, std::string desc);
108 void ArgParser::addArg<int>(std::string
name, std::string desc);
111 void ArgParser::addArg<std::vector<int>>(std::string
name, std::string desc);
114 void ArgParser::addArg<unsigned int>(std::string
name, std::string desc);
117 void ArgParser::addArg<std::vector<unsigned int>>(std::string
name, std::string desc);
120 void ArgParser::addArg<std::string>(std::string
name, std::string desc);
123 void ArgParser::addArg<std::vector<std::string>>(std::string
name, std::string desc);
126 void ArgParser::addArg<float>(std::string
name, std::string desc);
129 void ArgParser::addArg<std::vector<float>>(std::string
name, std::string desc);
132 void ArgParser::addArg<std::filesystem::path>(std::string
name, std::string desc);
135 void ArgParser::addArg<std::vector<std::filesystem::path>>(std::string
name, std::string desc);