[cfe-commits] r63528 - in /cfe/trunk/include/clang/AST: Decl.h DeclBase.h DeclObjC.h
Douglas Gregor
dgregor at apple.com
Mon Feb 2 09:56:05 PST 2009
Author: dgregor
Date: Mon Feb 2 11:56:05 2009
New Revision: 63528
URL: http://llvm.org/viewvc/llvm-project?rev=63528&view=rev
Log:
Slim down the specific_decl_iterator, since NULL denotes the end of the range. Good eyes, Chris
Modified:
cfe/trunk/include/clang/AST/Decl.h
cfe/trunk/include/clang/AST/DeclBase.h
cfe/trunk/include/clang/AST/DeclObjC.h
Modified: cfe/trunk/include/clang/AST/Decl.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Decl.h?rev=63528&r1=63527&r2=63528&view=diff
==============================================================================
--- cfe/trunk/include/clang/AST/Decl.h (original)
+++ cfe/trunk/include/clang/AST/Decl.h Mon Feb 2 11:56:05 2009
@@ -927,11 +927,11 @@
typedef specific_decl_iterator<EnumConstantDecl> enumerator_iterator;
enumerator_iterator enumerator_begin() const {
- return enumerator_iterator(this->decls_begin(), this->decls_end());
+ return enumerator_iterator(this->decls_begin());
}
enumerator_iterator enumerator_end() const {
- return enumerator_iterator(this->decls_end(), this->decls_end());
+ return enumerator_iterator(this->decls_end());
}
/// getIntegerType - Return the integer type this enum decl corresponds to.
@@ -1022,10 +1022,10 @@
typedef specific_decl_iterator<FieldDecl> field_iterator;
field_iterator field_begin() const {
- return field_iterator(decls_begin(), decls_end());
+ return field_iterator(decls_begin());
}
field_iterator field_end() const {
- return field_iterator(decls_end(), decls_end());
+ return field_iterator(decls_end());
}
// field_empty - Whether there are any fields (non-static data
Modified: cfe/trunk/include/clang/AST/DeclBase.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclBase.h?rev=63528&r1=63527&r2=63528&view=diff
==============================================================================
--- cfe/trunk/include/clang/AST/DeclBase.h (original)
+++ cfe/trunk/include/clang/AST/DeclBase.h Mon Feb 2 11:56:05 2009
@@ -640,13 +640,10 @@
template<typename SpecificDecl>
class specific_decl_iterator {
/// Current - The current, underlying declaration iterator, which
- /// will either be the same as End or will point to a declaration of
+ /// will either be NULL or will point to a declaration of
/// type SpecificDecl.
DeclContext::decl_iterator Current;
- /// End - One past the last declaration within the DeclContext.
- DeclContext::decl_iterator End;
-
/// Acceptable - If non-NULL, points to a member function that
/// will determine if a particular declaration of type
/// SpecificDecl should be visited by the iteration.
@@ -656,7 +653,7 @@
/// declaration of type SpecificDecl that also meets the criteria
/// required by Acceptable.
void SkipToNextDecl() {
- while (Current != End &&
+ while (*Current &&
(!isa<SpecificDecl>(*Current) ||
(Acceptable && !(cast<SpecificDecl>(*Current)->*Acceptable)())))
++Current;
@@ -670,19 +667,19 @@
difference_type;
typedef std::forward_iterator_tag iterator_category;
- specific_decl_iterator() : Current(), End(), Acceptable(0) { }
+ specific_decl_iterator() : Current(), Acceptable(0) { }
/// specific_decl_iterator - Construct a new iterator over a
- /// subset of the declarations in [C, E). If A is non-NULL, it is
- /// a pointer to a member function of SpecificDecl that should
- /// return true for all of the SpecificDecl instances that will be
- /// in the subset of iterators. For example, if you want
- /// Objective-C instance methods, SpecificDecl will be
- /// ObjCMethodDecl and A will be &ObjCMethodDecl::isInstanceMethod.
+ /// subset of the declarations the range [C,
+ /// end-of-declarations). If A is non-NULL, it is a pointer to a
+ /// member function of SpecificDecl that should return true for
+ /// all of the SpecificDecl instances that will be in the subset
+ /// of iterators. For example, if you want Objective-C instance
+ /// methods, SpecificDecl will be ObjCMethodDecl and A will be
+ /// &ObjCMethodDecl::isInstanceMethod.
specific_decl_iterator(DeclContext::decl_iterator C,
- DeclContext::decl_iterator E,
bool (SpecificDecl::*A)() const = 0)
- : Current(C), End(E), Acceptable(A) {
+ : Current(C), Acceptable(A) {
SkipToNextDecl();
}
Modified: cfe/trunk/include/clang/AST/DeclObjC.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclObjC.h?rev=63528&r1=63527&r2=63528&view=diff
==============================================================================
--- cfe/trunk/include/clang/AST/DeclObjC.h (original)
+++ cfe/trunk/include/clang/AST/DeclObjC.h Mon Feb 2 11:56:05 2009
@@ -264,39 +264,35 @@
// Iterator access to properties.
typedef specific_decl_iterator<ObjCPropertyDecl> prop_iterator;
prop_iterator prop_begin() const {
- return prop_iterator(decls_begin(), decls_end());
+ return prop_iterator(decls_begin());
}
prop_iterator prop_end() const {
- return prop_iterator(decls_end(), decls_end());
+ return prop_iterator(decls_end());
}
// Iterator access to instance/class methods.
typedef specific_decl_iterator<ObjCMethodDecl> method_iterator;
method_iterator meth_begin() const {
- return method_iterator(decls_begin(), decls_end());
+ return method_iterator(decls_begin());
}
method_iterator meth_end() const {
- return method_iterator(decls_end(), decls_end());
+ return method_iterator(decls_end());
}
typedef method_iterator instmeth_iterator;
instmeth_iterator instmeth_begin() const {
- return instmeth_iterator(decls_begin(), decls_end(),
- &ObjCMethodDecl::isInstanceMethod);
+ return instmeth_iterator(decls_begin(), &ObjCMethodDecl::isInstanceMethod);
}
instmeth_iterator instmeth_end() const {
- return instmeth_iterator(decls_end(), decls_end(),
- &ObjCMethodDecl::isInstanceMethod);
+ return instmeth_iterator(decls_end(), &ObjCMethodDecl::isInstanceMethod);
}
typedef method_iterator classmeth_iterator;
classmeth_iterator classmeth_begin() const {
- return classmeth_iterator(decls_begin(), decls_end(),
- &ObjCMethodDecl::isClassMethod);
+ return classmeth_iterator(decls_begin(), &ObjCMethodDecl::isClassMethod);
}
classmeth_iterator classmeth_end() const {
- return classmeth_iterator(decls_end(), decls_end(),
- &ObjCMethodDecl::isClassMethod);
+ return classmeth_iterator(decls_end(), &ObjCMethodDecl::isClassMethod);
}
// Get the local instance/class method declared in this interface.
More information about the cfe-commits
mailing list