clang API Documentation

Classes | Public Types | Public Member Functions
clang::APValue Class Reference

#include <APValue.h>

Collaboration diagram for clang::APValue:
Collaboration graph
[legend]

List of all members.

Classes

struct  AddrLabelDiffData
struct  Arr
struct  ComplexAPFloat
struct  ComplexAPSInt
struct  LV
union  LValuePathEntry
struct  MemberPointerData
struct  NoLValuePath
struct  StructData
struct  UninitArray
struct  UninitStruct
struct  UnionData
struct  Vec

Public Types

enum  ValueKind {
  Uninitialized, Int, Float, ComplexInt,
  ComplexFloat, LValue, Vector, Array,
  Struct, Union, MemberPointer, AddrLabelDiff
}
typedef llvm::PointerUnion
< const ValueDecl *, const
Expr * > 
LValueBase
typedef llvm::PointerIntPair
< const Decl *, 1, bool > 
BaseOrMemberType

Public Member Functions

 APValue ()
 APValue (const APSInt &I)
 APValue (const APFloat &F)
 APValue (const APValue *E, unsigned N)
 APValue (const APSInt &R, const APSInt &I)
 APValue (const APFloat &R, const APFloat &I)
 APValue (const APValue &RHS)
 APValue (LValueBase B, const CharUnits &O, NoLValuePath N, unsigned CallIndex)
 APValue (LValueBase B, const CharUnits &O, ArrayRef< LValuePathEntry > Path, bool OnePastTheEnd, unsigned CallIndex)
 APValue (UninitArray, unsigned InitElts, unsigned Size)
 APValue (UninitStruct, unsigned B, unsigned M)
 APValue (const FieldDecl *D, const APValue &V=APValue())
 APValue (const ValueDecl *Member, bool IsDerivedMember, ArrayRef< const CXXRecordDecl * > Path)
 APValue (const AddrLabelExpr *LHSExpr, const AddrLabelExpr *RHSExpr)
 ~APValue ()
void swap (APValue &RHS)
 Swaps the contents of this and the given APValue.
ValueKind getKind () const
bool isUninit () const
bool isInt () const
bool isFloat () const
bool isComplexInt () const
bool isComplexFloat () const
bool isLValue () const
bool isVector () const
bool isArray () const
bool isStruct () const
bool isUnion () const
bool isMemberPointer () const
bool isAddrLabelDiff () const
void dump () const
void dump (raw_ostream &OS) const
void printPretty (raw_ostream &OS, ASTContext &Ctx, QualType Ty) const
std::string getAsString (ASTContext &Ctx, QualType Ty) const
APSInt & getInt ()
const APSInt & getInt () const
APFloat & getFloat ()
const APFloat & getFloat () const
APSInt & getComplexIntReal ()
const APSInt & getComplexIntReal () const
APSInt & getComplexIntImag ()
const APSInt & getComplexIntImag () const
APFloat & getComplexFloatReal ()
const APFloat & getComplexFloatReal () const
APFloat & getComplexFloatImag ()
const APFloat & getComplexFloatImag () const
const LValueBase getLValueBase () const
CharUnitsgetLValueOffset ()
const CharUnitsgetLValueOffset () const
bool isLValueOnePastTheEnd () const
bool hasLValuePath () const
ArrayRef< LValuePathEntrygetLValuePath () const
unsigned getLValueCallIndex () const
APValuegetVectorElt (unsigned I)
const APValuegetVectorElt (unsigned I) const
unsigned getVectorLength () const
APValuegetArrayInitializedElt (unsigned I)
const APValuegetArrayInitializedElt (unsigned I) const
bool hasArrayFiller () const
APValuegetArrayFiller ()
const APValuegetArrayFiller () const
unsigned getArrayInitializedElts () const
unsigned getArraySize () const
unsigned getStructNumBases () const
unsigned getStructNumFields () const
APValuegetStructBase (unsigned i)
APValuegetStructField (unsigned i)
const APValuegetStructBase (unsigned i) const
const APValuegetStructField (unsigned i) const
const FieldDeclgetUnionField () const
APValuegetUnionValue ()
const APValuegetUnionValue () const
const ValueDeclgetMemberPointerDecl () const
bool isMemberPointerToDerivedMember () const
ArrayRef< const CXXRecordDecl * > getMemberPointerPath () const
const AddrLabelExprgetAddrLabelDiffLHS () const
const AddrLabelExprgetAddrLabelDiffRHS () const
void setInt (const APSInt &I)
void setFloat (const APFloat &F)
void setVector (const APValue *E, unsigned N)
void setComplexInt (const APSInt &R, const APSInt &I)
void setComplexFloat (const APFloat &R, const APFloat &I)
void setLValue (LValueBase B, const CharUnits &O, NoLValuePath, unsigned CallIndex)
void setLValue (LValueBase B, const CharUnits &O, ArrayRef< LValuePathEntry > Path, bool OnePastTheEnd, unsigned CallIndex)
void setUnion (const FieldDecl *Field, const APValue &Value)
void setAddrLabelDiff (const AddrLabelExpr *LHSExpr, const AddrLabelExpr *RHSExpr)
APValueoperator= (APValue RHS)
 Assign by swapping from a copy of the RHS.

