Lines Matching refs:Expr

11 /// \brief Defines the clang::Expr interface and subclasses for C++ expressions.
19 #include "clang/AST/Expr.h"
66 CXXOperatorCallExpr(ASTContext& C, OverloadedOperatorKind Op, Expr *fn,
67 ArrayRef<Expr*> args, QualType t, ExprValueKind VK,
119 CXXMemberCallExpr(ASTContext &C, Expr *fn, ArrayRef<Expr*> args,
129 Expr *getImplicitObjectArgument() const;
153 CUDAKernelCallExpr(ASTContext &C, Expr *fn, CallExpr *Config,
154 ArrayRef<Expr*> args, QualType t, ExprValueKind VK,
188 CastKind kind, Expr *op, unsigned PathSize,
232 CXXStaticCastExpr(QualType ty, ExprValueKind vk, CastKind kind, Expr *op,
244 ExprValueKind VK, CastKind K, Expr *Op,
264 Expr *op, unsigned pathSize, TypeSourceInfo *writtenTy,
275 ExprValueKind VK, CastKind Kind, Expr *Op,
301 Expr *op, unsigned pathSize,
314 Expr *Op, const CXXCastPath *Path,
334 CXXConstCastExpr(QualType ty, ExprValueKind VK, Expr *op,
345 ExprValueKind VK, Expr *Op,
370 UserDefinedLiteral(const ASTContext &C, Expr *Fn, ArrayRef<Expr*> Args,
395 Expr *getCookedLiteral();
396 const Expr *getCookedLiteral() const {
427 class CXXBoolLiteralExpr : public Expr {
432 Expr(CXXBoolLiteralExprClass, Ty, VK_RValue, OK_Ordinary, false, false,
437 : Expr(CXXBoolLiteralExprClass, Empty) { }
459 class CXXNullPtrLiteralExpr : public Expr {
463 Expr(CXXNullPtrLiteralExprClass, Ty, VK_RValue, OK_Ordinary, false, false,
468 : Expr(CXXNullPtrLiteralExprClass, Empty) { }
485 class CXXStdInitializerListExpr : public Expr {
489 : Expr(CXXStdInitializerListExprClass, Empty), SubExpr(nullptr) {}
492 CXXStdInitializerListExpr(QualType Ty, Expr *SubExpr)
493 : Expr(CXXStdInitializerListExprClass, Ty, VK_RValue, OK_Ordinary,
499 Expr *getSubExpr() { return static_cast<Expr*>(SubExpr); }
500 const Expr *getSubExpr() const { return static_cast<const Expr*>(SubExpr); }
527 class CXXTypeidExpr : public Expr {
534 : Expr(CXXTypeidExprClass, Ty, VK_LValue, OK_Ordinary,
543 CXXTypeidExpr(QualType Ty, Expr *Operand, SourceRange R)
544 : Expr(CXXTypeidExprClass, Ty, VK_LValue, OK_Ordinary,
554 : Expr(CXXTypeidExprClass, Empty) {
556 Operand = (Expr*)nullptr;
582 Expr *getExprOperand() const {
584 return static_cast<Expr*>(Operand.get<Stmt *>());
587 void setExprOperand(Expr *E) {
614 class MSPropertyRefExpr : public Expr {
615 Expr *BaseExpr;
622 MSPropertyRefExpr(Expr *baseExpr, MSPropertyDecl *decl, bool isArrow,
626 : Expr(MSPropertyRefExprClass, ty, VK, OK_Ordinary,
634 MSPropertyRefExpr(EmptyShell Empty) : Expr(MSPropertyRefExprClass, Empty) {}
659 Expr *getBaseExpr() const { return BaseExpr; }
672 class CXXUuidofExpr : public Expr {
679 : Expr(CXXUuidofExprClass, Ty, VK_LValue, OK_Ordinary,
685 CXXUuidofExpr(QualType Ty, Expr *Operand, SourceRange R)
686 : Expr(CXXUuidofExprClass, Ty, VK_LValue, OK_Ordinary,
693 : Expr(CXXUuidofExprClass, Empty) {
695 Operand = (Expr*)nullptr;
717 Expr *getExprOperand() const {
719 return static_cast<Expr*>(Operand.get<Stmt *>());
722 void setExprOperand(Expr *E) {
763 class CXXThisExpr : public Expr {
769 : Expr(CXXThisExprClass, Type, VK_RValue, OK_Ordinary,
777 CXXThisExpr(EmptyShell Empty) : Expr(CXXThisExprClass, Empty) {}
801 class CXXThrowExpr : public Expr {
813 CXXThrowExpr(Expr *expr, QualType Ty, SourceLocation l,
815 Expr(CXXThrowExprClass, Ty, VK_RValue, OK_Ordinary, false, false,
819 CXXThrowExpr(EmptyShell Empty) : Expr(CXXThrowExprClass, Empty) {}
821 const Expr *getSubExpr() const { return cast_or_null<Expr>(Op); }
822 Expr *getSubExpr() { return cast_or_null<Expr>(Op); }
855 class CXXDefaultArgExpr : public Expr {
867 : Expr(SC,
876 Expr *SubExpr)
877 : Expr(SC, SubExpr->getType(),
881 *reinterpret_cast<Expr **>(this + 1) = SubExpr;
885 CXXDefaultArgExpr(EmptyShell Empty) : Expr(CXXDefaultArgExprClass, Empty) {}
897 ParmVarDecl *Param, Expr *SubExpr);
904 const Expr *getExpr() const {
906 return *reinterpret_cast<Expr const * const*> (this + 1);
909 Expr *getExpr() {
911 return *reinterpret_cast<Expr **> (this + 1);
945 class CXXDefaultInitExpr : public Expr {
955 CXXDefaultInitExpr(EmptyShell Empty) : Expr(CXXDefaultInitExprClass, Empty) {}
970 const Expr *getExpr() const { return Field->getInClassInitializer(); }
971 Expr *getExpr() { return Field->getInClassInitializer(); }
1019 class CXXBindTemporaryExpr : public Expr {
1024 CXXBindTemporaryExpr(CXXTemporary *temp, Expr* SubExpr)
1025 : Expr(CXXBindTemporaryExprClass, SubExpr->getType(),
1034 : Expr(CXXBindTemporaryExprClass, Empty), Temp(nullptr), SubExpr(nullptr) {}
1037 Expr* SubExpr);
1043 const Expr *getSubExpr() const { return cast<Expr>(SubExpr); }
1044 Expr *getSubExpr() { return cast<Expr>(SubExpr); }
1045 void setSubExpr(Expr *E) { SubExpr = E; }
1062 class CXXConstructExpr : public Expr {
1088 ArrayRef<Expr *> Args,
1097 : Expr(SC, Empty), Constructor(nullptr), NumArgs(0), Elidable(false),
1105 : Expr(CXXConstructExprClass, Empty), Constructor(nullptr),
1114 ArrayRef<Expr *> Args,
1164 Expr **getArgs() { return reinterpret_cast<Expr **>(Args); }
1165 const Expr *const *getArgs() const {
1171 Expr *getArg(unsigned Arg) {
1173 return cast<Expr>(Args[Arg]);
1175 const Expr *getArg(unsigned Arg) const {
1177 return cast<Expr>(Args[Arg]);
1181 void setArg(unsigned Arg, Expr *ArgExpr) {
1217 CastKind kind, Expr *castExpr, unsigned pathSize,
1230 CastKind Kind, Expr *Op,
1271 ArrayRef<Expr *> Args,
1312 class LambdaExpr : public Expr {
1360 ArrayRef<Expr *> CaptureInits,
1368 : Expr(LambdaExprClass, Empty),
1403 ArrayRef<Expr *> CaptureInits,
1469 typedef Expr **capture_init_iterator;
1474 return reinterpret_cast<Expr **>(getStoredStmts());
1546 class CXXScalarValueInitExpr : public Expr {
1558 Expr(CXXScalarValueInitExprClass, Type, VK_RValue, OK_Ordinary,
1563 : Expr(CXXScalarValueInitExprClass, Shell) { }
1584 class CXXNewExpr : public Expr {
1632 ArrayRef<Expr*> placementArgs,
1633 SourceRange typeIdParens, Expr *arraySize,
1634 InitializationStyle initializationStyle, Expr *initializer,
1638 : Expr(CXXNewExprClass, Shell), SubExprs(nullptr) { }
1671 Expr *getArraySize() {
1672 return Array ? cast<Expr>(SubExprs[0]) : nullptr;
1674 const Expr *getArraySize() const {
1675 return Array ? cast<Expr>(SubExprs[0]) : nullptr;
1679 Expr **getPlacementArgs() {
1680 return reinterpret_cast<Expr **>(SubExprs + Array + hasInitializer());
1683 Expr *getPlacementArg(unsigned i) {
1687 const Expr *getPlacementArg(unsigned i) const {
1708 Expr *getInitializer() {
1709 return hasInitializer() ? cast<Expr>(SubExprs[Array]) : nullptr;
1711 const Expr *getInitializer() const {
1712 return hasInitializer() ? cast<Expr>(SubExprs[Array]) : nullptr;
1776 class CXXDeleteExpr : public Expr {
1797 FunctionDecl *operatorDelete, Expr *arg, SourceLocation loc)
1798 : Expr(CXXDeleteExprClass, ty, VK_RValue, OK_Ordinary, false, false,
1806 : Expr(CXXDeleteExprClass, Shell), OperatorDelete(nullptr),
1823 Expr *getArgument() { return cast<Expr>(Argument); }
1824 const Expr *getArgument() const { return cast<Expr>(Argument); }
1897 class CXXPseudoDestructorExpr : public Expr {
1930 Expr *Base, bool isArrow, SourceLocation OperatorLoc,
1938 : Expr(CXXPseudoDestructorExprClass, Shell),
1941 Expr *getBase() const { return cast<Expr>(Base); }
2040 class TypeTraitExpr : public Expr {
2055 TypeTraitExpr(EmptyShell Empty) : Expr(TypeTraitExprClass, Empty) { }
2139 class ArrayTypeTraitExpr : public Expr {
2149 Expr *Dimension;
2163 Expr *dimension, SourceLocation rparen, QualType ty)
2164 : Expr(ArrayTypeTraitExprClass, ty, VK_RValue, OK_Ordinary,
2174 : Expr(ArrayTypeTraitExprClass, Empty), ATT(0), Value(false),
2190 Expr *getDimensionExpression() const { return Dimension; }
2209 class ExpressionTraitExpr : public Expr {
2222 Expr* QueriedExpression;
2225 Expr *queried, bool value,
2227 : Expr(ExpressionTraitExprClass, resultType, VK_RValue, OK_Ordinary,
2237 : Expr(ExpressionTraitExprClass, Empty), ET(0), Value(false),
2245 Expr *getQueriedExpression() const { return QueriedExpression; }
2262 class OverloadExpr : public Expr {
2300 : Expr(K, Empty), QualifierLoc(), Results(nullptr), NumResults(0),
2319 static FindResult find(Expr *E) {
2566 class DependentScopeDeclRefExpr : public Expr {
2723 class ExprWithCleanups : public Expr {
2735 ExprWithCleanups(Expr *SubExpr, ArrayRef<CleanupObject> Objects);
2749 static ExprWithCleanups *Create(const ASTContext &C, Expr *subexpr,
2763 Expr *getSubExpr() { return cast<Expr>(SubExpr); }
2764 const Expr *getSubExpr() const { return cast<Expr>(SubExpr); }
2768 void setSubExpr(Expr *E) { SubExpr = E; }
2805 class CXXUnresolvedConstructExpr : public Expr {
2820 ArrayRef<Expr*> Args,
2824 : Expr(CXXUnresolvedConstructExprClass, Empty), Type(), NumArgs(NumArgs) { }
2832 ArrayRef<Expr*> Args,
2859 typedef Expr** arg_iterator;
2860 arg_iterator arg_begin() { return reinterpret_cast<Expr**>(this + 1); }
2863 typedef const Expr* const * const_arg_iterator;
2865 return reinterpret_cast<const Expr* const *>(this + 1);
2871 Expr *getArg(unsigned I) {
2876 const Expr *getArg(unsigned I) const {
2881 void setArg(unsigned I, Expr *E) {
2910 class CXXDependentScopeMemberExpr : public Expr {
2959 CXXDependentScopeMemberExpr(const ASTContext &C, Expr *Base,
2969 CXXDependentScopeMemberExpr(const ASTContext &C, Expr *Base,
2977 Create(const ASTContext &C, Expr *Base, QualType BaseType, bool IsArrow,
2994 Expr *getBase() const {
2996 return cast<Expr>(Base);
3187 Expr *Base, QualType BaseType, bool IsArrow,
3204 Expr *Base, QualType BaseType, bool IsArrow,
3224 Expr *getBase() {
3226 return cast<Expr>(Base);
3228 const Expr *getBase() const {
3230 return cast<Expr>(Base);
3293 class CXXNoexceptExpr : public Expr {
3301 CXXNoexceptExpr(QualType Ty, Expr *Operand, CanThrowResult Val,
3303 : Expr(CXXNoexceptExprClass, Ty, VK_RValue, OK_Ordinary,
3312 : Expr(CXXNoexceptExprClass, Empty)
3315 Expr *getOperand() const { return static_cast<Expr*>(Operand); }
3348 class PackExpansionExpr : public Expr {
3364 PackExpansionExpr(QualType T, Expr *Pattern, SourceLocation EllipsisLoc,
3366 : Expr(PackExpansionExprClass, T, Pattern->getValueKind(),
3374 PackExpansionExpr(EmptyShell Empty) : Expr(PackExpansionExprClass, Empty) { }
3377 Expr *getPattern() { return reinterpret_cast<Expr *>(Pattern); }
3380 const Expr *getPattern() const { return reinterpret_cast<Expr *>(Pattern); }
3429 class SizeOfPackExpr : public Expr {
3457 : Expr(SizeOfPackExprClass, SizeType, VK_RValue, OK_Ordinary,
3469 : Expr(SizeOfPackExprClass, SizeType, VK_RValue, OK_Ordinary,
3477 SizeOfPackExpr(EmptyShell Empty) : Expr(SizeOfPackExprClass, Empty) { }
3514 class SubstNonTypeTemplateParmExpr : public Expr {
3527 : Expr(SubstNonTypeTemplateParmExprClass, Empty) { }
3534 Expr *replacement)
3535 : Expr(SubstNonTypeTemplateParmExprClass, type, valueKind, OK_Ordinary,
3545 Expr *getReplacement() const { return cast<Expr>(Replacement); }
3569 class SubstNonTypeTemplateParmPackExpr : public Expr {
3586 : Expr(SubstNonTypeTemplateParmPackExprClass, Empty) { }
3629 class FunctionParmPackExpr : public Expr {
3702 class MaterializeTemporaryExpr : public Expr {
3724 MaterializeTemporaryExpr(QualType T, Expr *Temporary,
3726 : Expr(MaterializeTemporaryExprClass, T,
3734 : Expr(MaterializeTemporaryExprClass, Empty) { }
3743 Expr *GetTemporaryExpr() const { return static_cast<Expr *>(getTemporary()); }