clang API Documentation

Defines | Typedefs | Functions
ExprClassification.cpp File Reference
#include "clang/AST/Expr.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/DeclCXX.h"
#include "clang/AST/DeclObjC.h"
#include "clang/AST/DeclTemplate.h"
#include "clang/AST/ExprCXX.h"
#include "clang/AST/ExprObjC.h"
#include "llvm/Support/ErrorHandling.h"
#include "clang/AST/StmtNodes.inc"
Include dependency graph for ExprClassification.cpp:

Go to the source code of this file.

Defines

#define ABSTRACT_STMT(Kind)
#define STMT(Kind, Base)   case Expr::Kind##Class:
#define EXPR(Kind, Base)

Typedefs

typedef Expr::Classification Cl

Functions

static Cl::Kinds ClassifyInternal (ASTContext &Ctx, const Expr *E)
static Cl::Kinds ClassifyDecl (ASTContext &Ctx, const Decl *D)
static Cl::Kinds ClassifyUnnamed (ASTContext &Ctx, QualType T)
static Cl::Kinds ClassifyMemberExpr (ASTContext &Ctx, const MemberExpr *E)
static Cl::Kinds ClassifyBinaryOp (ASTContext &Ctx, const BinaryOperator *E)
static Cl::Kinds ClassifyConditional (ASTContext &Ctx, const Expr *trueExpr, const Expr *falseExpr)
static Cl::ModifiableType IsModifiable (ASTContext &Ctx, const Expr *E, Cl::Kinds Kind, SourceLocation &Loc)
static Cl::Kinds ClassifyTemporary (QualType T)
 Classify an expression which creates a temporary, based on its type.
static Cl::Kinds ClassifyExprValueKind (const LangOptions &Lang, const Expr *E, ExprValueKind Kind)

Define Documentation

#define ABSTRACT_STMT (   Kind)
#define EXPR (   Kind,
  Base 
)
#define STMT (   Kind,
  Base 
)    case Expr::Kind##Class:

Typedef Documentation

Definition at line 24 of file ExprClassification.cpp.


Function Documentation

static Cl::Kinds ClassifyBinaryOp ( ASTContext Ctx,
const BinaryOperator E 
) [static]
static Cl::Kinds ClassifyConditional ( ASTContext Ctx,
const Expr trueExpr,
const Expr falseExpr 
) [static]
static Cl::Kinds ClassifyDecl ( ASTContext Ctx,
const Decl D 
) [static]

ClassifyDecl - Return the classification of an expression referencing the given declaration.

Definition at line 404 of file ExprClassification.cpp.

References clang::Expr::Classification::CL_LValue, clang::Expr::Classification::CL_MemberFunction, clang::Expr::Classification::CL_PRValue, and clang::ASTContext::getLangOpts().

Referenced by ClassifyInternal().

static Cl::Kinds ClassifyExprValueKind ( const LangOptions Lang,
const Expr E,
ExprValueKind  Kind 
) [static]
static Cl::Kinds ClassifyInternal ( ASTContext Ctx,
const Expr E 
) [static]
static Cl::Kinds ClassifyMemberExpr ( ASTContext Ctx,
const MemberExpr E 
) [static]
static Cl::Kinds ClassifyTemporary ( QualType  T) [static]
static Cl::Kinds ClassifyUnnamed ( ASTContext Ctx,
QualType  T 
) [static]

ClassifyUnnamed - Return the classification of an expression yielding an unnamed value of the given type. This applies in particular to function calls and casts.

Definition at line 431 of file ExprClassification.cpp.

References clang::Expr::Classification::CL_LValue, clang::Expr::Classification::CL_PRValue, clang::Expr::Classification::CL_XValue, ClassifyTemporary(), clang::Type::getAs(), clang::ASTContext::getLangOpts(), clang::ReferenceType::getPointeeType(), clang::Type::isFunctionType(), and clang::Type::isLValueReferenceType().

Referenced by ClassifyInternal().

static Cl::ModifiableType IsModifiable ( ASTContext Ctx,
const Expr E,
Cl::Kinds  Kind,
SourceLocation Loc 
) [static]