r199466 - Add ArrayRef<> interface to get the parameters of a FunctionDecl/ObjCMethodDecl.
Ted Kremenek
kremenek at apple.com
Thu Jan 16 23:02:06 PST 2014
I debated whether to name this:
parameters()
or
getParameters()
The latter follows current naming conventions. The former seems more natural once we move to C++11, for example:
for (auto p : parameters())
instead of
for (auto p : getParameters())
Thoughts?
On Jan 16, 2014, at 10:24 PM, Ted Kremenek <kremenek at apple.com> wrote:
> Author: kremenek
> Date: Fri Jan 17 00:24:50 2014
> New Revision: 199466
>
> URL: http://llvm.org/viewvc/llvm-project?rev=199466&view=rev
> Log:
> Add ArrayRef<> interface to get the parameters of a FunctionDecl/ObjCMethodDecl.
>
> This is an alternate interface to the separate iterator interfaces
> provided by FunctionDecl and ObjCMethodDecl, which precede ArrayRef.
>
> Providing this new interface is more convenient for some uses, and
> likely the old interfaces should be removed. I have not undertaken
> that effort in this change because this API introduction may
> solicit commentary and that was a larger change than I wanted
> to introduce all at once to serve a direct purpose.
>
> Modified:
> cfe/trunk/include/clang/AST/Decl.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=199466&r1=199465&r2=199466&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/AST/Decl.h (original)
> +++ cfe/trunk/include/clang/AST/Decl.h Fri Jan 17 00:24:50 2014
> @@ -1851,6 +1851,12 @@ public:
> setParams(getASTContext(), NewParamInfo);
> }
>
> + // ArrayRef iterface to parameters.
> + // FIXME: Should one day replace iterator interface.
> + ArrayRef<ParmVarDecl*> parameters() const {
> + return llvm::makeArrayRef(ParamInfo, getNumParams());
> + }
> +
> const ArrayRef<NamedDecl *> &getDeclsInPrototypeScope() const {
> return DeclsInPrototypeScope;
> }
>
> Modified: cfe/trunk/include/clang/AST/DeclObjC.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclObjC.h?rev=199466&r1=199465&r2=199466&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/AST/DeclObjC.h (original)
> +++ cfe/trunk/include/clang/AST/DeclObjC.h Fri Jan 17 00:24:50 2014
> @@ -314,8 +314,7 @@ public:
> if (hasStandardSelLocs())
> return getStandardSelectorLoc(Index, getSelector(),
> getSelLocsKind() == SelLoc_StandardWithSpace,
> - llvm::makeArrayRef(const_cast<ParmVarDecl**>(getParams()),
> - NumParams),
> + parameters(),
> DeclEndLoc);
> return getStoredSelLocs()[Index];
> }
> @@ -364,6 +363,13 @@ public:
> return param_begin() + getSelector().getNumArgs();
> }
>
> + // ArrayRef access to formal parameters. This should eventually
> + // replace the iterator interface above.
> + ArrayRef<ParmVarDecl*> parameters() const {
> + return llvm::makeArrayRef(const_cast<ParmVarDecl**>(getParams()),
> + NumParams);
> + }
> +
> /// \brief Sets the method's parameters and selector source locations.
> /// If the method is implicit (not coming from source) \p SelLocs is
> /// ignored.
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
More information about the cfe-commits
mailing list