clang  3.7.0
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Friends | List of all members
clang::CXXConstructExpr Class Reference

Represents a call to a C++ constructor. More...

#include <ExprCXX.h>

Inheritance diagram for clang::CXXConstructExpr:
[legend]
Collaboration diagram for clang::CXXConstructExpr:
[legend]

Public Types

enum  ConstructionKind { CK_Complete, CK_NonVirtualBase, CK_VirtualBase, CK_Delegating }
 
typedef ExprIterator arg_iterator
 
typedef ConstExprIterator const_arg_iterator
 
typedef llvm::iterator_range
< arg_iterator
arg_range
 
typedef llvm::iterator_range
< const_arg_iterator
arg_const_range
 
- Public Types inherited from clang::Expr
enum  LValueClassification {
  LV_Valid, LV_NotObjectType, LV_IncompleteVoidType, LV_DuplicateVectorComponents,
  LV_InvalidExpression, LV_InvalidMessageExpression, LV_MemberFunction, LV_SubObjCPropertySetting,
  LV_ClassTemporary, LV_ArrayTemporary
}
 
enum  isModifiableLvalueResult {
  MLV_Valid, MLV_NotObjectType, MLV_IncompleteVoidType, MLV_DuplicateVectorComponents,
  MLV_InvalidExpression, MLV_LValueCast, MLV_IncompleteType, MLV_ConstQualified,
  MLV_ConstAddrSpace, MLV_ArrayType, MLV_NoSetterProperty, MLV_MemberFunction,
  MLV_SubObjCPropertySetting, MLV_InvalidMessageExpression, MLV_ClassTemporary, MLV_ArrayTemporary
}
 
enum  SideEffectsKind { SE_NoSideEffects, SE_AllowSideEffects }
 
enum  NullPointerConstantKind {
  NPCK_NotNull = 0, NPCK_ZeroExpression, NPCK_ZeroLiteral, NPCK_CXX11_nullptr,
  NPCK_GNUNull
}
 Enumeration used to describe the kind of Null pointer constant returned from isNullPointerConstant(). More...
 
enum  NullPointerConstantValueDependence { NPC_NeverValueDependent = 0, NPC_ValueDependentIsNull, NPC_ValueDependentIsNotNull }
 Enumeration used to describe how isNullPointerConstant() should cope with value-dependent expressions. More...
 

Public Member Functions

 CXXConstructExpr (EmptyShell Empty)
 Construct an empty C++ construction expression. More...
 
CXXConstructorDeclgetConstructor () const
 
void setConstructor (CXXConstructorDecl *C)
 
SourceLocation getLocation () const
 
void setLocation (SourceLocation Loc)
 
bool isElidable () const
 Whether this construction is elidable. More...
 
void setElidable (bool E)
 
bool hadMultipleCandidates () const
 Whether the referred constructor was resolved from an overloaded set having size greater than 1. More...
 
void setHadMultipleCandidates (bool V)
 
bool isListInitialization () const
 Whether this constructor call was written as list-initialization. More...
 
void setListInitialization (bool V)
 
bool isStdInitListInitialization () const
 Whether this constructor call was written as list-initialization, but was interpreted as forming a std::initializer_list<T> from the list and passing that as a single constructor argument. See C++11 [over.match.list]p1 bullet 1. More...
 
void setStdInitListInitialization (bool V)
 
bool requiresZeroInitialization () const
 Whether this construction first requires zero-initialization before the initializer is called. More...
 
void setRequiresZeroInitialization (bool ZeroInit)
 
ConstructionKind getConstructionKind () const
 Determine whether this constructor is actually constructing a base class (rather than a complete object). More...
 
void setConstructionKind (ConstructionKind CK)
 
arg_range arguments ()
 
arg_const_range arguments () const
 
arg_iterator arg_begin ()
 
arg_iterator arg_end ()
 
const_arg_iterator arg_begin () const
 
const_arg_iterator arg_end () const
 
Expr ** getArgs ()
 
const Expr *const * getArgs () const
 
unsigned getNumArgs () const
 
ExprgetArg (unsigned Arg)
 Return the specified argument. More...
 
const ExprgetArg (unsigned Arg) const
 
void setArg (unsigned Arg, Expr *ArgExpr)
 Set the specified argument. More...
 
SourceLocation getLocStart () const LLVM_READONLY
 
SourceLocation getLocEnd () const LLVM_READONLY
 
SourceRange getParenOrBraceRange () const
 
void setParenOrBraceRange (SourceRange Range)
 
child_range children ()
 
