r203351 - Reapplying r203299 in a slightly different manner. Now range APIs are implemented in terms of iterator APIs.
Aaron Ballman
aaron at aaronballman.com
Sat Mar 8 10:30:41 PST 2014
Author: aaronballman
Date: Sat Mar 8 12:30:40 2014
New Revision: 203351
URL: http://llvm.org/viewvc/llvm-project?rev=203351&view=rev
Log:
Reapplying r203299 in a slightly different manner. Now range APIs are implemented in terms of iterator APIs.
Modified:
cfe/trunk/include/clang/AST/Decl.h
cfe/trunk/include/clang/AST/DeclBase.h
cfe/trunk/include/clang/AST/DeclObjC.h
cfe/trunk/include/clang/AST/Redeclarable.h
cfe/trunk/lib/AST/DeclBase.cpp
Modified: cfe/trunk/include/clang/AST/Decl.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Decl.h?rev=203351&r1=203350&r2=203351&view=diff
==============================================================================
--- cfe/trunk/include/clang/AST/Decl.h (original)
+++ cfe/trunk/include/clang/AST/Decl.h Sat Mar 8 12:30:40 2014
@@ -1850,9 +1850,7 @@ public:
param_iterator param_end() {
return param_iterator(ParamInfo + param_size());
}
- param_range params() {
- return param_range(ParamInfo, ParamInfo + param_size());
- }
+ param_range params() { return param_range(param_begin(), param_end()); }
param_const_iterator param_begin() const {
return param_const_iterator(ParamInfo);
@@ -1861,7 +1859,7 @@ public:
return param_const_iterator(ParamInfo + param_size());
}
param_const_range params() const {
- return param_const_range(ParamInfo, ParamInfo + param_size());
+ return param_const_range(param_begin(), param_end());
}
/// getNumParams - Return the number of parameters this function must have
@@ -2339,11 +2337,11 @@ public:
typedef NamedDecl * const *chain_iterator;
typedef llvm::iterator_range<chain_iterator> chain_range;
- chain_range chain() const {
- return chain_range(Chaining, Chaining + ChainingSize);
+ chain_range chain() const { return chain_range(chain_begin(), chain_end()); }
+ chain_iterator chain_begin() const { return chain_iterator(Chaining); }
+ chain_iterator chain_end() const {
+ return chain_iterator(Chaining + ChainingSize);
}
- chain_iterator chain_begin() const { return chain().begin(); }
- chain_iterator chain_end() const { return chain().end(); }
unsigned getChainingSize() const { return ChainingSize; }
@@ -3312,17 +3310,21 @@ public:
}
bool param_empty() const { return NumParams == 0; }
- param_range params() {
- return param_range(ParamInfo, ParamInfo + param_size());
+ param_range params() { return param_range(param_begin(), param_end()); }
+ param_iterator param_begin() { return param_iterator(ParamInfo); }
+ param_iterator param_end() {
+ return param_iterator(ParamInfo + param_size());
}
- param_iterator param_begin() { return params().begin(); }
- param_iterator param_end() { return params().end(); }
param_const_range params() const {
- return param_const_range(ParamInfo, ParamInfo + param_size());
+ return param_const_range(param_begin(), param_end());
+ }
+ param_const_iterator param_begin() const {
+ return param_const_iterator(ParamInfo);
+ }
+ param_const_iterator param_end() const {
+ return param_const_iterator(ParamInfo + param_size());
}
- param_const_iterator param_begin() const { return params().begin(); }
- param_const_iterator param_end() const { return params().end(); }
unsigned getNumParams() const { return NumParams; }
const ParmVarDecl *getParamDecl(unsigned i) const {
@@ -3439,9 +3441,7 @@ public:
param_iterator param_end() const { return getParams() + NumParams; }
/// \brief Retrieve an iterator range for the parameter declarations.
- param_range params() const {
- return param_range(getParams(), getParams() + NumParams);
- }
+ param_range params() const { return param_range(param_begin(), param_end()); }
// Implement isa/cast/dyncast/etc.
static bool classof(const Decl *D) { return classofKind(D->getKind()); }
Modified: cfe/trunk/include/clang/AST/DeclBase.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclBase.h?rev=203351&r1=203350&r2=203351&view=diff
==============================================================================
--- cfe/trunk/include/clang/AST/DeclBase.h (original)
+++ cfe/trunk/include/clang/AST/DeclBase.h Sat Mar 8 12:30:40 2014
@@ -776,8 +776,7 @@ public:
/// \brief Returns an iterator range for all the redeclarations of the same
/// decl. It will iterate at least once (when this decl is the only one).
redecl_range redecls() const {
- return redecl_range(redecl_iterator(const_cast<Decl *>(this)),
- redecl_iterator());
+ return redecl_range(redecls_begin(), redecls_end());
}
redecl_iterator redecls_begin() const {
@@ -1312,7 +1311,7 @@ public:
/// decls_begin/decls_end - Iterate over the declarations stored in
/// this context.
- decl_range decls() const;
+ decl_range decls() const { return decl_range(decls_begin(), decls_end()); }
decl_iterator decls_begin() const;
decl_iterator decls_end() const { return decl_iterator(); }
bool decls_empty() const;
@@ -1320,8 +1319,10 @@ public:
/// noload_decls_begin/end - Iterate over the declarations stored in this
/// context that are currently loaded; don't attempt to retrieve anything
/// from an external source.
- decl_range noload_decls() const;
- decl_iterator noload_decls_begin() const;
+ decl_range noload_decls() const {
+ return decl_range(noload_decls_begin(), noload_decls_end());
+ }
+ decl_iterator noload_decls_begin() const { return decl_iterator(FirstDecl); }
decl_iterator noload_decls_end() const { return decl_iterator(); }
/// specific_decl_iterator - Iterates over a subrange of
Modified: cfe/trunk/include/clang/AST/DeclObjC.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclObjC.h?rev=203351&r1=203350&r2=203351&view=diff
==============================================================================
--- cfe/trunk/include/clang/AST/DeclObjC.h (original)
+++ cfe/trunk/include/clang/AST/DeclObjC.h Sat Mar 8 12:30:40 2014
@@ -345,11 +345,9 @@ public:
typedef llvm::iterator_range<param_iterator> param_range;
typedef llvm::iterator_range<param_const_iterator> param_const_range;
- param_range params() {
- return param_range(getParams(), getParams() + NumParams);
- }
+ param_range params() { return param_range(param_begin(), param_end()); }
param_const_range params() const {
- return param_const_range(getParams(), getParams() + NumParams);
+ return param_const_range(param_begin(), param_end());
}
param_const_iterator param_begin() const {
@@ -1277,9 +1275,9 @@ public:
bool RHSIsQualifiedID = false);
typedef redeclarable_base::redecl_range redecl_range;
- typedef redeclarable_base::redecl_iterator redecl_iterator;
- using redeclarable_base::redecls_begin;
- using redeclarable_base::redecls_end;
+ typedef redeclarable_base::redecl_iterator redecl_iterator;
+ using redeclarable_base::redecls_begin;
+ using redeclarable_base::redecls_end;
using redeclarable_base::redecls;
using redeclarable_base::getPreviousDecl;
using redeclarable_base::getMostRecentDecl;
@@ -1586,9 +1584,9 @@ public:
}
typedef redeclarable_base::redecl_range redecl_range;
- typedef redeclarable_base::redecl_iterator redecl_iterator;
- using redeclarable_base::redecls_begin;
- using redeclarable_base::redecls_end;
+ typedef redeclarable_base::redecl_iterator redecl_iterator;
+ using redeclarable_base::redecls_begin;
+ using redeclarable_base::redecls_end;
using redeclarable_base::redecls;
using redeclarable_base::getPreviousDecl;
using redeclarable_base::getMostRecentDecl;
Modified: cfe/trunk/include/clang/AST/Redeclarable.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Redeclarable.h?rev=203351&r1=203350&r2=203351&view=diff
==============================================================================
--- cfe/trunk/include/clang/AST/Redeclarable.h (original)
+++ cfe/trunk/include/clang/AST/Redeclarable.h Sat Mar 8 12:30:40 2014
@@ -171,11 +171,8 @@ public:
redecl_iterator());
}
- redecl_iterator redecls_begin() const {
- return redecl_iterator(
- const_cast<decl_type *>(static_cast<const decl_type *>(this)));
- }
- redecl_iterator redecls_end() const { return redecl_iterator(); }
+ redecl_iterator redecls_begin() const { return redecls().begin(); }
+ redecl_iterator redecls_end() const { return redecls().end(); }
friend class ASTDeclReader;
friend class ASTDeclWriter;
Modified: cfe/trunk/lib/AST/DeclBase.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/DeclBase.cpp?rev=203351&r1=203350&r2=203351&view=diff
==============================================================================
--- cfe/trunk/lib/AST/DeclBase.cpp (original)
+++ cfe/trunk/lib/AST/DeclBase.cpp Sat Mar 8 12:30:40 2014
@@ -1076,20 +1076,6 @@ ExternalASTSource::SetExternalVisibleDec
return List.getLookupResult();
}
-DeclContext::decl_range DeclContext::noload_decls() const {
- return decl_range(decl_iterator(FirstDecl), decl_iterator());
-}
-
-DeclContext::decl_iterator DeclContext::noload_decls_begin() const {
- return decl_iterator(FirstDecl);
-}
-
-DeclContext::decl_range DeclContext::decls() const {
- if (hasExternalLexicalStorage())
- LoadLexicalDeclsFromExternalStorage();
- return decl_range(decl_iterator(FirstDecl), decl_iterator());
-}
-
DeclContext::decl_iterator DeclContext::decls_begin() const {
if (hasExternalLexicalStorage())
LoadLexicalDeclsFromExternalStorage();
More information about the cfe-commits
mailing list