26 virtual ~OptionParser() =
default;
34 OptionParser(Option opt) : opt(opt), arg(0) { };
35 OptionParser(Option opt,
const string &unit) : opt(opt), arg(0), unit(unit) { };
36 OptionParser(Option opt, i64 arg) : opt(opt), arg(arg) { };
37 OptionParser(Option opt, i64 arg,
const string &unit) : opt(opt), arg(arg), unit(unit) { };
40 static std::unique_ptr<OptionParser> create(Option opt, i64 arg = 0);
43 virtual i64 parse(
const string &arg) {
return 0; }
46 virtual string asPlainString() {
return asString(); }
47 virtual string asString() = 0;
48 virtual string keyList() = 0;
49 virtual string argList() = 0;
53 static i64 parse(Option opt,
const string &arg);
54 static string asPlainString(Option opt, i64 arg);
55 static string asString(Option opt, i64 arg);
56 static string keyList(Option opt);
57 static string argList(Option opt);
60class BoolParser :
public OptionParser {
64 using OptionParser::OptionParser;
66 virtual i64 parse(
const string &s)
override { arg = util::parseBool(s);
return arg; }
67 virtual string asString()
override {
return arg ?
"true" :
"false"; }
68 virtual string keyList()
override {
return "true, false"; }
69 virtual string argList()
override {
return "{ true | false }"; }
72class NumParser :
public OptionParser {
76 using OptionParser::OptionParser;
78 virtual i64 parse(
const string &s)
override { arg = util::parseNum(s);
return arg; }
79 virtual string asPlainString()
override {
return std::to_string(arg); }
80 virtual string asString()
override {
return asPlainString() + unit; }
81 virtual string keyList()
override {
return "<value>"; }
82 virtual string argList()
override {
return "<value>"; }
85class HexParser :
public OptionParser {
89 using OptionParser::OptionParser;
91 virtual i64 parse(
const string &s)
override { arg = util::parseNum(s);
return arg; }
92 virtual string asPlainString()
override;
93 virtual string asString()
override {
return asPlainString() + unit; }
94 virtual string keyList()
override {
return "<value>"; }
95 virtual string argList()
override {
return "<value>"; }
99class EnumParser :
public OptionParser {
101 using OptionParser::OptionParser;
103 virtual i64 parse(
const string &s)
override {
return (arg = util::parseEnum<T>(s)); }
104 virtual string asPlainString()
override {
return T::plainkey(isize(arg)); }
105 virtual string asString()
override {
return T::key(isize(arg)); }
106 virtual string keyList()
override {
return T::keyList(); }
107 virtual string argList()
override {
return T::argList(); }
VirtualC64 project namespace.
Definition CmdQueue.cpp:16