- Public Member Functions inherited from clang::Expr
QualType getType () const
 
void setType (QualType t)
 
bool isValueDependent () const
 
void setValueDependent (bool VD)
 Set whether this expression is value-dependent or not. More...
 
bool isTypeDependent () const
 
void setTypeDependent (bool TD)
 Set whether this expression is type-dependent or not. More...
 
bool isInstantiationDependent () const
 Whether this expression is instantiation-dependent, meaning that it depends in some way on a template parameter, even if neither its type nor (constant) value can change due to the template instantiation. More...
 
void setInstantiationDependent (bool ID)
 Set whether this expression is instantiation-dependent or not. More...
 
bool containsUnexpandedParameterPack () const
 Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates). More...
 
void setContainsUnexpandedParameterPack (bool PP=true)
 Set the bit that describes whether this expression contains an unexpanded parameter pack. More...
 
SourceLocation getExprLoc () const LLVM_READONLY
 
bool isUnusedResultAWarning (const Expr *&WarnExpr, SourceLocation &Loc, SourceRange &R1, SourceRange &R2, ASTContext &Ctx) const
 
bool isLValue () const
 
bool isRValue () const
 
bool isXValue () const
 
bool isGLValue () const
 
LValueClassification ClassifyLValue (ASTContext &Ctx) const
 Reasons why an expression might not be an l-value. More...
 
isModifiableLvalueResult isModifiableLvalue (ASTContext &Ctx, SourceLocation *Loc=nullptr) const
 
Classification Classify (ASTContext &Ctx) const
 Classify - Classify this expression according to the C++11 expression taxonomy. More...
 
Classification ClassifyModifiable (ASTContext &Ctx, SourceLocation &Loc) const
 ClassifyModifiable - Classify this expression according to the C++11 expression taxonomy, and see if it is valid on the left side of an assignment. More...
 
ExprValueKind getValueKind () const
 getValueKind - The value kind that this expression produces. More...
 
ExprObjectKind getObjectKind () const
 
bool isOrdinaryOrBitFieldObject () const
 
void setValueKind (ExprValueKind Cat)
 setValueKind - Set the value kind produced by this expression. More...
 
void setObjectKind (ExprObjectKind Cat)
 setObjectKind - Set the object kind produced by this expression. More...
 
bool refersToBitField () const
 Returns true if this expression is a gl-value that potentially refers to a bit-field. More...
 
FieldDeclgetSourceBitField ()
 If this expression refers to a bit-field, retrieve the declaration of that bit-field. More...
 
const FieldDeclgetSourceBitField () const
 
const ObjCPropertyRefExprgetObjCProperty () const
 If this expression is an l-value for an Objective C property, find the underlying property reference expression. More...
 
bool isObjCSelfExpr () const
 Check if this expression is the ObjC 'self' implicit parameter. More...
 
bool refersToVectorElement () const
 Returns whether this expression refers to a vector element. More...
 
bool hasPlaceholderType () const
 Returns whether this expression has a placeholder type. More...
 
bool hasPlaceholderType (BuiltinType::Kind K) const
 Returns whether this expression has a specific placeholder type. More...
 
bool isKnownToHaveBooleanValue () const
 
bool isIntegerConstantExpr (llvm::APSInt &Result, const ASTContext &Ctx, SourceLocation *Loc=nullptr, bool isEvaluated=true) const
 
bool isIntegerConstantExpr (const ASTContext &Ctx, SourceLocation *Loc=nullptr) const
 
bool isCXX98IntegralConstantExpr (const ASTContext &Ctx) const
 
bool isCXX11ConstantExpr (const ASTContext &Ctx, APValue *Result=nullptr, SourceLocation *Loc=nullptr) const
 
bool isConstantInitializer (ASTContext &Ctx, bool ForRef, const Expr **Culprit=nullptr) const
 
bool EvaluateAsRValue (EvalResult &Result, const ASTContext &Ctx) const
 
bool EvaluateAsBooleanCondition (bool &Result, const ASTContext &Ctx) const
 
bool EvaluateAsInt (llvm::APSInt &Result, const ASTContext &Ctx, SideEffectsKind AllowSideEffects=SE_NoSideEffects) const
 
bool isEvaluatable (const ASTContext &Ctx) const
 
bool HasSideEffects (const ASTContext &Ctx, bool IncludePossibleEffects=true) const
 
bool hasNonTrivialCall (const ASTContext &Ctx) const
 Determine whether this expression involves a call to any function that is not trivial. More...
 
