clang 10.0.0git

Public Member Functions | Static Public Member Functions | List of all members
clang::DependentTypeOfExprType Class Reference

Internal representation of canonical, dependent `typeof(expr)` types. More...

`#include "clang/AST/Type.h"`

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

## Public Member Functions
| DependentTypeOfExprType (const ASTContext &Context, Expr *E)
void | Profile (llvm::FoldingSetNodeID &ID)
Public Member Functions inherited from clang::TypeOfExprType
Expr * | getUnderlyingExpr () const
QualType | desugar () const
| Remove a single level of sugar. More...
bool | isSugared () const
| Returns whether this type directly provides sugar. More...
Public Member Functions inherited from clang::Type
| Type (const Type &)=delete
| Type (Type &&)=delete
Type & | operator= (const Type &)=delete
Type & | operator= (Type &&)=delete
TypeClass | getTypeClass () const
bool | isFromAST () const
| Whether this type comes from an AST file. More...
bool | containsUnexpandedParameterPack () const
| Whether this type is or contains an unexpanded parameter pack, used to support C++0x variadic templates. More...
bool | isCanonicalUnqualified () const
| Determines if this type would be canonical if it had no further qualification. More...
QualType | getLocallyUnqualifiedSingleStepDesugaredType () const
| Pull a single level of sugar off of this locally-unqualified type. More...
bool | isIncompleteType (NamedDecl **Def=nullptr) const
| Types are partitioned into 3 broad categories (C99 6.2.5p1): object types, function types, and incomplete types. More...
bool | isIncompleteOrObjectType () const
| Return true if this is an incomplete or object type, in other words, not a function type. More...
bool | isObjectType () const
| Determine whether this type is an object type. More...
bool | isLiteralType (const ASTContext &Ctx) const
| Return true if this is a literal type (C++11 [basic.types]p10) More...
bool | isStandardLayoutType () const
| Test if this type is a standard-layout type. More...
bool | isBuiltinType () const
| Helper methods to distinguish type categories. More...
bool | isSpecificBuiltinType (unsigned K) const
| Test for a particular builtin type. More...
bool | isPlaceholderType () const
| Test for a type which does not represent an actual type-system type but is instead used as a placeholder for various convenient purposes within Clang. More...
const BuiltinType * | getAsPlaceholderType () const
bool | isSpecificPlaceholderType (unsigned K) const
| Test for a specific placeholder type. More...
bool | isNonOverloadPlaceholderType () const
| Test for a placeholder type other than Overload; see BuiltinType::isNonOverloadPlaceholderType. More...
bool | isIntegerType () const
| isIntegerType() does not include complex integers (a GCC extension). More...
bool | isEnumeralType () const
bool | isScopedEnumeralType () const
| Determine whether this type is a scoped enumeration type. More...
bool | isBooleanType () const
bool | isCharType () const
bool | isWideCharType () const
bool | isChar8Type () const
bool | isChar16Type () const
bool | isChar32Type () const
bool | isAnyCharacterType () const
| Determine whether this type is any of the built-in character types. More...
bool | isIntegralType (const ASTContext &Ctx) const
| Determine whether this type is an integral type. More...
bool | isIntegralOrEnumerationType () const
| Determine whether this type is an integral or enumeration type. More...
bool | isIntegralOrUnscopedEnumerationType () const
| Determine whether this type is an integral or unscoped enumeration type. More...
bool | isUnscopedEnumerationType () const
bool | isRealFloatingType () const
| Floating point categories. More...
bool | isComplexType () const
| isComplexType() does not include complex integers (a GCC extension). More...
bool | isAnyComplexType () const
bool | isFloatingType () const
bool | isHalfType () const
bool | isFloat16Type () const
bool | isFloat128Type () const
bool | isRealType () const
bool | isArithmeticType () const
bool | isVoidType () const
bool | isScalarType () const
bool | isAggregateType () const
| Determines whether the type is a C++ aggregate type or C aggregate or union type. More...
bool | isFundamentalType () const
| Tests whether the type is categorized as a fundamental type. More...
bool | isCompoundType () const
| Tests whether the type is categorized as a compound type. More...
bool | isFunctionType () const
bool | isFunctionNoProtoType () const
bool | isFunctionProtoType () const
bool | isPointerType () const
bool | isAnyPointerType () const
bool | isBlockPointerType () const
bool | isVoidPointerType () const
bool | isReferenceType () const
bool | isLValueReferenceType () const
bool | isRValueReferenceType () const
bool | isObjectPointerType () const
bool | isFunctionPointerType () const
bool | isFunctionReferenceType () const
bool | isMemberPointerType () const
bool | isMemberFunctionPointerType () const
bool | isMemberDataPointerType () const
bool | isArrayType () const
bool | isConstantArrayType () const
bool | isIncompleteArrayType () const
bool | isVariableArrayType () const
bool | isDependentSizedArrayType () const
bool | isRecordType () const
bool | isClassType () const
bool | isStructureType () const
bool | isObjCBoxableRecordType () const
bool | isInterfaceType () const
bool | isStructureOrClassType () const
bool | isUnionType () const
bool | isComplexIntegerType () const
bool | isVectorType () const
bool | isExtVectorType () const
bool | isDependentAddressSpaceType () const
bool | isObjCObjectPointerType () const
bool | isObjCRetainableType () const
bool | isObjCLifetimeType () const
| Returns true if objects of this type have lifetime semantics under ARC. More...
bool | isObjCIndirectLifetimeType () const
bool | isObjCNSObjectType () const
bool | isObjCIndependentClassType () const
bool | isObjCObjectType () const
bool | isObjCQualifiedInterfaceType () const
bool | isObjCQualifiedIdType () const
bool | isObjCQualifiedClassType () const
bool | isObjCObjectOrInterfaceType () const
bool | isObjCIdType () const
bool | isDecltypeType () const
bool | isObjCInertUnsafeUnretainedType () const
| Was this type written with the special inert-in-ARC __unsafe_unretained qualifier? More...
bool | isObjCIdOrObjectKindOfType (const ASTContext &ctx, const ObjCObjectType *&bound) const
| Whether the type is Objective-C 'id' or a __kindof type of an object type, e.g., __kindof NSView * or __kindof id <NSCopying>. More...
bool | isObjCClassType () const
bool | isObjCClassOrClassKindOfType () const
| Whether the type is Objective-C 'Class' or a __kindof type of an Class type, e.g., __kindof Class <NSCopying>. More...
bool | isBlockCompatibleObjCPointerType (ASTContext &ctx) const
bool | isObjCSelType () const
bool | isObjCBuiltinType () const
bool | isObjCARCBridgableType () const
| Determine whether the given type T is a "bridgable" Objective-C type, which is either an Objective-C object pointer type or an. More...
bool | isCARCBridgableType () const
| Determine whether the given type T is a "bridgeable" C type. More...
bool | isTemplateTypeParmType () const
bool | isNullPtrType () const
bool | isNothrowT () const
bool | isAlignValT () const
bool | isStdByteType () const
bool | isAtomicType () const
bool | isUndeducedAutoType () const
bool | isImageType () const
bool | isSamplerT () const
bool | isEventT () const
bool | isClkEventT () const
bool | isQueueT () const
bool | isReserveIDT () const
bool | isOCLIntelSubgroupAVCType () const
bool | isOCLExtOpaqueType () const
bool | isPipeType () const
bool | isOpenCLSpecificType () const
bool | isObjCARCImplicitlyUnretainedType () const
| Determines if this type, which must satisfy isObjCLifetimeType(), is implicitly __unsafe_unretained rather than implicitly __strong. More...
Qualifiers::ObjCLifetime | getObjCARCImplicitLifetime () const
| Return the implicit lifetime for this type, which must not be dependent. More...
ScalarTypeKind | getScalarTypeKind () const
| Given that this is a scalar type, classify it. More...
bool | isDependentType () const
| Whether this type is a dependent type, meaning that its definition somehow depends on a template parameter (C++ [temp.dep.type]). More...
bool | isInstantiationDependentType () const
| Determine whether this type is an instantiation-dependent type, meaning that the type involves a template parameter (even if the definition does not actually depend on the type substituted for that template parameter). More...
bool | isUndeducedType () const
| Determine whether this type is an undeduced type, meaning that it somehow involves a C++11 'auto' type or similar which has not yet been deduced. More...
bool | isVariablyModifiedType () const
| Whether this type is a variably-modified type (C99 6.7.5). More...
bool | hasSizedVLAType () const
| Whether this type involves a variable-length array type with a definite size. More...
bool | hasUnnamedOrLocalType () const
| Whether this type is or contains a local or unnamed type. More...
bool | isOverloadableType () const
| Determines whether this is a type for which one can define an overloaded operator. More...
bool | isElaboratedTypeSpecifier () const
| Determine wither this type is a C++ elaborated-type-specifier. More...
bool | canDecayToPointerType () const
| Determines whether this type can decay to a pointer type. More...
bool | hasPointerRepresentation () const
| Whether this type is represented natively as a pointer. More...
bool | hasObjCPointerRepresentation () const
| Whether this type can represent an objective pointer type for the purpose of GC'ability. More...
bool | hasIntegerRepresentation () const
| Determine whether this type has an integer representation of some sort, e.g., it is an integer type or a vector. More...
bool | hasSignedIntegerRepresentation () const
| Determine whether this type has an signed integer representation of some sort, e.g., it is an signed integer type or a vector. More...
bool | hasUnsignedIntegerRepresentation () const
| Determine whether this type has an unsigned integer representation of some sort, e.g., it is an unsigned integer type or a vector. More...
bool | hasFloatingRepresentation () const
| Determine whether this type has a floating-point representation of some sort, e.g., it is a floating-point type or a vector thereof. More...
const RecordType * | getAsStructureType () const
const RecordType * | getAsUnionType () const
| NOTE: getAs*ArrayType are methods on ASTContext. More...
const ComplexType * | getAsComplexIntegerType () const
const ObjCObjectType * | getAsObjCInterfaceType () const
const ObjCObjectPointerType * | getAsObjCInterfacePointerType () const
const ObjCObjectPointerType * | getAsObjCQualifiedIdType () const
const ObjCObjectPointerType * | getAsObjCQualifiedClassType () const
const ObjCObjectType * | getAsObjCQualifiedInterfaceType () const
CXXRecordDecl * | getAsCXXRecordDecl () const
| Retrieves the CXXRecordDecl that this type refers to, either because the type is a RecordType or because it is the injected-class-name type of a class template or class template partial specialization. More...
RecordDecl * | getAsRecordDecl () const
| Retrieves the RecordDecl this type refers to. More...
TagDecl * | getAsTagDecl () const
| Retrieves the TagDecl that this type refers to, either because the type is a TagType or because it is the injected-class-name type of a class template or class template partial specialization. More...
const CXXRecordDecl * | getPointeeCXXRecordDecl () const
| If this is a pointer or reference to a RecordType, return the CXXRecordDecl that the type refers to. More...
DeducedType * | getContainedDeducedType () const
| Get the DeducedType whose type will be deduced for a variable with an initializer of this type. More...
AutoType * | getContainedAutoType () const
| Get the AutoType whose type will be deduced for a variable with an initializer of this type. More...
bool | hasAutoForTrailingReturnType () const
| Determine whether this type was written with a leading 'auto' corresponding to a trailing return type (possibly for a nested function type within a pointer to function type or similar). More...
template<typename T >
const T * | getAs () const
| Member-template getAs<specific type>'. More...
template<typename T >
const T * | getAsAdjusted () const
| Member-template getAsAdjusted<specific type>. More...
const ArrayType * | getAsArrayTypeUnsafe () const
| A variant of getAs<> for array types which silently discards qualifiers from the outermost type. More...
template<typename T >
const T * | castAs () const
| Member-template castAs<specific type>. More...
const ArrayType * | castAsArrayTypeUnsafe () const
| A variant of castAs<> for array type which silently discards qualifiers from the outermost type. More...
bool | hasAttr (attr::Kind AK) const
| Determine whether this type had the specified attribute applied to it (looking through top-level type sugar). More...
const Type * | getBaseElementTypeUnsafe () const
| Get the base element type of this type, potentially discarding type qualifiers. More...
const Type * | getArrayElementTypeNoTypeQual () const
| If this is an array type, return the element type of the array, potentially with type qualifiers missing. More...
const Type * | getPointeeOrArrayElementType () const
| If this is a pointer type, return the pointee type. More...
QualType | getPointeeType () const
| If this is a pointer, ObjC object pointer, or block pointer, this returns the respective pointee. More...
const Type * | getUnqualifiedDesugaredType () const
| Return the specified type with any "sugar" removed from the type, removing any typedefs, typeofs, etc., as well as any qualifiers. More...
bool | isPromotableIntegerType () const
| More type predicates useful for type checking/promotion. More...
bool | isSignedIntegerType () const
| Return true if this is an integer type that is signed, according to C99 6.2.5p4 [char, signed char, short, int, long..], or an enum decl which has a signed representation. More...
bool | isUnsignedIntegerType () const
| Return true if this is an integer type that is unsigned, according to C99 6.2.5p6 [which returns true for _Bool], or an enum decl which has an unsigned representation. More...
bool | isSignedIntegerOrEnumerationType () const
| Determines whether this is an integer type that is signed or an enumeration types whose underlying type is a signed integer type. More...
bool | isUnsignedIntegerOrEnumerationType () const
| Determines whether this is an integer type that is unsigned or an enumeration types whose underlying type is a unsigned integer type. More...
bool | isFixedPointType () const
| Return true if this is a fixed point type according to ISO/IEC JTC1 SC22 WG14 N1169. More...
bool | isFixedPointOrIntegerType () const
| Return true if this is a fixed point or integer type. More...
bool | isSaturatedFixedPointType () const
| Return true if this is a saturated fixed point type according to ISO/IEC JTC1 SC22 WG14 N1169. More...
bool | isUnsaturatedFixedPointType () const
| Return true if this is a saturated fixed point type according to ISO/IEC JTC1 SC22 WG14 N1169. More...
bool | isSignedFixedPointType () const
| Return true if this is a fixed point type that is signed according to ISO/IEC JTC1 SC22 WG14 N1169. More...
bool | isUnsignedFixedPointType () const
| Return true if this is a fixed point type that is unsigned according to ISO/IEC JTC1 SC22 WG14 N1169. More...
bool | isConstantSizeType () const
| Return true if this is not a variable sized type, according to the rules of C99 6.7.5p3. More...
bool | isSpecifierType () const
| Returns true if this type can be represented by some set of type specifiers. More...
Linkage | getLinkage () const
| Determine the linkage of this type. More...
Visibility | getVisibility () const
| Determine the visibility of this type. More...
bool | isVisibilityExplicit () const
| Return true if the visibility was explicitly set is the code. More...
LinkageInfo | getLinkageAndVisibility () const
| Determine the linkage and visibility of this type. More...
bool | isLinkageValid () const
| True if the computed linkage is valid. More...
Optional< NullabilityKind > | getNullability (const ASTContext &context) const
| Determine the nullability of the given type. More...
bool | canHaveNullability (bool ResultIfUnknown=true) const
| Determine whether the given type can have a nullability specifier applied to it, i.e., if it is any kind of pointer type. More...
Optional< ArrayRef< QualType > > | getObjCSubstitutions (const DeclContext *dc) const
| Retrieve the set of substitutions required when accessing a member of the Objective-C receiver type that is declared in the given context. More...
bool | acceptsObjCTypeParams () const
| Determines if this is an ObjC interface type that may accept type parameters. More...
const char * | getTypeClassName () const
QualType | getCanonicalTypeInternal () const
CanQualType | getCanonicalTypeUnqualified () const
void | dump () const
void | dump (llvm::raw_ostream &OS) const
template<>
const TypedefType * | getAs () const
| This will check for a TypedefType by removing any existing sugar until it reaches a TypedefType or a non-sugared type. More...
template<>
const TemplateSpecializationType * | getAs () const
| This will check for a TemplateSpecializationType by removing any existing sugar until it reaches a TemplateSpecializationType or a non-sugared type. More...
template<>
const AttributedType * | getAs () const
| This will check for an AttributedType by removing any existing sugar until it reaches an AttributedType or a non-sugared type. More...