Detailed Description

APValue - This class implements a discriminated union of [uninitialized] [APSInt] [APFloat], [Complex APSInt] [Complex APFloat], [Expr + Offset], [Vector: N * APValue], [Array: N * APValue]

Definition at line 38 of file APValue.h.


Member Typedef Documentation

typedef llvm::PointerIntPair<const Decl *, 1, bool> clang::APValue::BaseOrMemberType

Definition at line 57 of file APValue.h.

typedef llvm::PointerUnion<const ValueDecl *, const Expr *> clang::APValue::LValueBase

Definition at line 56 of file APValue.h.


Member Enumeration Documentation

Enumerator:
Uninitialized 
Int 
Float 
ComplexInt 
ComplexFloat 
LValue 
Vector 
Array 
Struct 
Union 
MemberPointer 
AddrLabelDiff 

Definition at line 42 of file APValue.h.


Constructor & Destructor Documentation

clang::APValue::APValue ( ) [inline]

Definition at line 122 of file APValue.h.

clang::APValue::APValue ( const APSInt &  I) [inline, explicit]

Definition at line 123 of file APValue.h.

References setInt().

clang::APValue::APValue ( const APFloat &  F) [inline, explicit]

Definition at line 126 of file APValue.h.

References setFloat().

clang::APValue::APValue ( const APValue E,
unsigned  N 
) [inline, explicit]

Definition at line 129 of file APValue.h.

References setVector().

clang::APValue::APValue ( const APSInt &  R,
const APSInt &  I 
) [inline]

Definition at line 132 of file APValue.h.

References setComplexInt().

clang::APValue::APValue ( const APFloat &  R,
const APFloat &  I 
) [inline]

Definition at line 135 of file APValue.h.

References setComplexFloat().

APValue::APValue ( const APValue RHS)
clang::APValue::APValue ( LValueBase  B,
const CharUnits O,
NoLValuePath  N,
unsigned  CallIndex 
) [inline]

Definition at line 139 of file APValue.h.

References setLValue().

clang::APValue::APValue ( LValueBase  B,
const CharUnits O,
ArrayRef< LValuePathEntry Path,
bool  OnePastTheEnd,
unsigned  CallIndex 
) [inline]

Definition at line 143 of file APValue.h.

References setLValue().

clang::APValue::APValue ( UninitArray  ,
unsigned  InitElts,
unsigned  Size 
) [inline]

Definition at line 148 of file APValue.h.

clang::APValue::APValue ( UninitStruct  ,
unsigned  B,
unsigned  M 
) [inline]

Definition at line 151 of file APValue.h.

clang::APValue::APValue ( const FieldDecl D,
const APValue V = APValue() 
) [inline, explicit]

Definition at line 154 of file APValue.h.

References setUnion().

clang::APValue::APValue ( const ValueDecl Member,
bool  IsDerivedMember,
ArrayRef< const CXXRecordDecl * >  Path 
) [inline]

Definition at line 158 of file APValue.h.

clang::APValue::APValue ( const AddrLabelExpr LHSExpr,
const AddrLabelExpr RHSExpr 
) [inline]

Definition at line 162 of file APValue.h.

References setAddrLabelDiff().

clang::APValue::~APValue ( ) [inline]

Definition at line 167 of file APValue.h.


Member Function Documentation

void APValue::dump ( ) const

Definition at line 223 of file APValue.cpp.

Referenced by dump().

void APValue::dump ( raw_ostream &  OS) const
const AddrLabelExpr* clang::APValue::getAddrLabelDiffLHS ( ) const [inline]

Definition at line 332 of file APValue.h.

References Data, and isAddrLabelDiff().

Referenced by APValue(), clang::CodeGen::CodeGenModule::EmitConstantValue(), and printPretty().

const AddrLabelExpr* clang::APValue::getAddrLabelDiffRHS ( ) const [inline]

Definition at line 336 of file APValue.h.

References Data, and isAddrLabelDiff().

Referenced by APValue(), clang::CodeGen::CodeGenModule::EmitConstantValue(), and printPretty().

APValue& clang::APValue::getArrayFiller ( ) [inline]
const APValue& clang::APValue::getArrayFiller ( ) const [inline]