llvm::APSInt EvaluateKnownConstInt (const ASTContext &Ctx, SmallVectorImpl< PartialDiagnosticAt > *Diag=nullptr) const
 
void EvaluateForOverflow (const ASTContext &Ctx) const
 
bool EvaluateAsLValue (EvalResult &Result, const ASTContext &Ctx) const
 
bool EvaluateAsInitializer (APValue &Result, const ASTContext &Ctx, const VarDecl *VD, SmallVectorImpl< PartialDiagnosticAt > &Notes) const
 
bool EvaluateWithSubstitution (APValue &Value, ASTContext &Ctx, const FunctionDecl *Callee, ArrayRef< const Expr * > Args) const
 
NullPointerConstantKind isNullPointerConstant (ASTContext &Ctx, NullPointerConstantValueDependence NPC) const
 
bool isOBJCGCCandidate (ASTContext &Ctx) const
 
bool isBoundMemberFunction (ASTContext &Ctx) const
 Returns true if this expression is a bound member function. More...
 
ExprIgnoreImpCasts () LLVM_READONLY
 
ExprIgnoreImplicit () LLVM_READONLY
 
const ExprIgnoreImplicit () const LLVM_READONLY
 
ExprIgnoreParens () LLVM_READONLY
 
ExprIgnoreParenCasts () LLVM_READONLY
 
ExprIgnoreCasts () LLVM_READONLY
 Ignore casts. Strip off any CastExprs, returning their operand. More...
 
ExprIgnoreParenImpCasts () LLVM_READONLY
 
ExprIgnoreConversionOperator () LLVM_READONLY
 
const ExprIgnoreConversionOperator () const LLVM_READONLY
 
const ExprIgnoreParenImpCasts () const LLVM_READONLY
 
ExprIgnoreParenLValueCasts () LLVM_READONLY
 
const ExprIgnoreParenLValueCasts () const LLVM_READONLY
 
ExprIgnoreParenNoopCasts (ASTContext &Ctx) LLVM_READONLY
 
ExprignoreParenBaseCasts () LLVM_READONLY
 Ignore parentheses and derived-to-base casts. More...
 
const ExprignoreParenBaseCasts () const LLVM_READONLY
 
bool isDefaultArgument () const
 Determine whether this expression is a default function argument. More...
 
bool isTemporaryObject (ASTContext &Ctx, const CXXRecordDecl *TempTy) const
 Determine whether the result of this expression is a temporary object of the given class type. More...
 
bool isImplicitCXXThis () const
 Whether this expression is an implicit reference to 'this' in C++. More...
 
const ExprIgnoreImpCasts () const LLVM_READONLY
 
const ExprIgnoreParens () const LLVM_READONLY
 
const ExprIgnoreParenCasts () const LLVM_READONLY
 
const ExprIgnoreCasts () const LLVM_READONLY
 Strip off casts, but keep parentheses. More...
 
const ExprIgnoreParenNoopCasts (ASTContext &Ctx) const LLVM_READONLY
 
const CXXRecordDeclgetBestDynamicClassType () const
 For an expression of class type or pointer to class type, return the most derived class decl the expression is known to refer to. More...
 
const ExprskipRValueSubobjectAdjustments (SmallVectorImpl< const Expr * > &CommaLHS, SmallVectorImpl< SubobjectAdjustment > &Adjustments) const
 

Static Public Member Functions

static CXXConstructExprCreate (const ASTContext &C, QualType T, SourceLocation Loc, CXXConstructorDecl *D, bool Elidable, ArrayRef< Expr * > Args, bool HadMultipleCandidates, bool ListInitialization, bool StdInitListInitialization, bool ZeroInitialization, ConstructionKind ConstructKind, SourceRange ParenOrBraceRange)
 
static bool classof (const Stmt *T)
 
- Static Public Member Functions inherited from clang::Expr
static ExprValueKind getValueKindForType (QualType T)
 
static bool isPotentialConstantExpr (const FunctionDecl *FD, SmallVectorImpl< PartialDiagnosticAt > &Diags)
 
static bool isPotentialConstantExprUnevaluated (Expr *E, const FunctionDecl *FD, SmallVectorImpl< PartialDiagnosticAt > &Diags)
 
static QualType findBoundMemberType (const Expr *expr)
 Given an expression of bound-member type, find the type of the member. Returns null if this is an overloaded bound member expression. More...
 
static bool hasAnyTypeDependentArguments (ArrayRef< Expr * > Exprs)
 
static bool classof (const Stmt *T)
 

