mirror of
https://github.com/KeqingMoe/argparse.git
synced 2025-07-04 23:24: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();
|
mProgramName = aArguments.front();
|
||||||
}
|
}
|
||||||
auto end = std::end(aArguments);
|
auto end = std::end(aArguments);
|
||||||
|
auto positionalArgumentIt = std::begin(mPositionalArguments);
|
||||||
for (auto it = std::next(std::begin(aArguments)); it != end;) {
|
for (auto it = std::next(std::begin(aArguments)); it != end;) {
|
||||||
const auto& tCurrentArgument = *it;
|
const auto& tCurrentArgument = *it;
|
||||||
if (tCurrentArgument == Argument::mHelpOption || tCurrentArgument == Argument::mHelpOptionLong) {
|
if (tCurrentArgument == Argument::mHelpOption || tCurrentArgument == Argument::mHelpOptionLong) {
|
||||||
throw std::runtime_error("help called");
|
throw std::runtime_error("help called");
|
||||||
}
|
}
|
||||||
if (Argument::is_positional(tCurrentArgument)) {
|
if (Argument::is_positional(tCurrentArgument)) {
|
||||||
if (mNextPositionalArgument >= mPositionalArguments.size()) {
|
if (positionalArgumentIt == std::end(mPositionalArguments)) {
|
||||||
throw std::runtime_error("Maximum number of positional arguments exceeded");
|
throw std::runtime_error("Maximum number of positional arguments exceeded");
|
||||||
}
|
}
|
||||||
auto tArgument = mPositionalArguments[mNextPositionalArgument++];
|
auto tArgument = *(positionalArgumentIt++);
|
||||||
it = tArgument->consume(it, end);
|
it = tArgument->consume(it, end);
|
||||||
}
|
}
|
||||||
else if (auto tIterator = mArgumentMap.find(tCurrentArgument); tIterator != mArgumentMap.end()) {
|
else if (auto tIterator = mArgumentMap.find(tCurrentArgument); tIterator != mArgumentMap.end()) {
|
||||||
@ -505,7 +506,6 @@ class ArgumentParser {
|
|||||||
std::vector<ArgumentParser> mParentParsers;
|
std::vector<ArgumentParser> mParentParsers;
|
||||||
std::vector<std::shared_ptr<Argument>> mPositionalArguments;
|
std::vector<std::shared_ptr<Argument>> mPositionalArguments;
|
||||||
std::vector<std::shared_ptr<Argument>> mOptionalArguments;
|
std::vector<std::shared_ptr<Argument>> mOptionalArguments;
|
||||||
size_t mNextPositionalArgument = 0;
|
|
||||||
std::map<std::string, std::shared_ptr<Argument>> mArgumentMap;
|
std::map<std::string, std::shared_ptr<Argument>> mArgumentMap;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user