49 auto it = arg_values_.find(key);
50 if (it == arg_values_.end()) {
51 NX_PANIC(
"no such argument %s", key.c_str());
53 return std::get<T>(it->second);
59 void show_usage(
const char* program_name);
76 return add_argument(name, type,
String(v));
90 virtual int handle_cmd(
int argc,
const char*
const argv[]) = 0;
97 int handle_cmd(
int argc,
const char*
const argv[])
override;
Definition cmd_parser.h:62
CmdParserBuilder & add_argument(const char *name, ArgumentType type, ArgumentValue default_value)
CmdParserBuilder & set_handler(Handler)
UniquePtr< CmdParser > build()
CmdParserBuilder & add_argument(const char *name, ArgumentType type)
CmdParserBuilder & add_argument(const char *name, ArgumentType type, const char *v)
Definition cmd_parser.h:72
Definition cmd_parser.h:40
T get(const String &key) const
Definition cmd_parser.h:47
int handle_cmd(int argc, const char *const argv[])
CmdParser(ProgramArgument &&argument)
Definition cmd_parser.h:86
virtual int handle_cmd(int argc, const char *const argv[])=0
Definition cmd_parser.h:103
int handle_cmd(int argc, const char *const argv[]) override
void add_sub_command(const String &name, UniquePtr< Cmd > cmd)
Definition cmd_parser.h:93
SingleCmd(UniquePtr< CmdParser > parser)
int handle_cmd(int argc, const char *const argv[]) override
Definition cmd_parser.h:5
Map< String, OptionalArgument > OptionalArgumentMap
Definition cmd_parser.h:27
ArgumentType
Definition cmd_parser.h:7
@ BOOLEAN
Definition cmd_parser.h:10
@ STRING
Definition cmd_parser.h:8
@ INT
Definition cmd_parser.h:9
Vector< PositionalArgument > PositionalArgumentList
Definition cmd_parser.h:26
Function< int(const CmdParser *)> Handler
Definition cmd_parser.h:32
Map< String, ArgumentValue > ArgumentValueMap
Definition cmd_parser.h:29
Variant< String, int, bool > ArgumentValue
Definition cmd_parser.h:13
std::string String
Definition type.h:52
std::variant< T... > Variant
Definition type.h:55
std::map< K, V > Map
Definition type.h:64
std::unique_ptr< T > UniquePtr
Definition type.h:58
std::function< T > Function
Definition type.h:67
std::vector< T > Vector
Definition type.h:47
Definition cmd_parser.h:15
String name
Definition cmd_parser.h:16
ArgumentType type
Definition cmd_parser.h:17
ArgumentValue default_value
Definition cmd_parser.h:18
Definition cmd_parser.h:21
ArgumentType type
Definition cmd_parser.h:23
String name
Definition cmd_parser.h:22
Definition cmd_parser.h:34
OptionalArgumentMap optional_arguments
Definition cmd_parser.h:36
Handler handler
Definition cmd_parser.h:37
PositionalArgumentList positional_arguments
Definition cmd_parser.h:35
#define NX_PANIC(msg,...)
panic with a fatal error message.
Definition type.h:262