summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/ExprCXX.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/AST/ExprCXX.cpp')
-rw-r--r--clang/lib/AST/ExprCXX.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/clang/lib/AST/ExprCXX.cpp b/clang/lib/AST/ExprCXX.cpp
index 07d794ea437..b21b4136898 100644
--- a/clang/lib/AST/ExprCXX.cpp
+++ b/clang/lib/AST/ExprCXX.cpp
@@ -61,6 +61,14 @@ Stmt::child_iterator CXXDefaultArgExpr::child_end() {
return child_iterator();
}
+// CXXTemporaryObjectExpr
+Stmt::child_iterator CXXTemporaryObjectExpr::child_begin() {
+ return child_iterator(Args);
+}
+Stmt::child_iterator CXXTemporaryObjectExpr::child_end() {
+ return child_iterator(Args + NumArgs);
+}
+
// CXXZeroInitValueExpr
Stmt::child_iterator CXXZeroInitValueExpr::child_begin() {
return child_iterator();
@@ -219,3 +227,23 @@ const char *CXXNamedCastExpr::getCastName() const {
default: return "<invalid cast>";
}
}
+
+CXXTemporaryObjectExpr::CXXTemporaryObjectExpr(CXXConstructorDecl *Cons,
+ QualType writtenTy,
+ SourceLocation tyBeginLoc,
+ Expr **Args,
+ unsigned NumArgs,
+ SourceLocation rParenLoc)
+ : Expr(CXXTemporaryObjectExprClass, writtenTy),
+ TyBeginLoc(tyBeginLoc), RParenLoc(rParenLoc),
+ Constructor(Cons), Args(0), NumArgs(NumArgs) {
+ if (NumArgs > 0) {
+ this->Args = new Stmt*[NumArgs];
+ for (unsigned i = 0; i < NumArgs; ++i)
+ this->Args[i] = Args[i];
+ }
+}
+
+CXXTemporaryObjectExpr::~CXXTemporaryObjectExpr() {
+ delete [] Args;
+}
OpenPOWER on IntegriCloud