]> granicus.if.org Git - clang/commit
Add member template 'Type::getAs<T>', which converts a Type* to a respective T*.
authorTed Kremenek <kremenek@apple.com>
Thu, 16 Jul 2009 19:58:26 +0000 (19:58 +0000)
committerTed Kremenek <kremenek@apple.com>
Thu, 16 Jul 2009 19:58:26 +0000 (19:58 +0000)
commit1a1a6e2bd4c5aefd7fd643cf25915f9623a02e59
tree333652f464e28debc770fc4b30bc5b8f74254d28
parente41611aa2237d06a0ef61db4528fb2883a8defcd
Add member template 'Type::getAs<T>', which converts a Type* to a respective T*.
This method is intended to eventually replace the individual
Type::getAsXXXType<> methods.

The motivation behind this change is twofold:

1) Reduce redundant implementations of Type::getAsXXXType() methods. Most of
them are basically copy-and-paste.

2) By centralizing the implementation of the getAs<Type> logic we can more
smoothly move over to Doug Gregor's proposed canonical type smart pointer
scheme.

Along with this patch:

a) Removed 'Type::getAsPointerType()'; now clients use getAs<PointerType>.
b) Removed 'Type::getAsBlockPointerTypE()'; now clients use getAs<BlockPointerType>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76098 91177308-0d34-0410-b5e6-96231b3b80d8
34 files changed:
include/clang/AST/ExprCXX.h
include/clang/AST/Type.h
include/clang/Analysis/PathSensitive/MemRegion.h
lib/AST/ASTContext.cpp
lib/AST/DeclPrinter.cpp
lib/AST/Expr.cpp
lib/AST/ExprConstant.cpp
lib/AST/Type.cpp
lib/Analysis/BasicStore.cpp
lib/Analysis/CFRefCount.cpp
lib/Analysis/CheckNSError.cpp
lib/Analysis/GRExprEngine.cpp
lib/Analysis/RegionStore.cpp
lib/Analysis/Store.cpp
lib/CodeGen/CGBlocks.cpp
lib/CodeGen/CGExpr.cpp
lib/CodeGen/CGExprScalar.cpp
lib/CodeGen/CGObjCMac.cpp
lib/CodeGen/CodeGenFunction.cpp
lib/Frontend/RewriteBlocks.cpp
lib/Frontend/RewriteObjC.cpp
lib/Sema/SemaChecking.cpp
lib/Sema/SemaDeclAttr.cpp
lib/Sema/SemaDeclCXX.cpp
lib/Sema/SemaExpr.cpp
lib/Sema/SemaExprCXX.cpp
lib/Sema/SemaExprObjC.cpp
lib/Sema/SemaLookup.cpp
lib/Sema/SemaNamedCast.cpp
lib/Sema/SemaOverload.cpp
lib/Sema/SemaStmt.cpp
lib/Sema/SemaTemplate.cpp
lib/Sema/SemaTemplateDeduction.cpp
lib/Sema/SemaType.cpp