aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2007-12-19 23:58:25 +0000
committerChris Lattner <sabre@nondot.org>2007-12-19 23:58:25 +0000
commitd57f635d520e8cb5b93d3d770ff58db06c62de54 (patch)
treeada233dfc25b28f86adf0b50328fd39ac5df85e5
parentf06c92806d8a2ddf6c70fc5a5ea80161d024b934 (diff)
Add iterator interface to function/method parameters.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45233 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/clang/AST/Decl.h9
-rw-r--r--include/clang/AST/DeclObjC.h11
2 files changed, 20 insertions, 0 deletions
diff --git a/include/clang/AST/Decl.h b/include/clang/AST/Decl.h
index efa79d5372..98fac7b0a8 100644
--- a/include/clang/AST/Decl.h
+++ b/include/clang/AST/Decl.h
@@ -439,6 +439,15 @@ public:
ScopedDecl *getDeclChain() const { return DeclChain; }
void setDeclChain(ScopedDecl *D) { DeclChain = D; }
+ // Iterator access to formal parameters.
+ unsigned param_size() const { return getNumParams(); }
+ typedef ParmVarDecl **param_iterator;
+ typedef ParmVarDecl * const *param_const_iterator;
+ param_iterator param_begin() { return ParamInfo; }
+ param_iterator param_end() { return ParamInfo+param_size(); }
+ param_const_iterator param_begin() const { return ParamInfo; }
+ param_const_iterator param_end() const { return ParamInfo+param_size(); }
+
unsigned getNumParams() const;
const ParmVarDecl *getParamDecl(unsigned i) const {
assert(i < getNumParams() && "Illegal param #");
diff --git a/include/clang/AST/DeclObjC.h b/include/clang/AST/DeclObjC.h
index ac9862581b..cbe0912246 100644
--- a/include/clang/AST/DeclObjC.h
+++ b/include/clang/AST/DeclObjC.h
@@ -118,6 +118,17 @@ public:
Selector getSelector() const { return SelName; }
QualType getResultType() const { return MethodDeclType; }
+ // Iterator access to formal parameters.
+ unsigned param_size() const {
+ return NumMethodParams == -1 ? 0 : NumMethodParams;
+ }
+ typedef ParmVarDecl **param_iterator;
+ typedef ParmVarDecl * const *param_const_iterator;
+ param_iterator param_begin() { return ParamInfo; }
+ param_iterator param_end() { return ParamInfo+param_size(); }
+ param_const_iterator param_begin() const { return ParamInfo; }
+ param_const_iterator param_end() const { return ParamInfo+param_size(); }
+
int getNumParams() const { return NumMethodParams; }
ParmVarDecl *getParamDecl(int i) const {
assert(i < getNumParams() && "Illegal param #");