mirror of
https://github.com/KeqingMoe/argparse.git
synced 2025-07-04 15:14:39 +00:00
Use local iterator instead of member counter
This commit is contained in:
parent
f2e0bd0de1
commit
d960a41e96
@ -436,16 +436,17 @@ class ArgumentParser {
|
||||
mProgramName = aArguments.front();
|
||||
}
|
||||
auto end = std::end(aArguments);
|
||||
auto positionalArgumentIt = std::begin(mPositionalArguments);
|
||||
for (auto it = std::next(std::begin(aArguments)); it != end;) {
|
||||
const auto& tCurrentArgument = *it;
|
||||
if (tCurrentArgument == Argument::mHelpOption || tCurrentArgument == Argument::mHelpOptionLong) {
|
||||
throw std::runtime_error("help called");
|
||||
}
|
||||
if (Argument::is_positional(tCurrentArgument)) {
|
||||
if (mNextPositionalArgument >= mPositionalArguments.size()) {
|
||||
if (positionalArgumentIt == std::end(mPositionalArguments)) {
|
||||
throw std::runtime_error("Maximum number of positional arguments exceeded");
|
||||
}
|
||||
auto tArgument = mPositionalArguments[mNextPositionalArgument++];
|
||||
auto tArgument = *(positionalArgumentIt++);
|
||||
it = tArgument->consume(it, end);
|
||||
}
|
||||
else if (auto tIterator = mArgumentMap.find(tCurrentArgument); tIterator != mArgumentMap.end()) {
|
||||
@ -505,7 +506,6 @@ class ArgumentParser {
|
||||
std::vector<ArgumentParser> mParentParsers;
|
||||
std::vector<std::shared_ptr<Argument>> mPositionalArguments;
|
||||
std::vector<std::shared_ptr<Argument>> mOptionalArguments;
|
||||
size_t mNextPositionalArgument = 0;
|
||||
std::map<std::string, std::shared_ptr<Argument>> mArgumentMap;
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user