mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-01 15:11:24 +00:00
Generic: add range-adapter for option parsing.
I want to use it in lld, but while I'm here I'll update LLVM uses. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@212615 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
4c27c85cde
commit
7fba8d794f
@ -150,6 +150,13 @@ public:
|
||||
return arg_iterator(Args.end(), *this);
|
||||
}
|
||||
|
||||
iterator_range<arg_iterator> filtered(OptSpecifier Id0 = 0U,
|
||||
OptSpecifier Id1 = 0U,
|
||||
OptSpecifier Id2 = 0U) const {
|
||||
return iterator_range<arg_iterator>(filtered_begin(Id0, Id1, Id2),
|
||||
filtered_end());
|
||||
}
|
||||
|
||||
/// @}
|
||||
/// @name Arg Removal
|
||||
/// @{
|
||||
|
@ -234,44 +234,40 @@ void ArgList::AddLastArg(ArgStringList &Output, OptSpecifier Id0,
|
||||
|
||||
void ArgList::AddAllArgs(ArgStringList &Output, OptSpecifier Id0,
|
||||
OptSpecifier Id1, OptSpecifier Id2) const {
|
||||
for (arg_iterator it = filtered_begin(Id0, Id1, Id2),
|
||||
ie = filtered_end(); it != ie; ++it) {
|
||||
(*it)->claim();
|
||||
(*it)->render(*this, Output);
|
||||
for (auto Arg: filtered(Id0, Id1, Id2)) {
|
||||
Arg->claim();
|
||||
Arg->render(*this, Output);
|
||||
}
|
||||
}
|
||||
|
||||
void ArgList::AddAllArgValues(ArgStringList &Output, OptSpecifier Id0,
|
||||
OptSpecifier Id1, OptSpecifier Id2) const {
|
||||
for (arg_iterator it = filtered_begin(Id0, Id1, Id2),
|
||||
ie = filtered_end(); it != ie; ++it) {
|
||||
(*it)->claim();
|
||||
for (unsigned i = 0, e = (*it)->getNumValues(); i != e; ++i)
|
||||
Output.push_back((*it)->getValue(i));
|
||||
for (auto Arg : filtered(Id0, Id1, Id2)) {
|
||||
Arg->claim();
|
||||
for (unsigned i = 0, e = Arg->getNumValues(); i != e; ++i)
|
||||
Output.push_back(Arg->getValue(i));
|
||||
}
|
||||
}
|
||||
|
||||
void ArgList::AddAllArgsTranslated(ArgStringList &Output, OptSpecifier Id0,
|
||||
const char *Translation,
|
||||
bool Joined) const {
|
||||
for (arg_iterator it = filtered_begin(Id0),
|
||||
ie = filtered_end(); it != ie; ++it) {
|
||||
(*it)->claim();
|
||||
for (auto Arg: filtered(Id0)) {
|
||||
Arg->claim();
|
||||
|
||||
if (Joined) {
|
||||
Output.push_back(MakeArgString(StringRef(Translation) +
|
||||
(*it)->getValue(0)));
|
||||
Arg->getValue(0)));
|
||||
} else {
|
||||
Output.push_back(Translation);
|
||||
Output.push_back((*it)->getValue(0));
|
||||
Output.push_back(Arg->getValue(0));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ArgList::ClaimAllArgs(OptSpecifier Id0) const {
|
||||
for (arg_iterator it = filtered_begin(Id0),
|
||||
ie = filtered_end(); it != ie; ++it)
|
||||
(*it)->claim();
|
||||
for (auto Arg : filtered(Id0))
|
||||
Arg->claim();
|
||||
}
|
||||
|
||||
void ArgList::ClaimAllArgs() const {
|
||||
|
Loading…
Reference in New Issue
Block a user