Protected Member Functions

 CXXConstructExpr (const ASTContext &C, StmtClass SC, QualType T, SourceLocation Loc, CXXConstructorDecl *d, bool elidable, ArrayRef< Expr * > Args, bool HadMultipleCandidates, bool ListInitialization, bool StdInitListInitialization, bool ZeroInitialization, ConstructionKind ConstructKind, SourceRange ParenOrBraceRange)
 
 CXXConstructExpr (StmtClass SC, EmptyShell Empty)
 Construct an empty C++ construction expression. More...
 
- Protected Member Functions inherited from clang::Expr
 Expr (StmtClass SC, QualType T, ExprValueKind VK, ExprObjectKind OK, bool TD, bool VD, bool ID, bool ContainsUnexpandedParameterPack)
 
 Expr (StmtClass SC, EmptyShell)
 Construct an empty expression. More...
 

Friends

class ASTStmtReader
 

Detailed Description

Represents a call to a C++ constructor.

Definition at line 1075 of file ExprCXX.h.

Member Typedef Documentation

Definition at line 1182 of file ExprCXX.h.

Definition at line 1179 of file ExprCXX.h.

typedef llvm::iterator_range<arg_iterator> clang::CXXConstructExpr::arg_range

Definition at line 1181 of file ExprCXX.h.

Definition at line 1180 of file ExprCXX.h.

Member Enumeration Documentation

Enumerator
CK_Complete 
CK_NonVirtualBase 
CK_VirtualBase 
CK_Delegating 

Definition at line 1077 of file ExprCXX.h.

Constructor & Destructor Documentation

CXXConstructExpr::CXXConstructExpr ( const ASTContext C,
StmtClass  SC,
QualType  T,
SourceLocation  Loc,
CXXConstructorDecl d,
bool  elidable,
ArrayRef< Expr * >  Args,
bool  HadMultipleCandidates,
bool  ListInitialization,
bool  StdInitListInitialization,
bool  ZeroInitialization,
ConstructionKind  ConstructKind,
SourceRange  ParenOrBraceRange 
)
protected
clang::CXXConstructExpr::CXXConstructExpr ( StmtClass  SC,
EmptyShell  Empty 
)
inlineprotected

Construct an empty C++ construction expression.

Definition at line 1111 of file ExprCXX.h.

clang::CXXConstructExpr::CXXConstructExpr ( EmptyShell  Empty)
inlineexplicit

Construct an empty C++ construction expression.

Definition at line 1119 of file ExprCXX.h.

Member Function Documentation

arg_iterator clang::CXXConstructExpr::arg_begin ( )
inline
const_arg_iterator clang::CXXConstructExpr::arg_begin ( ) const
inline

Definition at line 1191 of file ExprCXX.h.

arg_iterator clang::CXXConstructExpr::arg_end ( )
inline
const_arg_iterator clang::CXXConstructExpr::arg_end ( ) const
inline

Definition at line 1192 of file ExprCXX.h.

arg_range clang::CXXConstructExpr::arguments ( )
inline

Definition at line 1184 of file ExprCXX.h.

References arg_begin(), and arg_end().

arg_const_range clang::CXXConstructExpr::arguments ( ) const
inline

Definition at line 1185 of file ExprCXX.h.

References arg_begin(), and arg_end().

child_range clang::CXXConstructExpr::children ( )
inline

Definition at line 1227 of file ExprCXX.h.

static bool clang::CXXConstructExpr::classof ( const Stmt T)
inlinestatic

Definition at line 1221 of file ExprCXX.h.

CXXConstructExpr * CXXConstructExpr::Create ( const ASTContext C,
QualType  T,
SourceLocation  Loc,
CXXConstructorDecl D,
bool  Elidable,
ArrayRef< Expr * >  Args,
bool  HadMultipleCandidates,
bool  ListInitialization,
bool  StdInitListInitialization,
bool  ZeroInitialization,
ConstructionKind  ConstructKind,
SourceRange  ParenOrBraceRange 
)
static
Expr* clang::CXXConstructExpr::getArg ( unsigned  Arg)
inline
const Expr* clang::CXXConstructExpr::getArg ( unsigned  Arg) const
inline

Definition at line 1205 of file ExprCXX.h.

Expr** clang::CXXConstructExpr::getArgs ( )
inline

Definition at line 1194 of file ExprCXX.h.

Referenced by getArgs().

const Expr* const* clang::CXXConstructExpr::getArgs ( ) const
inline

Definition at line 1195 of file ExprCXX.h.

References getArgs().

ConstructionKind clang::CXXConstructExpr::getConstructionKind ( ) const
inline