## Static Public Member Functions
static void | Profile (llvm::FoldingSetNodeID &ID, const ASTContext &Context, Expr *E)
Static Public Member Functions inherited from clang::TypeOfExprType
static bool | classof (const Type *T)

## Additional Inherited Members
Public Types inherited from clang::Type
enum | TypeClass
enum | ScalarTypeKind { STK_CPointer, STK_BlockPointer, STK_ObjCObjectPointer, STK_MemberPointer, STK_Bool, STK_Integral, STK_Floating, STK_IntegralComplex, STK_FloatingComplex, STK_FixedPoint }
Protected Types inherited from clang::Type
enum | { NumTypeWithKeywordBits = 8 }
Protected Member Functions inherited from clang::TypeOfExprType
| TypeOfExprType (Expr *E, QualType can=QualType())
Protected Member Functions inherited from clang::Type
| Type (TypeClass tc, QualType canon, bool Dependent, bool InstantiationDependent, bool VariablyModified, bool ContainsUnexpandedParameterPack)
Type * | this_ ()
void | setDependent (bool D=true)
void | setInstantiationDependent (bool D=true)
void | setVariablyModified (bool VM=true)
void | setContainsUnexpandedParameterPack (bool PP=true)
Protected Attributes inherited from clang::Type
union {
TypeBitfields TypeBits
ArrayTypeBitfields ArrayTypeBits
ConstantArrayTypeBitfields ConstantArrayTypeBits
AttributedTypeBitfields AttributedTypeBits
AutoTypeBitfields AutoTypeBits
BuiltinTypeBitfields BuiltinTypeBits
FunctionTypeBitfields FunctionTypeBits
ObjCObjectTypeBitfields ObjCObjectTypeBits
ReferenceTypeBitfields ReferenceTypeBits
TypeWithKeywordBitfields TypeWithKeywordBits
ElaboratedTypeBitfields ElaboratedTypeBits
VectorTypeBitfields VectorTypeBits
SubstTemplateTypeParmPackTypeBitfields SubstTemplateTypeParmPackTypeBits
TemplateSpecializationTypeBitfields TemplateSpecializationTypeBits
DependentTemplateSpecializationTypeBitfields DependentTemplateSpecializationTypeBits
PackExpansionTypeBitfields PackExpansionTypeBits
}; |

## Detailed Description

Internal representation of canonical, dependent `typeof(expr)` types.

This class is used internally by the ASTContext to manage canonical, dependent types, only. Clients will only see instances of this class via TypeOfExprType nodes.

Definition at line 4326 of file Type.h.

## Constructor & Destructor Documentation

## ◆ DependentTypeOfExprType()

clang::DependentTypeOfExprType::DependentTypeOfExprType | ( | const ASTContext & | Context,
|  | Expr * | E
| ) |  |
| inline

Definition at line 4331 of file Type.h.

## Member Function Documentation

## ◆ Profile() [1/2]

void clang::DependentTypeOfExprType::Profile | ( | llvm::FoldingSetNodeID & | ID | ) |
| inline

Definition at line 4334 of file Type.h.

Referenced by clang::ASTContext::getTypeOfExprType().

## ◆ Profile() [2/2]

void DependentTypeOfExprType::Profile | ( | llvm::FoldingSetNodeID & | ID,
|  | const ASTContext & | Context,
|  | Expr * | E
| ) |  |
| static

Definition at line 3233 of file Type.cpp.

References clang::Stmt::Profile().

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

- include/clang/AST/Type.h
- lib/AST/Type.cpp