[C++11] Replacing DeclContext iterators lookups_begin() and lookups_end() with iterator_range lookups(). Similar for noload_lookups(). Updating all of the usages of the iterators with range-based for loops.

llvm-svn: 203933
This commit is contained in:
Aaron Ballman 2014-03-14 15:28:49 +00:00
parent d6d25de46e
commit 576114e676
3 changed files with 16 additions and 7 deletions

View File

@ -1577,6 +1577,11 @@ public:
/// of looking up every possible name.
class all_lookups_iterator;
typedef llvm::iterator_range<all_lookups_iterator> lookups_range;
lookups_range lookups() const;
lookups_range noload_lookups() const;
/// \brief Iterators over all possible lookups within this context.
all_lookups_iterator lookups_begin() const;
all_lookups_iterator lookups_end() const;

View File

@ -68,6 +68,10 @@ public:
}
};
inline DeclContext::lookups_range DeclContext::lookups() const {
return lookups_range(lookups_begin(), lookups_end());
}
inline DeclContext::all_lookups_iterator DeclContext::lookups_begin() const {
DeclContext *Primary = const_cast<DeclContext*>(this)->getPrimaryContext();
if (Primary->hasExternalVisibleStorage())
@ -86,6 +90,10 @@ inline DeclContext::all_lookups_iterator DeclContext::lookups_end() const {
return all_lookups_iterator();
}
inline DeclContext::lookups_range DeclContext::noload_lookups() const {
return lookups_range(noload_lookups_begin(), noload_lookups_end());
}
inline
DeclContext::all_lookups_iterator DeclContext::noload_lookups_begin() const {
DeclContext *Primary = const_cast<DeclContext*>(this)->getPrimaryContext();

View File

@ -3063,13 +3063,9 @@ static void LookupVisibleDecls(DeclContext *Ctx, LookupResult &Result,
Result.getSema().ForceDeclarationOfImplicitMembers(Class);
// Enumerate all of the results in this context.
for (DeclContext::all_lookups_iterator L = Ctx->lookups_begin(),
LEnd = Ctx->lookups_end();
L != LEnd; ++L) {
DeclContext::lookup_result R = *L;
for (DeclContext::lookup_iterator I = R.begin(), E = R.end(); I != E;
++I) {
if (NamedDecl *ND = dyn_cast<NamedDecl>(*I)) {
for (const auto &R : Ctx->lookups()) {
for (auto *I : R) {
if (NamedDecl *ND = dyn_cast<NamedDecl>(I)) {
if ((ND = Result.getAcceptableDecl(ND))) {
Consumer.FoundDecl(ND, Visited.checkHidden(ND), Ctx, InBaseClass);
Visited.add(ND);