Add an overload of getLastArgNoClaim taking two OptSpecifiers.

Summary: This will be used in clang.

Test Plan: Will be tested on the clang side.

Reviewers: hansw

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D5337

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@217702 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Ehsan Akhgari 2014-09-12 19:42:53 +00:00
parent 9adca7fba6
commit 97688c4ee3
2 changed files with 10 additions and 0 deletions

View File

@ -187,6 +187,7 @@ public:
/// ///
/// \p Claim Whether the argument should be claimed, if it exists. /// \p Claim Whether the argument should be claimed, if it exists.
Arg *getLastArgNoClaim(OptSpecifier Id) const; Arg *getLastArgNoClaim(OptSpecifier Id) const;
Arg *getLastArgNoClaim(OptSpecifier Id0, OptSpecifier Id1) const;
Arg *getLastArg(OptSpecifier Id) const; Arg *getLastArg(OptSpecifier Id) const;
Arg *getLastArg(OptSpecifier Id0, OptSpecifier Id1) const; Arg *getLastArg(OptSpecifier Id0, OptSpecifier Id1) const;
Arg *getLastArg(OptSpecifier Id0, OptSpecifier Id1, OptSpecifier Id2) const; Arg *getLastArg(OptSpecifier Id0, OptSpecifier Id1, OptSpecifier Id2) const;

View File

@ -54,6 +54,15 @@ Arg *ArgList::getLastArgNoClaim(OptSpecifier Id) const {
return nullptr; return nullptr;
} }
Arg *ArgList::getLastArgNoClaim(OptSpecifier Id0, OptSpecifier Id1) const {
// FIXME: Make search efficient?
for (const_reverse_iterator it = rbegin(), ie = rend(); it != ie; ++it)
if ((*it)->getOption().matches(Id0) ||
(*it)->getOption().matches(Id1))
return *it;
return nullptr;
}
Arg *ArgList::getLastArg(OptSpecifier Id) const { Arg *ArgList::getLastArg(OptSpecifier Id) const {
Arg *Res = nullptr; Arg *Res = nullptr;
for (const_iterator it = begin(), ie = end(); it != ie; ++it) { for (const_iterator it = begin(), ie = end(); it != ie; ++it) {