]> granicus.if.org Git - clang/commitdiff
Add iterator interface to function/method parameters.
authorChris Lattner <sabre@nondot.org>
Wed, 19 Dec 2007 23:58:25 +0000 (23:58 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 19 Dec 2007 23:58:25 +0000 (23:58 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45233 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/Decl.h
include/clang/AST/DeclObjC.h

index efa79d5372fb26c13bdd407e2c30812aeceef639..98fac7b0a8ac0a2d118184bd12514191099c3f0e 100644 (file)
@@ -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 #");
index ac9862581ba75729ed28a327be5a32631dfcfd8f..cbe09122466ef4db6b19afcd0ffe0b217961cc56 100644 (file)
@@ -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 #");