clang
3.7.0
|
#include <Expr.h>
Public Member Functions | |
StringRef | getString () const |
StringRef | getBytes () const |
void | outputString (raw_ostream &OS) const |
uint32_t | getCodeUnit (size_t i) const |
unsigned | getByteLength () const |
unsigned | getLength () const |
unsigned | getCharByteWidth () const |
void | setString (const ASTContext &C, StringRef Str, StringKind Kind, bool IsPascal) |
Sets the string data to the given string data. More... | |
StringKind | getKind () const |
bool | isAscii () const |
bool | isWide () const |
bool | isUTF8 () const |
bool | isUTF16 () const |
bool | isUTF32 () const |
bool | isPascal () const |
bool | containsNonAsciiOrNull () const |
unsigned | getNumConcatenated () const |
SourceLocation | getStrTokenLoc (unsigned TokNum) const |
void | setStrTokenLoc (unsigned TokNum, SourceLocation L) |
SourceLocation | getLocationOfByte (unsigned ByteNo, const SourceManager &SM, const LangOptions &Features, const TargetInfo &Target) const |
tokloc_iterator | tokloc_begin () const |
tokloc_iterator | tokloc_end () const |
SourceLocation | getLocStart () const LLVM_READONLY |
SourceLocation | getLocEnd () const LLVM_READONLY |
child_range | children () |
![]() | |
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... | |
FieldDecl * | getSourceBitField () |
If this expression refers to a bit-field, retrieve the declaration of that bit-field. More... | |
const FieldDecl * | getSourceBitField () const |
const ObjCPropertyRefExpr * | getObjCProperty () 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... | |
Expr * | IgnoreImpCasts () LLVM_READONLY |
Expr * | IgnoreImplicit () LLVM_READONLY |
const Expr * | IgnoreImplicit () const LLVM_READONLY |
Expr * | IgnoreParens () LLVM_READONLY |
Expr * | IgnoreParenCasts () LLVM_READONLY |
Expr * | IgnoreCasts () LLVM_READONLY |
Ignore casts. Strip off any CastExprs, returning their operand. More... | |
Expr * | IgnoreParenImpCasts () LLVM_READONLY |
Expr * | IgnoreConversionOperator () LLVM_READONLY |
const Expr * | IgnoreConversionOperator () const LLVM_READONLY |
const Expr * | IgnoreParenImpCasts () const LLVM_READONLY |
Expr * | IgnoreParenLValueCasts () LLVM_READONLY |
const Expr * | IgnoreParenLValueCasts () const LLVM_READONLY |
Expr * | IgnoreParenNoopCasts (ASTContext &Ctx) LLVM_READONLY |
Expr * | ignoreParenBaseCasts () LLVM_READONLY |
Ignore parentheses and derived-to-base casts. More... | |
const Expr * | ignoreParenBaseCasts () 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 Expr * | IgnoreImpCasts () const LLVM_READONLY |
const Expr * | IgnoreParens () const LLVM_READONLY |
const Expr * | IgnoreParenCasts () const LLVM_READONLY |
const Expr * | IgnoreCasts () const LLVM_READONLY |
Strip off casts, but keep parentheses. More... | |
const Expr * | IgnoreParenNoopCasts (ASTContext &Ctx) const LLVM_READONLY |
const CXXRecordDecl * | getBestDynamicClassType () 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 Expr * | skipRValueSubobjectAdjustments (SmallVectorImpl< const Expr * > &CommaLHS, SmallVectorImpl< SubobjectAdjustment > &Adjustments) const |
Static Public Member Functions | |
static StringLiteral * | Create (const ASTContext &C, StringRef Str, StringKind Kind, bool Pascal, QualType Ty, const SourceLocation *Loc, unsigned NumStrs) |
static StringLiteral * | Create (const ASTContext &C, StringRef Str, StringKind Kind, bool Pascal, QualType Ty, SourceLocation Loc) |
Simple constructor for string literals made from one token. More... | |
static StringLiteral * | CreateEmpty (const ASTContext &C, unsigned NumStrs) |
Construct an empty string literal. More... | |
static bool | classof (const Stmt *T) |
![]() | |
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) |
Friends | |
class | ASTStmtReader |
Additional Inherited Members | |
![]() | |
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... | |
StringLiteral - This represents a string literal expression, e.g. "foo" or L"bar" (wide strings). The actual string is returned by getBytes() is NOT null-terminated, and the length of the string is determined by calling getByteLength(). The C type for a string is always a ConstantArrayType. In C++, the char type is const qualified, in C it is not.
Note that strings in C can be formed by concatenation of multiple string literal pptokens in translation phase #6. This keeps track of the locations of each of these pieces.
Strings in C can also be truncated and extended by assigning into arrays, e.g. with constructs like: char X[2] = "foobar"; In this case, getByteLength() will return 6, but the string literal will have type "char[2]".
typedef const SourceLocation* clang::StringLiteral::tokloc_iterator |
|
inline |
Definition at line 1571 of file Expr.h.
References getString(), and clang::isASCII().
Referenced by GetConstantCFStringEntry().
|
static |
This is the "fully general" constructor that allows representation of strings formed from multiple concatenated tokens.
Definition at line 832 of file Expr.cpp.
References clang::ASTContext::Allocate(), clang::ASTContext::getAsConstantArrayType(), and setString().
Referenced by clang::Sema::ActOnNumericConstant(), clang::Sema::ActOnStringLiteral(), clang::Sema::BuildPredefinedExpr(), Create(), and clang::Sema::ParseObjCStringLiteral().
|
inlinestatic |
|
static |
Construct an empty string literal.
Definition at line 857 of file Expr.cpp.
References clang::ASTContext::Allocate().
|
inline |
Definition at line 1553 of file Expr.h.
Referenced by getBytes(), and getString().
|
inline |
Allow access to clients that need the byte representation, such as ASTWriterStmt::VisitStringLiteral().
Definition at line 1529 of file Expr.h.
References getByteLength().
Referenced by isIdenticalStmt().
|
inline |
Definition at line 1555 of file Expr.h.
Referenced by expandStringLiteral(), extractStringLiteralCharacter(), and clang::CodeGen::CodeGenModule::GetConstantArrayFromStringLiteral().
|
inline |
Definition at line 1543 of file Expr.h.
Referenced by clang::Sema::ActOnStringLiteral(), expandStringLiteral(), extractStringLiteralCharacter(), clang::CodeGen::CodeGenModule::GetConstantArrayFromStringLiteral(), and outputString().
|
inline |
Definition at line 1561 of file Expr.h.
Referenced by IsStringInit(), and outputString().
|
inline |
Definition at line 1554 of file Expr.h.
Referenced by clang::Sema::ActOnStringLiteral(), diagnoseStringPlusInt(), expandStringLiteral(), clang::CodeGen::CodeGenModule::GetConstantArrayFromStringLiteral(), and outputString().
SourceLocation StringLiteral::getLocationOfByte | ( | unsigned | ByteNo, |
const SourceManager & | SM, | ||
const LangOptions & | Features, | ||
const TargetInfo & | Target | ||
) | const |
getLocationOfByte - Return a source location that points to the specified byte of this string literal.
Strings are amazingly complex. They can be formed from multiple tokens and can have escape sequences in them in addition to the usual trigraph and escaped newline business. This routine handles this complexity.
Definition at line 1006 of file Expr.cpp.
References clang::Lexer::AdvanceToTokenCharacter(), Ascii, clang::SourceManager::getBufferData(), clang::SourceManager::getDecomposedLoc(), clang::SourceManager::getLocForStartOfFile(), getNumConcatenated(), clang::StringLiteralParser::getOffsetOfStringByte(), clang::SourceManager::getSpellingLoc(), clang::StringLiteralParser::GetStringLength(), getStrTokenLoc(), and UTF8.
Referenced by clang::GCCAsmStmt::AnalyzeAsmString(), getAsmSrcLocInfo(), and clang::Sema::getLocationOfStringLiteralByte().
|
inline |
|
inline |
Definition at line 1607 of file Expr.h.
Referenced by clang::Sema::ActOnGCCAsmStmt(), clang::Sema::ActOnPragmaMSSeg(), clang::Sema::BuildObjCStringLiteral(), clang::Sema::CheckFormatString(), clang::Sema::ConversionToObjCStringLiteralCheck(), getAsmSrcLocInfo(), and clang::Sema::ParseObjCStringLiteral().
|
inline |
getNumConcatenated - Get the number of string literal tokens that were concatenated in translation phase #6 to form this string literal.
Definition at line 1581 of file Expr.h.
Referenced by getLocationOfByte().
|
inline |
Definition at line 1521 of file Expr.h.
References getByteLength().
Referenced by clang::Sema::ActOnFunctionDeclarator(), clang::Sema::ActOnGCCAsmStmt(), clang::Sema::ActOnPragmaMSInitSeg(), clang::Sema::ActOnPragmaMSSection(), clang::Sema::ActOnPragmaMSSeg(), clang::Sema::ActOnStartLinkageSpecification(), clang::Sema::ActOnVariableDeclarator(), clang::GCCAsmStmt::AnalyzeAsmString(), clang::Sema::CheckCompleteVariableDeclaration(), clang::Sema::CheckFormatString(), checkFormatStringExpr(), CheckObjCCollectionLiteralElement(), clang::Sema::checkStringLiteralArgumentAttr(), containsNonAsciiOrNull(), DiagnoseCStringFormatDirectiveInCFAPI(), DiagnoseCStringFormatDirectiveInObjCAPI(), clang::Sema::FormatStringHasSArg(), getAsmSrcLocInfo(), clang::GCCAsmStmt::getClobber(), clang::CodeGen::CodeGenModule::GetConstantArrayFromStringLiteral(), GetConstantCFStringEntry(), GetConstantStringEntry(), clang::GCCAsmStmt::getInputConstraint(), clang::GCCAsmStmt::getOutputConstraint(), clang::Sema::ParseObjCStringLiteral(), and TryEvaluateBuiltinNaN().
|
inline |
Definition at line 1583 of file Expr.h.
Referenced by clang::Sema::ActOnFunctionDeclarator(), clang::Sema::ActOnVariableDeclarator(), clang::CodeGen::CodeGenModule::GetAddrOfConstantStringFromLiteral(), and getLocationOfByte().
|
inline |
Definition at line 1564 of file Expr.h.
References Ascii.
Referenced by clang::Sema::ActOnGCCAsmStmt(), clang::Sema::ActOnStartLinkageSpecification(), clang::Sema::CheckFormatString(), clang::Sema::checkStringLiteralArgumentAttr(), clang::Sema::ConversionToObjCStringLiteralCheck(), clang::Sema::ParseObjCStringLiteral(), and SemaBuiltinAnnotation().
|
inline |
|
inline |
|
inline |
Definition at line 1566 of file Expr.h.
References UTF8.
Referenced by clang::Sema::CheckFormatString().
|
inline |
void StringLiteral::outputString | ( | raw_ostream & | OS | ) | const |
Definition at line 869 of file Expr.cpp.
References Ascii, getCodeUnit(), getKind(), getLength(), clang::isPrintable(), clang::prec::Shift, UTF16, UTF32, UTF8, and Wide.
void StringLiteral::setString | ( | const ASTContext & | C, |
StringRef | Str, | ||
StringKind | Kind, | ||
bool | IsPascal | ||
) |
Sets the string data to the given string data.
Definition at line 962 of file Expr.cpp.
References AttributeLangSupport::C, and clang::ASTContext::getTargetInfo().
Referenced by Create().
|
inline |
|
inline |
Definition at line 1604 of file Expr.h.
Referenced by clang::Sema::ParseObjCStringLiteral().
|
inline |
Definition at line 1605 of file Expr.h.
Referenced by clang::Sema::ParseObjCStringLiteral().
|
friend |