aboutsummaryrefslogtreecommitdiff
path: root/args.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'args.hxx')
-rw-r--r--args.hxx55
1 files changed, 55 insertions, 0 deletions
diff --git a/args.hxx b/args.hxx
index d1ce180..d7b3ca9 100644
--- a/args.hxx
+++ b/args.hxx
@@ -3510,6 +3510,17 @@ namespace args
FlagBase::Reset();
values = defaultValues;
}
+
+ virtual FlagBase *Match(const EitherFlag &arg) override
+ {
+ const bool wasMatched = Matched();
+ auto me = FlagBase::Match(arg);
+ if (me && !wasMatched)
+ {
+ values.clear();
+ }
+ return me;
+ }
};
/** An argument-accepting flag class that pushes the found values into a list
@@ -3587,6 +3598,17 @@ namespace args
values = defaultValues;
}
+ virtual FlagBase *Match(const EitherFlag &arg) override
+ {
+ const bool wasMatched = Matched();
+ auto me = FlagBase::Match(arg);
+ if (me && !wasMatched)
+ {
+ values.clear();
+ }
+ return me;
+ }
+
iterator begin() noexcept
{
return values.begin();
@@ -3803,6 +3825,17 @@ namespace args
values = defaultValues;
}
+ virtual FlagBase *Match(const EitherFlag &arg) override
+ {
+ const bool wasMatched = Matched();
+ auto me = FlagBase::Match(arg);
+ if (me && !wasMatched)
+ {
+ values.clear();
+ }
+ return me;
+ }
+
iterator begin() noexcept
{
return values.begin();
@@ -3964,6 +3997,17 @@ namespace args
values = defaultValues;
}
+ virtual PositionalBase *GetNextPositional() override
+ {
+ const bool wasMatched = Matched();
+ auto me = PositionalBase::GetNextPositional();
+ if (me && !wasMatched)
+ {
+ values.clear();
+ }
+ return me;
+ }
+
iterator begin() noexcept
{
return values.begin();
@@ -4174,6 +4218,17 @@ namespace args
values = defaultValues;
}
+ virtual PositionalBase *GetNextPositional() override
+ {
+ const bool wasMatched = Matched();
+ auto me = PositionalBase::GetNextPositional();
+ if (me && !wasMatched)
+ {
+ values.clear();
+ }
+ return me;
+ }
+
iterator begin() noexcept
{
return values.begin();