Definition at line 281 of file APValue.h.

References getArrayFiller().

APValue& clang::APValue::getArrayInitializedElt ( unsigned  I) [inline]
const APValue& clang::APValue::getArrayInitializedElt ( unsigned  I) const [inline]

Definition at line 270 of file APValue.h.

References getArrayInitializedElt().

unsigned clang::APValue::getArrayInitializedElts ( ) const [inline]
unsigned clang::APValue::getArraySize ( ) const [inline]

Definition at line 288 of file APValue.h.

References Data, and isArray().

Referenced by APValue(), dump(), clang::CodeGen::CodeGenModule::EmitConstantValue(), and hasArrayFiller().

std::string APValue::getAsString ( ASTContext Ctx,
QualType  Ty 
) const
APFloat& clang::APValue::getComplexFloatImag ( ) [inline]
const APFloat& clang::APValue::getComplexFloatImag ( ) const [inline]

Definition at line 238 of file APValue.h.

References getComplexFloatImag().

APFloat& clang::APValue::getComplexFloatReal ( ) [inline]
const APFloat& clang::APValue::getComplexFloatReal ( ) const [inline]

Definition at line 230 of file APValue.h.

References getComplexFloatReal().

APSInt& clang::APValue::getComplexIntImag ( ) [inline]
const APSInt& clang::APValue::getComplexIntImag ( ) const [inline]

Definition at line 222 of file APValue.h.

References getComplexIntImag().

APSInt& clang::APValue::getComplexIntReal ( ) [inline]
const APSInt& clang::APValue::getComplexIntReal ( ) const [inline]

Definition at line 214 of file APValue.h.

References getComplexIntReal().

APFloat& clang::APValue::getFloat ( ) [inline]
const APFloat& clang::APValue::getFloat ( ) const [inline]

Definition at line 206 of file APValue.h.

References getFloat().

APSInt& clang::APValue::getInt ( ) [inline]
const APSInt& clang::APValue::getInt ( ) const [inline]

Definition at line 198 of file APValue.h.

References getInt().

ValueKind clang::APValue::getKind ( ) const [inline]
const APValue::LValueBase APValue::getLValueBase ( ) const
unsigned APValue::getLValueCallIndex ( ) const

Definition at line 538 of file APValue.cpp.

References Data, and isLValue().

Referenced by APValue(), and HandleLValueToRValueConversion().

CharUnits & APValue::getLValueOffset ( )
const CharUnits& clang::APValue::getLValueOffset ( ) const [inline]

Definition at line 244 of file APValue.h.

References getLValueOffset().

ArrayRef< APValue::LValuePathEntry > APValue::getLValuePath ( ) const

Definition at line 532 of file APValue.cpp.

References Data, clang::APValue::LV::getPath(), hasLValuePath(), and isLValue().

Referenced by APValue(), ExtractSubobject(), and printPretty().

const ValueDecl * APValue::getMemberPointerDecl ( ) const
ArrayRef< const CXXRecordDecl * > APValue::getMemberPointerPath ( ) const

Definition at line 579 of file APValue.cpp.

References Data, clang::APValue::MemberPointerData::getPath(), and isMemberPointer().

Referenced by APValue().

APValue& clang::APValue::getStructBase ( unsigned  i) [inline]
const APValue& clang::APValue::getStructBase ( unsigned  i) const [inline]

Definition at line 309 of file APValue.h.

References getStructBase().

APValue& clang::APValue::getStructField ( unsigned  i) [inline]
const APValue& clang::APValue::getStructField ( unsigned  i) const [inline]

Definition at line 312 of file APValue.h.

References getStructField().

unsigned clang::APValue::getStructNumBases ( ) const [inline]

Definition at line 293 of file APValue.h.

References Data, and isStruct().

Referenced by APValue(), dump(), getStructField(), and printPretty().

unsigned clang::APValue::getStructNumFields ( ) const [inline]

Definition at line 297 of file APValue.h.

References Data, and isStruct().

Referenced by APValue(), and dump().

const FieldDecl* clang::APValue::getUnionField ( ) const [inline]

Definition at line 316 of file APValue.h.

References Data, and isUnion().

Referenced by APValue(), CheckConstantExpression(), ExtractSubobject(), HandleConstructorCall(), and printPretty().

APValue& clang::APValue::getUnionValue ( ) [inline]
const APValue& clang::APValue::getUnionValue ( ) const [inline]

Definition at line 324 of file APValue.h.

References getUnionValue().

APValue& clang::APValue::getVectorElt ( unsigned  I) [inline]
const APValue& clang::APValue::getVectorElt ( unsigned  I) const [inline]

Definition at line 257 of file APValue.h.

References getVectorElt().

