2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
42#include "net/config/ConfigSection.h"
44#include "net/config/ConfigInstance.h"
46#ifndef DOXYGEN_SHOULD_SKIP_THIS
49#pragma GCC diagnostic push
50#pragma GCC diagnostic ignored "-Wfloat-equal"
52#if __has_warning
("-Wweak-vtables")
53#pragma GCC diagnostic ignored "-Wweak-vtables"
55#if __has_warning
("-Wcovered-switch-default")
56#pragma GCC diagnostic ignored "-Wcovered-switch-default"
60#include "utils/CLI11.hpp"
62#pragma GCC diagnostic pop
70namespace net::config {
75 section = existingSection !=
nullptr ? existingSection
83 if (req != opt->get_required()) {
109 ->add_option(name, description);
111 if (opt->get_configurable()) {
112 opt->group(
section->get_formatter()->get_label(
"Persistent Options"));
120 ->type_name(typeName);
124 const std::string& description,
125 const std::string& typeName,
126 const CLI::Validator& additionalValidator) {
128 ->check(additionalValidator);
135 ->add_flag(name, description)
136 ->type_name(typeName);
137 if (opt->get_configurable()) {
138 opt->group(
section->get_formatter()->get_label(
"Persistent Options"));
145 const std::string& description,
146 const std::string& typeName,
147 const CLI::Validator& additionalValidator) {
149 ->check(additionalValidator);
153 const std::function<
void()>& callback,
154 const std::string& description,
155 const std::string& typeName,
156 const std::string& defaultValue) {
162 [callback](std::int64_t) {
166 ->default_val(defaultValue)
167 ->type_name(typeName)
169 if (opt->get_configurable()) {
170 opt->group(
section->get_formatter()->get_label(
"Persistent Options"));
177 const std::function<
void()>& callback,
178 const std::string& description,
179 const std::string& typeName,
180 const std::string& defaultValue,
181 const CLI::Validator& validator) {
CLI::App * getSection(const std::string &name) const
CLI::App * addSection(const std::string &name, const std::string &description)
const std::string & getInstanceName() const
void required(CLI::App *section, bool req=true)
CLI::Option * addOption(const std::string &name, const std::string &description, const std::string &typeName, const CLI::Validator &additionalValidator)
ConfigSection(ConfigInstance *instance, const std::string &name, const std::string &description)
CLI::Option * addOption(const std::string &name, const std::string &description, const std::string &typeName)
CLI::Option * addOption(const std::string &name, const std::string &description)
CLI::Option * addFlag(const std::string &name, const std::string &description, const std::string &typeName, const CLI::Validator &additionalValidator)
CLI::Option * addFlagFunction(const std::string &name, const std::function< void()> &callback, const std::string &description, const std::string &typeName, const std::string &defaultValue)
ConfigInstance * instance
CLI::Option * addFlagFunction(const std::string &name, const std::function< void()> &callback, const std::string &description, const std::string &typeName, const std::string &defaultValue, const CLI::Validator &validator)
CLI::Option * addFlag(const std::string &name, const std::string &description, const std::string &typeName)
void required(CLI::Option *opt, bool req=true)