diff options
author | Gabor Greif <ggreif@gmail.com> | 2009-03-18 23:44:22 +0000 |
---|---|---|
committer | Gabor Greif <ggreif@gmail.com> | 2009-03-18 23:44:22 +0000 |
commit | 6afd73391eee9fc8b657eb1c55c65da6f1a4b8a4 (patch) | |
tree | 4c52e7dd91d2fd93012650e39f8d50ab50de0d7a | |
parent | 7ef5ed6c16e29495b853002a89509e69bc3146af (diff) | |
download | bcm5719-llvm-6afd73391eee9fc8b657eb1c55c65da6f1a4b8a4.tar.gz bcm5719-llvm-6afd73391eee9fc8b657eb1c55c65da6f1a4b8a4.zip |
Add a sugared version of ASTOwningResult::take,
that does a downcast. It is named takeAs<T>().
The plain-pointer version is also added, but
that side seems to be seriously bitrotten.
llvm-svn: 67258
-rw-r--r-- | clang/include/clang/Parse/Ownership.h | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/clang/include/clang/Parse/Ownership.h b/clang/include/clang/Parse/Ownership.h index 9665576a050..ce0707e9bf0 100644 --- a/clang/include/clang/Parse/Ownership.h +++ b/clang/include/clang/Parse/Ownership.h @@ -204,8 +204,8 @@ namespace clang /// when recovering from errors. These are in ActionBase because the smart /// pointers need access to them. virtual void DeleteExpr(ExprTy *E) {} - virtual void DeleteStmt(StmtTy *E) {} - virtual void DeleteTemplateParams(TemplateParamsTy *E) {} + virtual void DeleteStmt(StmtTy *S) {} + virtual void DeleteTemplateParams(TemplateParamsTy *P) {} }; /// ASTDestroyer - The type of an AST node destruction function pointer. @@ -383,6 +383,12 @@ namespace clang return tmp; } + /// Take outside ownership of the raw pointer and cast it down. + template<typename T> + T *takeAs() { + return static_cast<T*>(take()); + } + /// Alias for interface familiarity with unique_ptr. void * release() { return take(); } @@ -443,6 +449,12 @@ namespace clang return Result.get(); } + /// Take outside ownership of the raw pointer and cast it down. + template<typename T> + T *takeAs() { + return static_cast<T*>(take()); + } + /// Alias for interface familiarity with unique_ptr. void * release() { return take(); } |