[cfe-commits] r72915 - in /cfe/trunk: include/clang/AST/DeclTemplate.h lib/Sema/Sema.h lib/Sema/SemaTemplate.cpp

Douglas Gregor dgregor at apple.com
Thu Jun 4 20:49:02 PDT 2009


On Jun 4, 2009, at 8:43 PM, Anders Carlsson wrote:

> Author: andersca
> Date: Thu Jun  4 22:43:12 2009
> New Revision: 72915
>
> URL: http://llvm.org/viewvc/llvm-project?rev=72915&view=rev
> Log:
> Add a helper class for building template argument lists.
>
> Modified:
>    cfe/trunk/include/clang/AST/DeclTemplate.h
>    cfe/trunk/lib/Sema/Sema.h
>    cfe/trunk/lib/Sema/SemaTemplate.cpp
>
> Modified: cfe/trunk/include/clang/AST/DeclTemplate.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclTemplate.h?rev=72915&r1=72914&r2=72915&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- cfe/trunk/include/clang/AST/DeclTemplate.h (original)
> +++ cfe/trunk/include/clang/AST/DeclTemplate.h Thu Jun  4 22:43:12  
> 2009
> @@ -573,6 +573,20 @@
>   }
> };
>
> +/// \brief A helper class for making template argument lists.
> +class TemplateArgumentListBuilder {
> +  llvm::SmallVector<TemplateArgument, 16> Args;
> +
> +public:
> +  // FIXME: Should use index array size.
> +  size_t size() const { return Args.size(); }
> +
> +  size_t flatSize() const { return Args.size(); }
> +
> +  TemplateArgument *getFlatArgumentList() { return Args.data(); }
> +  void push_back(const TemplateArgument& Arg)  
> { Args.push_back(Arg); }
> +};


This Builder class would be a wonderful place to put in asserts() for  
all of our template argument list invariants (canonical types and  
decls, integer arguments having the right bitwidth and sign, etc.).

	- Doug



More information about the cfe-commits mailing list