From: Anders Carlsson Date: Fri, 24 Apr 2009 04:57:02 +0000 (+0000) Subject: Move the CXXConstructExpr before the CXXTemporaryObjectExpr so that the temporary... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=15ef2b5820f9daccc44b9e847163b705b6f5863b;p=clang Move the CXXConstructExpr before the CXXTemporaryObjectExpr so that the temporary object expr can inherit from the construct expr. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69953 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/AST/ExprCXX.h b/include/clang/AST/ExprCXX.h index 6ef7513e05..7daaa8abbc 100644 --- a/include/clang/AST/ExprCXX.h +++ b/include/clang/AST/ExprCXX.h @@ -379,6 +379,54 @@ public: virtual child_iterator child_end(); }; + +/// CXXConstructExpr - Represents a call to a C++ constructor. +class CXXConstructExpr : public Expr { + VarDecl *VD; + CXXConstructorDecl *Constructor; + + bool Elidable; + + Stmt **Args; + unsigned NumArgs; + + CXXConstructExpr(ASTContext &C, VarDecl *vd, QualType T, + CXXConstructorDecl *d, bool elidable, + Expr **args, unsigned numargs); + ~CXXConstructExpr() { } + +public: + static CXXConstructExpr *Create(ASTContext &C, VarDecl *VD, QualType T, + CXXConstructorDecl *D, bool Elidable, + Expr **Args, unsigned NumArgs); + + void Destroy(ASTContext &C); + + const VarDecl* getVarDecl() const { return VD; } + const CXXConstructorDecl* getConstructor() const { return Constructor; } + + typedef ExprIterator arg_iterator; + typedef ConstExprIterator const_arg_iterator; + + arg_iterator arg_begin() { return Args; } + arg_iterator arg_end() { return Args + NumArgs; } + const_arg_iterator arg_begin() const { return Args; } + const_arg_iterator arg_end() const { return Args + NumArgs; } + + unsigned getNumArgs() const { return NumArgs; } + + virtual SourceRange getSourceRange() const { return SourceRange(); } + + static bool classof(const Stmt *T) { + return T->getStmtClass() == CXXConstructExprClass; + } + static bool classof(const CXXConstructExpr *) { return true; } + + // Iterators + virtual child_iterator child_begin(); + virtual child_iterator child_end(); +}; + /// CXXFunctionalCastExpr - Represents an explicit C++ type conversion /// that uses "functional" notion (C++ [expr.type.conv]). Example: @c /// x = int(0.5); @@ -890,53 +938,6 @@ public: virtual StmtIterator child_end(); }; -/// CXXConstructExpr - Represents a call to a C++ constructor. -class CXXConstructExpr : public Expr { - VarDecl *VD; - CXXConstructorDecl *Constructor; - - bool Elidable; - - Stmt **Args; - unsigned NumArgs; - - CXXConstructExpr(ASTContext &C, VarDecl *vd, QualType T, - CXXConstructorDecl *d, bool elidable, - Expr **args, unsigned numargs); - ~CXXConstructExpr() { } - -public: - static CXXConstructExpr *Create(ASTContext &C, VarDecl *VD, QualType T, - CXXConstructorDecl *D, bool Elidable, - Expr **Args, unsigned NumArgs); - - void Destroy(ASTContext &C); - - const VarDecl* getVarDecl() const { return VD; } - const CXXConstructorDecl* getConstructor() const { return Constructor; } - - typedef ExprIterator arg_iterator; - typedef ConstExprIterator const_arg_iterator; - - arg_iterator arg_begin() { return Args; } - arg_iterator arg_end() { return Args + NumArgs; } - const_arg_iterator arg_begin() const { return Args; } - const_arg_iterator arg_end() const { return Args + NumArgs; } - - unsigned getNumArgs() const { return NumArgs; } - - virtual SourceRange getSourceRange() const { return SourceRange(); } - - static bool classof(const Stmt *T) { - return T->getStmtClass() == CXXConstructExprClass; - } - static bool classof(const CXXConstructExpr *) { return true; } - - // Iterators - virtual child_iterator child_begin(); - virtual child_iterator child_end(); -}; - /// CXXDestroyExpr - Represents an implicit call to a C++ destructor. class CXXDestroyExpr : public Expr { VarDecl *VD;