116 if(std::holds_alternative<OptionBoolCallback>(
callback))
return ArgBool;
117 if(std::holds_alternative<OptionIntCallback>(
callback))
return ArgInt;
135 if(
opt.shortName != 0) {
139 _optionsMap[
opt.longName] =
opt;
194 const String &
arg(
int index)
const {
return _args[index]; }
Describes a single command-line option.
Definition cmdlineparser.h:80
ArgType
Enumerates the argument types an option can accept.
Definition cmdlineparser.h:83
@ ArgBool
Boolean argument.
Definition cmdlineparser.h:85
@ ArgDouble
Double argument.
Definition cmdlineparser.h:88
@ ArgNone
No argument required.
Definition cmdlineparser.h:84
@ ArgInt
Integer argument.
Definition cmdlineparser.h:87
@ ArgString
String argument.
Definition cmdlineparser.h:86
@ ArgUnknown
Unknown or unsupported type.
Definition cmdlineparser.h:89
OptionCallbackVariant callback
Typed callback invoked when this option is parsed.
Definition cmdlineparser.h:95
Option()=default
Default constructor.
ArgType argType() const
Returns the argument type inferred from the callback variant.
Definition cmdlineparser.h:114
String longName
Long option name, or empty if none.
Definition cmdlineparser.h:93
Option(char sn, const String &ln, const String &d, OptionCallbackVariant cb)
Constructs an option with all fields.
Definition cmdlineparser.h:107
char shortName
Single-character short option name, or 0 if none.
Definition cmdlineparser.h:92
String desc
Description shown in usage/help text.
Definition cmdlineparser.h:94
Command-line argument parser with callback-driven option handling.
Definition cmdlineparser.h:44
std::function< int()> OptionCallback
Callback for options that take no argument.
Definition cmdlineparser.h:47
std::function< int(int)> OptionIntCallback
Callback for options that take an integer argument.
Definition cmdlineparser.h:56
std::function< int(double)> OptionDoubleCallback
Callback for options that take a double argument.
Definition cmdlineparser.h:59
std::function< int(bool)> OptionBoolCallback
Callback for options that take a boolean argument.
Definition cmdlineparser.h:50
void registerOptions(const std::initializer_list< Option > &options)
Registers a list of options with the parser.
Definition cmdlineparser.h:133
CmdLineParser()=default
Default constructor.
std::variant< OptionCallback, OptionBoolCallback, OptionStringCallback, OptionIntCallback, OptionDoubleCallback > OptionCallbackVariant
Variant type holding any of the supported option callbacks.
Definition cmdlineparser.h:72
int parse(StringList args)
Parses the given argument list against registered options.
int argCount() const
Returns the number of non-option arguments remaining after parsing.
Definition cmdlineparser.h:187
StringList generateUsage() const
Generates usage/help text for all registered options.
std::function< int(const String &)> OptionStringCallback
Callback for options that take a string argument.
Definition cmdlineparser.h:53
const String & arg(int index) const
Returns a non-option argument by index.
Definition cmdlineparser.h:194
void clear()
Clears all registered options, mappings, and collected arguments.
Definition cmdlineparser.h:149
int parseMain(int argc, char **argv)
Parses command-line arguments from main().
Definition cmdlineparser.h:166
Dynamic array container wrapping std::vector.
Definition list.h:40
Iterator remove(ConstIterator pos)
Removes the element at the given iterator position.
Definition list.h:402
size_t size() const noexcept
Returns the number of elements in the list.
Definition list.h:301
void clear() noexcept
Removes all elements from the list.
Definition list.h:330
void pushToBack(const T &value)
Pushes an item onto the back of the list.
Definition list.h:455
bool isEmpty() const noexcept
Returns true if the list has no elements.
Definition list.h:296
Manages a list of strings.
Definition stringlist.h:21
Encoding-aware string class with copy-on-write semantics.
Definition string.h:35
#define PROMEKI_NAMESPACE_BEGIN
Starts a promeki namespace block.
Definition namespace.h:14
#define PROMEKI_NAMESPACE_END
Ends a promeki namespace block.
Definition namespace.h:19