Determine whether this constructor is actually constructing a base class (rather than a complete object).

Definition at line 1172 of file ExprCXX.h.

Referenced by clang::CodeGen::CodeGenFunction::EmitCXXConstructExpr(), mayInlineCallKind(), clang::ASTNodeImporter::VisitCXXConstructExpr(), and clang::ento::ExprEngine::VisitCXXConstructExpr().

CXXConstructorDecl* clang::CXXConstructExpr::getConstructor ( ) const
inline
SourceLocation clang::CXXConstructExpr::getLocation ( ) const
inline

Definition at line 1140 of file ExprCXX.h.

Referenced by clang::ASTNodeImporter::VisitCXXConstructExpr().

SourceLocation CXXConstructExpr::getLocEnd ( ) const
SourceLocation CXXConstructExpr::getLocStart ( ) const

Definition at line 478 of file ExprCXX.cpp.

unsigned clang::CXXConstructExpr::getNumArgs ( ) const
inline
SourceRange clang::CXXConstructExpr::getParenOrBraceRange ( ) const
inline
bool clang::CXXConstructExpr::hadMultipleCandidates ( ) const
inline

Whether the referred constructor was resolved from an overloaded set having size greater than 1.

Definition at line 1149 of file ExprCXX.h.

Referenced by clang::ASTNodeImporter::VisitCXXConstructExpr().

bool clang::CXXConstructExpr::isElidable ( ) const
inline

Whether this construction is elidable.

Definition at line 1144 of file ExprCXX.h.

Referenced by clang::CodeGen::CodeGenFunction::EmitCXXConstructExpr(), ShouldDiagnoseUnusedDecl(), and clang::ASTNodeImporter::VisitCXXConstructExpr().

bool clang::CXXConstructExpr::isListInitialization ( ) const
inline

Whether this constructor call was written as list-initialization.

Definition at line 1153 of file ExprCXX.h.

Referenced by clang::ASTNodeImporter::VisitCXXConstructExpr().

bool clang::CXXConstructExpr::isStdInitListInitialization ( ) const
inline

Whether this constructor call was written as list-initialization, but was interpreted as forming a std::initializer_list<T> from the list and passing that as a single constructor argument. See C++11 [over.match.list]p1 bullet 1.

Definition at line 1160 of file ExprCXX.h.

Referenced by clang::ASTNodeImporter::VisitCXXConstructExpr().

bool clang::CXXConstructExpr::requiresZeroInitialization ( ) const
inline

Whether this construction first requires zero-initialization before the initializer is called.

Definition at line 1165 of file ExprCXX.h.

Referenced by clang::CodeGen::CodeGenFunction::EmitCXXConstructExpr(), clang::CodeGen::CodeGenFunction::EmitSynthesizedCXXCopyCtor(), clang::ASTNodeImporter::VisitCXXConstructExpr(), and clang::ento::ExprEngine::VisitCXXConstructExpr().

void clang::CXXConstructExpr::setArg ( unsigned  Arg,
Expr ArgExpr 
)
inline

Set the specified argument.

Definition at line 1211 of file ExprCXX.h.

void clang::CXXConstructExpr::setConstructionKind ( ConstructionKind  CK)
inline

Definition at line 1175 of file ExprCXX.h.

void clang::CXXConstructExpr::setConstructor ( CXXConstructorDecl C)
inline

Definition at line 1138 of file ExprCXX.h.

References AttributeLangSupport::C.

void clang::CXXConstructExpr::setElidable ( bool  E)
inline

Definition at line 1145 of file ExprCXX.h.

void clang::CXXConstructExpr::setHadMultipleCandidates ( bool  V)
inline

Definition at line 1150 of file ExprCXX.h.

void clang::CXXConstructExpr::setListInitialization ( bool  V)
inline

Definition at line 1154 of file ExprCXX.h.

void clang::CXXConstructExpr::setLocation ( SourceLocation  Loc)
inline

Definition at line 1141 of file ExprCXX.h.

void clang::CXXConstructExpr::setParenOrBraceRange ( SourceRange  Range)
inline

Definition at line 1219 of file ExprCXX.h.

void clang::CXXConstructExpr::setRequiresZeroInitialization ( bool  ZeroInit)
inline

Definition at line 1166 of file ExprCXX.h.

void clang::CXXConstructExpr::setStdInitListInitialization ( bool  V)
inline

Definition at line 1161 of file ExprCXX.h.

Friends And Related Function Documentation

friend class ASTStmtReader
friend

Definition at line 1231 of file ExprCXX.h.


The documentation for this class was generated from the following files: