clang  3.7.0
Public Types | Public Member Functions | Static Public Member Functions | List of all members
clang::UnaryOperator Class Reference

#include <Expr.h>

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

Public Types

typedef UnaryOperatorKind Opcode
 
- 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

 UnaryOperator (Expr *input, Opcode opc, QualType type, ExprValueKind VK, ExprObjectKind OK, SourceLocation l)
 
 UnaryOperator (EmptyShell Empty)
 Build an empty unary operator. More...
 
Opcode getOpcode () const
 
void setOpcode (Opcode O)
 
ExprgetSubExpr () const
 
void setSubExpr (Expr *E)
 
SourceLocation getOperatorLoc () const
 getOperatorLoc - Return the location of the operator. More...
 
void setOperatorLoc (SourceLocation L)
 
bool isPrefix () const
 
bool isPostfix () const
 
bool isIncrementOp () const
 
bool isDecrementOp () const
 
bool isIncrementDecrementOp () const
 
bool isArithmeticOp () const
 
SourceLocation getLocStart () const LLVM_READONLY
 
SourceLocation getLocEnd () const LLVM_READONLY
 
SourceLocation getExprLoc () const LLVM_READONLY
 
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 bool isPostfix (Opcode Op)
 isPostfix - Return true if this is a postfix operation, like x++. More...
 
static bool isPrefix (Opcode Op)
 isPrefix - Return true if this is a prefix operation, like –x. More...
 
static bool isIncrementOp (Opcode Op)
 
static bool isDecrementOp (Opcode Op)
 
static bool isIncrementDecrementOp (Opcode Op)
 
static bool isArithmeticOp (Opcode Op)
 
static StringRef getOpcodeStr (Opcode Op)
 
static Opcode getOverloadedOpcode (OverloadedOperatorKind OO, bool Postfix)
 Retrieve the unary opcode that corresponds to the given overloaded operator. More...
 
static OverloadedOperatorKind getOverloadedOperator (Opcode Opc)
 Retrieve the overloaded operator kind that corresponds to the given unary opcode. More...
 
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)
 

Additional Inherited Members

- 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...
 

Detailed Description

UnaryOperator - This represents the unary-expression's (except sizeof and alignof), the postinc/postdec operators from postfix-expression, and various extensions.

Notes on various nodes:

Real/Imag - These return the real/imag part of a complex operand. If applied to a non-complex value, the former returns its operand and the later returns zero in the type of the operand.

Definition at line 1672 of file Expr.h.

Member Typedef Documentation

Definition at line 1674 of file Expr.h.

Constructor & Destructor Documentation

clang::UnaryOperator::UnaryOperator ( Expr input,
Opcode  opc,
QualType  type,
ExprValueKind  VK,
ExprObjectKind  OK,
SourceLocation  l 
)
inline

Definition at line 1682 of file Expr.h.

clang::UnaryOperator::UnaryOperator ( EmptyShell  Empty)
inlineexplicit

Build an empty unary operator.

Definition at line 1693 of file Expr.h.

Member Function Documentation

child_range clang::UnaryOperator::children ( )
inline

Definition at line 1768 of file Expr.h.

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

Definition at line 1763 of file Expr.h.

SourceLocation clang::UnaryOperator::getExprLoc ( ) const
inline

Definition at line 1761 of file Expr.h.

Referenced by clang::CodeGen::CodeGenFunction::EmitComplexPrePostIncDec().

SourceLocation clang::UnaryOperator::getLocEnd ( ) const
inline

Definition at line 1758 of file Expr.h.

References isPostfix().

SourceLocation clang::UnaryOperator::getLocStart ( ) const
inline

Definition at line 1755 of file Expr.h.

References isPostfix().

Opcode clang::UnaryOperator::getOpcode ( ) const
inline
StringRef UnaryOperator::getOpcodeStr ( Opcode  Op)
static

getOpcodeStr - Turn an Opcode enum value into the punctuation char it corresponds to, e.g. "sizeof" or "[pre]++"

getOpcodeStr - Turn an Opcode enum value into the punctuation char it corresponds to, e.g. "sizeof" or "[pre]++".

Definition at line 1062 of file Expr.cpp.

References clang::UO_AddrOf, clang::UO_Deref, clang::UO_Extension, clang::UO_Imag, clang::UO_LNot, clang::UO_Minus, clang::UO_Not, clang::UO_Plus, clang::UO_PostDec, clang::UO_PostInc, clang::UO_PreDec, clang::UO_PreInc, and clang::UO_Real.

Referenced by clang::Sema::CreateOverloadedUnaryOp().

SourceLocation clang::UnaryOperator::getOperatorLoc ( ) const
inline

getOperatorLoc - Return the location of the operator.

Definition at line 1703 of file Expr.h.

Referenced by diagnoseLogicalNotOnLHSofComparison(), GetUnreachableLoc(), clang::Expr::isUnusedResultAWarning(), and clang::ASTNodeImporter::VisitUnaryOperator().

UnaryOperatorKind UnaryOperator::getOverloadedOpcode ( OverloadedOperatorKind  OO,
bool  Postfix 
)
static

Retrieve the unary opcode that corresponds to the given overloaded operator.

Definition at line 1082 of file Expr.cpp.

References clang::UO_AddrOf, clang::UO_Deref, clang::UO_LNot, clang::UO_Minus, clang::UO_Not, clang::UO_Plus, clang::UO_PostDec, clang::UO_PostInc, clang::UO_PreDec, and clang::UO_PreInc.

Referenced by clang::TreeTransform< Derived >::RebuildCXXOperatorCallExpr().

OverloadedOperatorKind UnaryOperator::getOverloadedOperator ( Opcode  Opc)
static

Retrieve the overloaded operator kind that corresponds to the given unary opcode.

Definition at line 1096 of file Expr.cpp.

References clang::OO_None, clang::UO_AddrOf, clang::UO_Deref, clang::UO_LNot, clang::UO_Minus, clang::UO_Not, clang::UO_Plus, clang::UO_PostDec, clang::UO_PostInc, clang::UO_PreDec, and clang::UO_PreInc.

Referenced by clang::Sema::BuildUnaryOp(), and clang::Sema::CreateOverloadedUnaryOp().

Expr* clang::UnaryOperator::getSubExpr ( ) const
inline
static bool clang::UnaryOperator::isArithmeticOp ( Opcode  Op)
inlinestatic

Definition at line 1738 of file Expr.h.

References clang::UO_LNot, and clang::UO_Plus.

bool clang::UnaryOperator::isArithmeticOp ( ) const
inline

Definition at line 1741 of file Expr.h.

References getOpcode(), and isArithmeticOp().

Referenced by isArithmeticOp().

static bool clang::UnaryOperator::isDecrementOp ( Opcode  Op)
inlinestatic

Definition at line 1726 of file Expr.h.

References clang::UO_PostDec, and clang::UO_PreDec.

bool clang::UnaryOperator::isDecrementOp ( ) const
inline

Definition at line 1729 of file Expr.h.

References getOpcode().

static bool clang::UnaryOperator::isIncrementDecrementOp ( Opcode  Op)
inlinestatic

Definition at line 1733 of file Expr.h.

References clang::UO_PreDec.

Referenced by clang::ento::ExprEngine::VisitIncrementDecrementOperator().

bool clang::UnaryOperator::isIncrementDecrementOp ( ) const
inline

Definition at line 1734 of file Expr.h.

References getOpcode().

Referenced by clang::Sema::BuildUnaryOp(), and clang::Sema::checkPseudoObjectIncDec().

static bool clang::UnaryOperator::isIncrementOp ( Opcode  Op)
inlinestatic
bool clang::UnaryOperator::isIncrementOp ( ) const
inline

Definition at line 1722 of file Expr.h.

References getOpcode().

static bool clang::UnaryOperator::isPostfix ( Opcode  Op)
inlinestatic

isPostfix - Return true if this is a postfix operation, like x++.

Definition at line 1707 of file Expr.h.

References clang::UO_PostDec, and clang::UO_PostInc.

Referenced by clang::ento::ExprEngine::VisitIncrementDecrementOperator().

bool clang::UnaryOperator::isPostfix ( ) const
inline

Definition at line 1717 of file Expr.h.

References getOpcode(), and isPostfix().

Referenced by getLocEnd(), getLocStart(), and isPostfix().

static bool clang::UnaryOperator::isPrefix ( Opcode  Op)
inlinestatic

isPrefix - Return true if this is a prefix operation, like –x.

Definition at line 1712 of file Expr.h.

References clang::UO_PreDec, and clang::UO_PreInc.

bool clang::UnaryOperator::isPrefix ( ) const
inline

Definition at line 1716 of file Expr.h.

References getOpcode(), and isPrefix().

Referenced by isPrefix().

void clang::UnaryOperator::setOpcode ( Opcode  O)
inline

Definition at line 1697 of file Expr.h.

void clang::UnaryOperator::setOperatorLoc ( SourceLocation  L)
inline

Definition at line 1704 of file Expr.h.

void clang::UnaryOperator::setSubExpr ( Expr E)
inline

Definition at line 1700 of file Expr.h.


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