diff options
author | Chandler Carruth <chandlerc@gmail.com> | 2010-10-27 06:55:41 +0000 |
---|---|---|
committer | Chandler Carruth <chandlerc@gmail.com> | 2010-10-27 06:55:41 +0000 |
commit | 00426b4876c04346de6e78a9d29760e524d0bc81 (patch) | |
tree | 3db01028e8123ee8b13dc91deab9b15d8038ab68 /clang/lib/AST/ExprCXX.cpp | |
parent | 90f90cdae1fb38a3c5e9bbd8b31b0695b53a1030 (diff) | |
download | bcm5719-llvm-00426b4876c04346de6e78a9d29760e524d0bc81.tar.gz bcm5719-llvm-00426b4876c04346de6e78a9d29760e524d0bc81.zip |
Add helper for extracting the CXXRecordDecl for the implicit argument to
a member call expression. This has proved to be a common pattern for users of
RecursiveASTVisitor.
llvm-svn: 117439
Diffstat (limited to 'clang/lib/AST/ExprCXX.cpp')
-rw-r--r-- | clang/lib/AST/ExprCXX.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/clang/lib/AST/ExprCXX.cpp b/clang/lib/AST/ExprCXX.cpp index 0cdf8dd075d..1e0691830aa 100644 --- a/clang/lib/AST/ExprCXX.cpp +++ b/clang/lib/AST/ExprCXX.cpp @@ -385,6 +385,17 @@ Expr *CXXMemberCallExpr::getImplicitObjectArgument() { return 0; } +CXXRecordDecl *CXXMemberCallExpr::getRecordDecl() { + Expr* ThisArg = getImplicitObjectArgument(); + if (!ThisArg) + return 0; + + if (ThisArg->getType()->isAnyPointerType()) + return ThisArg->getType()->getPointeeType()->getAsCXXRecordDecl(); + + return ThisArg->getType()->getAsCXXRecordDecl(); +} + SourceRange CXXMemberCallExpr::getSourceRange() const { SourceLocation LocStart = getCallee()->getLocStart(); if (LocStart.isInvalid() && getNumArgs() > 0) |