30 #include <initializer_list>
40 class ProgramArguments;
77 std::vector<std::string> get_unknown_arguments();
86 bool is_registered(
const std::string& flag)
const;
100 bool add(
const std::string& flag,
const std::string& description,
const std::initializer_list<std::string>& parameters = {});
114 bool add(
const std::initializer_list<std::string>& flags,
const std::string& description,
const std::initializer_list<std::string>& parameters = {});
124 bool add(
const ProgramOptions& other_options,
const std::string& category =
"");
133 bool remove(
const std::string& flag);
142 std::string get_options_string()
const;
149 std::vector<std::tuple<std::set<std::string>, std::string>> get_options()
const;
154 std::string description;
155 std::vector<std::string> parameters;
156 std::set<std::string> flags;
161 std::vector<Option> m_options;
163 std::map<std::string, std::vector<ProgramOptions>> m_suboptions;
165 std::vector<std::string> m_unknown_options;
168 std::vector<const Option*> get_all_options()
const;
171 void reset_all_options();
174 void reset_option(Option*);
177 size_t get_flag_length()
const;
180 std::string get_options_string_internal(
size_t fill_length,
size_t max_line_width)
const;
~ProgramOptions()=default
static const std::string A_REQUIRED_PARAMETER
constant to specify that a parameter is required and does not have a default value.
void remove(std::filesystem::path file_path)
std::unique_ptr< GateLibrary > parse(std::filesystem::path file_path)