summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorJohn McCall <rjmccall@apple.com>2012-02-17 03:32:17 +0000
committerJohn McCall <rjmccall@apple.com>2012-02-17 03:32:17 +0000
commit1e25a97ae2613cac034633d0e591b33af8e3c33f (patch)
treeea40f674b177553e6a399dc8507c6a3ee1f0076a /clang
parent400d1f44d1382b280646a16ff3fe617610f2503d (diff)
downloadbcm5719-llvm-1e25a97ae2613cac034633d0e591b33af8e3c33f.tar.gz
bcm5719-llvm-1e25a97ae2613cac034633d0e591b33af8e3c33f.zip
Add a castAs<U> accessor to CanQual<T>.
llvm-svn: 150786
Diffstat (limited to 'clang')
-rw-r--r--clang/include/clang/AST/CanonicalType.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/clang/include/clang/AST/CanonicalType.h b/clang/include/clang/AST/CanonicalType.h
index 38e6b41977f..6cce88868db 100644
--- a/clang/include/clang/AST/CanonicalType.h
+++ b/clang/include/clang/AST/CanonicalType.h
@@ -108,6 +108,8 @@ public:
/// or a derived class thereof, a NULL canonical type.
template<typename U> CanProxy<U> getAs() const;
+ template<typename U> CanProxy<U> castAs() const;
+
/// \brief Overloaded arrow operator that produces a canonical type
/// proxy.
CanProxy<T> operator->() const;
@@ -753,6 +755,13 @@ CanProxy<U> CanQual<T>::getAs() const {
}
template<typename T>
+template<typename U>
+CanProxy<U> CanQual<T>::castAs() const {
+ assert(!Stored.isNull() && isa<U>(Stored.getTypePtr()));
+ return CanQual<U>::CreateUnsafe(Stored);
+}
+
+template<typename T>
CanProxy<T> CanQual<T>::operator->() const {
return CanProxy<T>(*this);
}
OpenPOWER on IntegriCloud