From: Aaron Ballman Date: Fri, 14 Mar 2014 15:28:49 +0000 (+0000) Subject: [C++11] Replacing DeclContext iterators lookups_begin() and lookups_end() with iterat... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4e317eca08ddcd18833d3b5670b4fff1811b9e17;p=clang [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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@203933 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/AST/DeclBase.h b/include/clang/AST/DeclBase.h index 475ea01ae8..6dc5598a85 100644 --- a/include/clang/AST/DeclBase.h +++ b/include/clang/AST/DeclBase.h @@ -1577,6 +1577,11 @@ public: /// of looking up every possible name. class all_lookups_iterator; + typedef llvm::iterator_range 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; diff --git a/include/clang/AST/DeclLookups.h b/include/clang/AST/DeclLookups.h index c16975a330..ce1f1b46bb 100644 --- a/include/clang/AST/DeclLookups.h +++ b/include/clang/AST/DeclLookups.h @@ -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(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(this)->getPrimaryContext(); diff --git a/lib/Sema/SemaLookup.cpp b/lib/Sema/SemaLookup.cpp index c05de38dd8..77da08f8ca 100644 --- a/lib/Sema/SemaLookup.cpp +++ b/lib/Sema/SemaLookup.cpp @@ -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(*I)) { + for (const auto &R : Ctx->lookups()) { + for (auto *I : R) { + if (NamedDecl *ND = dyn_cast(I)) { if ((ND = Result.getAcceptableDecl(ND))) { Consumer.FoundDecl(ND, Visited.checkHidden(ND), Ctx, InBaseClass); Visited.add(ND);