unsigned clang::APValue::getVectorLength ( ) const [inline]
bool clang::APValue::hasArrayFiller ( ) const [inline]
bool APValue::hasLValuePath ( ) const

Definition at line 527 of file APValue.cpp.

References Data, and isLValue().

Referenced by APValue(), ExtractSubobject(), getLValuePath(), and printPretty().

bool clang::APValue::isAddrLabelDiff ( ) const [inline]

Definition at line 186 of file APValue.h.

References AddrLabelDiff.

Referenced by getAddrLabelDiffLHS(), and getAddrLabelDiffRHS().

bool clang::APValue::isArray ( ) const [inline]
bool clang::APValue::isComplexFloat ( ) const [inline]

Definition at line 179 of file APValue.h.

References ComplexFloat.

Referenced by ExtractSubobject(), getComplexFloatImag(), getComplexFloatReal(), and setComplexFloat().

bool clang::APValue::isComplexInt ( ) const [inline]

Definition at line 178 of file APValue.h.

References ComplexInt.

Referenced by ExtractSubobject(), getComplexIntImag(), getComplexIntReal(), and setComplexInt().

bool clang::APValue::isFloat ( ) const [inline]
bool clang::APValue::isInt ( ) const [inline]
bool clang::APValue::isLValue ( ) const [inline]
bool APValue::isLValueOnePastTheEnd ( ) const

Definition at line 517 of file APValue.cpp.

References Data, and isLValue().

Referenced by APValue(), and printPretty().

bool clang::APValue::isMemberPointer ( ) const [inline]
bool APValue::isMemberPointerToDerivedMember ( ) const

Definition at line 573 of file APValue.cpp.

References Data, and isMemberPointer().

Referenced by APValue().

bool clang::APValue::isStruct ( ) const [inline]
bool clang::APValue::isUninit ( ) const [inline]
bool clang::APValue::isUnion ( ) const [inline]

Definition at line 184 of file APValue.h.

References Union.

Referenced by CheckConstantExpression(), getUnionField(), getUnionValue(), HandleConstructorCall(), and setUnion().

bool clang::APValue::isVector ( ) const [inline]

Definition at line 181 of file APValue.h.

References Vector.

Referenced by EvalAndBitcastToAPInt(), getVectorElt(), getVectorLength(), and setVector().

APValue& clang::APValue::operator= ( APValue  RHS) [inline]

Assign by swapping from a copy of the RHS.

Definition at line 387 of file APValue.h.

References swap().

void APValue::printPretty ( raw_ostream &  OS,
ASTContext Ctx,
QualType  Ty 
) const
void clang::APValue::setAddrLabelDiff ( const AddrLabelExpr LHSExpr,
const AddrLabelExpr RHSExpr 
) [inline]

Definition at line 380 of file APValue.h.

References Data.

Referenced by APValue().

void clang::APValue::setComplexFloat ( const APFloat &  R,
const APFloat &  I 
) [inline]

Definition at line 363 of file APValue.h.

References Data, and isComplexFloat().

Referenced by APValue().

void clang::APValue::setComplexInt ( const APSInt &  R,
const APSInt &  I 
) [inline]

Definition at line 356 of file APValue.h.

References Data, and isComplexInt().

Referenced by APValue().

void clang::APValue::setFloat ( const APFloat &  F) [inline]

Definition at line 345 of file APValue.h.

References Data, and isFloat().

Referenced by APValue().

void clang::APValue::setInt ( const APSInt &  I) [inline]

Definition at line 341 of file APValue.h.

References Data, and isInt().

Referenced by APValue().

void APValue::setLValue ( LValueBase  B,
const CharUnits O,
NoLValuePath  ,
unsigned  CallIndex 
)

Definition at line 543 of file APValue.cpp.

References Data, isLValue(), and clang::APValue::LV::resizePath().

Referenced by APValue().

void APValue::setLValue ( LValueBase  B,
const CharUnits O,
ArrayRef< LValuePathEntry Path,
bool  OnePastTheEnd,
unsigned  CallIndex 
)
void clang::APValue::setUnion ( const FieldDecl Field,
const APValue Value 
) [inline]

Definition at line 375 of file APValue.h.

References Data, and isUnion().

Referenced by APValue().

void clang::APValue::setVector ( const APValue E,
unsigned  N 
) [inline]

Definition at line 349 of file APValue.h.

References Data, and isVector().

Referenced by APValue().

void APValue::swap ( APValue RHS)

Swaps the contents of this and the given APValue.

Definition at line 215 of file APValue.cpp.

References Data.

Referenced by ExtractSubobject(), and operator=().


Member Data Documentation

Definition at line 117 of file APValue.h.

char clang::APValue::Data[MaxSize]

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