clang 20.0.0git
|
Represents a class type in Objective C. More...
#include "clang/AST/Type.h"
Public Member Functions | |
QualType | getBaseType () const |
Gets the base type of this object type. | |
bool | isObjCId () const |
bool | isObjCClass () const |
bool | isObjCUnqualifiedId () const |
bool | isObjCUnqualifiedClass () const |
bool | isObjCUnqualifiedIdOrClass () const |
bool | isObjCQualifiedId () const |
bool | isObjCQualifiedClass () const |
ObjCInterfaceDecl * | getInterface () const |
Gets the interface declaration for this object type, if the base type really is an interface. | |
bool | isSpecialized () const |
Determine whether this object type is "specialized", meaning that it has type arguments. | |
bool | isSpecializedAsWritten () const |
Determine whether this object type was written with type arguments. | |
bool | isUnspecialized () const |
Determine whether this object type is "unspecialized", meaning that it has no type arguments. | |
bool | isUnspecializedAsWritten () const |
Determine whether this object type is "unspecialized" as written, meaning that it has no type arguments. | |
ArrayRef< QualType > | getTypeArgs () const |
Retrieve the type arguments of this object type (semantically). | |
ArrayRef< QualType > | getTypeArgsAsWritten () const |
Retrieve the type arguments of this object type as they were written. | |
bool | isKindOfTypeAsWritten () const |
Whether this is a "__kindof" type as written. | |
bool | isKindOfType () const |
Whether this ia a "__kindof" type (semantically). | |
QualType | getSuperClassType () const |
Retrieve the type of the superclass of this object type. | |
QualType | stripObjCKindOfTypeAndQuals (const ASTContext &ctx) const |
Strip off the Objective-C "kindof" type and (with it) any protocol qualifiers. | |
bool | isSugared () const |
QualType | desugar () const |
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. | |
bool | containsUnexpandedParameterPack () const |
Whether this type is or contains an unexpanded parameter pack, used to support C++0x variadic templates. | |
bool | isCanonicalUnqualified () const |
Determines if this type would be canonical if it had no further qualification. | |
QualType | getLocallyUnqualifiedSingleStepDesugaredType () const |
Pull a single level of sugar off of this locally-unqualified type. | |
bool | isSizelessType () const |
As an extension, we classify types as one of "sized" or "sizeless"; every type is one or the other. | |
bool | isSizelessBuiltinType () const |
bool | isSizelessVectorType () const |
Returns true for all scalable vector types. | |
bool | isSVESizelessBuiltinType () const |
Returns true for SVE scalable vector types. | |
bool | isRVVSizelessBuiltinType () const |
Returns true for RVV scalable vector types. | |
bool | isWebAssemblyExternrefType () const |
Check if this is a WebAssembly Externref Type. | |
bool | isWebAssemblyTableType () const |
Returns true if this is a WebAssembly table type: either an array of reference types, or a pointer to a reference type (which can only be created by array to pointer decay). | |
bool | isSveVLSBuiltinType () const |
Determines if this is a sizeless type supported by the 'arm_sve_vector_bits' type attribute, which can be applied to a single SVE vector or predicate, excluding tuple types such as svint32x4_t. | |
QualType | getSveEltType (const ASTContext &Ctx) const |
Returns the representative type for the element of an SVE builtin type. | |
bool | isRVVVLSBuiltinType () const |
Determines if this is a sizeless type supported by the 'riscv_rvv_vector_bits' type attribute, which can be applied to a single RVV vector or mask. | |
QualType | getRVVEltType (const ASTContext &Ctx) const |
Returns the representative type for the element of an RVV builtin type. | |
QualType | getSizelessVectorEltType (const ASTContext &Ctx) const |
Returns the representative type for the element of a sizeless vector builtin type. | |
bool | isIncompleteType (NamedDecl **Def=nullptr) const |
Types are partitioned into 3 broad categories (C99 6.2.5p1): object types, function types, and incomplete types. | |
bool | isIncompleteOrObjectType () const |
Return true if this is an incomplete or object type, in other words, not a function type. | |
bool | isObjectType () const |
Determine whether this type is an object type. | |
bool | isLiteralType (const ASTContext &Ctx) const |
Return true if this is a literal type (C++11 [basic.types]p10) | |
bool | isStructuralType () const |
Determine if this type is a structural type, per C++20 [temp.param]p7. | |
bool | isStandardLayoutType () const |
Test if this type is a standard-layout type. | |
bool | isBuiltinType () const |
Helper methods to distinguish type categories. | |
bool | isSpecificBuiltinType (unsigned K) const |
Test for a particular builtin type. | |
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. | |
const BuiltinType * | getAsPlaceholderType () const |
bool | isSpecificPlaceholderType (unsigned K) const |
Test for a specific placeholder type. | |
bool | isNonOverloadPlaceholderType () const |
Test for a placeholder type other than Overload; see BuiltinType::isNonOverloadPlaceholderType. | |
bool | isIntegerType () const |
isIntegerType() does not include complex integers (a GCC extension). | |
bool | isEnumeralType () const |
bool | isScopedEnumeralType () const |
Determine whether this type is a scoped enumeration type. | |
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. | |
bool | isIntegralType (const ASTContext &Ctx) const |
Determine whether this type is an integral type. | |
bool | isIntegralOrEnumerationType () const |
Determine whether this type is an integral or enumeration type. | |
bool | isIntegralOrUnscopedEnumerationType () const |
Determine whether this type is an integral or unscoped enumeration type. | |
bool | isUnscopedEnumerationType () const |
bool | isRealFloatingType () const |
Floating point categories. | |
bool | isComplexType () const |
isComplexType() does not include complex integers (a GCC extension). | |
bool | isAnyComplexType () const |
bool | isFloatingType () const |
bool | isHalfType () const |
bool | isFloat16Type () const |
bool | isFloat32Type () const |
bool | isDoubleType () const |
bool | isBFloat16Type () const |
bool | isFloat128Type () const |
bool | isIbm128Type () 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. | |
bool | isFundamentalType () const |
Tests whether the type is categorized as a fundamental type. | |
bool | isCompoundType () const |
Tests whether the type is categorized as a compound type. | |
bool | isFunctionType () const |
bool | isFunctionNoProtoType () const |
bool | isFunctionProtoType () const |
bool | isPointerType () const |
bool | isPointerOrReferenceType () const |
bool | isSignableType () const |
bool | isAnyPointerType () const |
bool | isCountAttributedType () 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 | isArrayParameterType () const |
bool | isDependentSizedArrayType () const |
bool | isRecordType () const |
bool | isClassType () const |
bool | isStructureType () const |
bool | isStructureTypeWithFlexibleArrayMember () const |
bool | isObjCBoxableRecordType () const |
bool | isInterfaceType () const |
bool | isStructureOrClassType () const |
bool | isUnionType () const |
bool | isComplexIntegerType () const |
bool | isVectorType () const |
bool | isExtVectorType () const |
bool | isExtVectorBoolType () const |
bool | isSubscriptableVectorType () const |
bool | isMatrixType () const |
bool | isConstantMatrixType () 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. | |
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? | |
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>. | |
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>. | |
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. | |
bool | isCARCBridgableType () const |
Determine whether the given type T is a "bridgeable" C type. | |
bool | isTemplateTypeParmType () const |
bool | isNullPtrType () const |
bool | isNothrowT () const |
bool | isAlignValT () const |
bool | isStdByteType () const |
bool | isAtomicType () const |
bool | isUndeducedAutoType () const |
bool | isTypedefNameType () const |
Determines whether this type is written as a typedef-name. | |
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 | isBitIntType () const |
bool | isOpenCLSpecificType () const |
bool | isHLSLSpecificType () const |
bool | isObjCARCImplicitlyUnretainedType () const |
Determines if this type, which must satisfy isObjCLifetimeType(), is implicitly __unsafe_unretained rather than implicitly __strong. | |
bool | isCUDADeviceBuiltinSurfaceType () const |
Check if the type is the CUDA device builtin surface type. | |
bool | isCUDADeviceBuiltinTextureType () const |
Check if the type is the CUDA device builtin texture type. | |
Qualifiers::ObjCLifetime | getObjCARCImplicitLifetime () const |
Return the implicit lifetime for this type, which must not be dependent. | |
ScalarTypeKind | getScalarTypeKind () const |
Given that this is a scalar type, classify it. | |
TypeDependence | getDependence () const |
bool | containsErrors () const |
Whether this type is an error type. | |
bool | isDependentType () const |
Whether this type is a dependent type, meaning that its definition somehow depends on a template parameter (C++ [temp.dep.type]). | |
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). | |
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. | |
bool | isVariablyModifiedType () const |
Whether this type is a variably-modified type (C99 6.7.5). | |
bool | hasSizedVLAType () const |
Whether this type involves a variable-length array type with a definite size. | |
bool | hasUnnamedOrLocalType () const |
Whether this type is or contains a local or unnamed type. | |
bool | isOverloadableType () const |
Determines whether this is a type for which one can define an overloaded operator. | |
bool | isElaboratedTypeSpecifier () const |
Determine wither this type is a C++ elaborated-type-specifier. | |
bool | canDecayToPointerType () const |
Determines whether this type can decay to a pointer type. | |
bool | hasPointerRepresentation () const |
Whether this type is represented natively as a pointer. | |
bool | hasObjCPointerRepresentation () const |
Whether this type can represent an objective pointer type for the purpose of GC'ability. | |
bool | hasIntegerRepresentation () const |
Determine whether this type has an integer representation of some sort, e.g., it is an integer type or a vector. | |
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. | |
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. | |
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. | |
const RecordType * | getAsStructureType () const |
const RecordType * | getAsUnionType () const |
NOTE: getAs*ArrayType are methods on ASTContext. | |
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. | |
RecordDecl * | getAsRecordDecl () const |
Retrieves the RecordDecl this type refers to. | |
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. | |
const CXXRecordDecl * | getPointeeCXXRecordDecl () const |
If this is a pointer or reference to a RecordType, return the CXXRecordDecl that the type refers to. | |
DeducedType * | getContainedDeducedType () const |
Get the DeducedType whose type will be deduced for a variable with an initializer of this type. | |
AutoType * | getContainedAutoType () const |
Get the AutoType whose type will be deduced for a variable with an initializer of this type. | |
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). | |
template<typename T > | |
const T * | getAs () const |
Member-template getAs<specific type>'. | |
template<typename T > | |
const T * | getAsAdjusted () const |
Member-template getAsAdjusted<specific type>. | |
const ArrayType * | getAsArrayTypeUnsafe () const |
A variant of getAs<> for array types which silently discards qualifiers from the outermost type. | |
template<typename T > | |
const T * | castAs () const |
Member-template castAs<specific type>. | |
const ArrayType * | castAsArrayTypeUnsafe () const |
A variant of castAs<> for array type which silently discards qualifiers from the outermost type. | |
bool | hasAttr (attr::Kind AK) const |
Determine whether this type had the specified attribute applied to it (looking through top-level type sugar). | |
const Type * | getBaseElementTypeUnsafe () const |
Get the base element type of this type, potentially discarding type qualifiers. | |
const Type * | getArrayElementTypeNoTypeQual () const |
If this is an array type, return the element type of the array, potentially with type qualifiers missing. | |
const Type * | getPointeeOrArrayElementType () const |
If this is a pointer type, return the pointee type. | |
QualType | getPointeeType () const |
If this is a pointer, ObjC object pointer, or block pointer, this returns the respective pointee. | |
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. | |
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. | |
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. | |
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. | |
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. | |
bool | isFixedPointType () const |
Return true if this is a fixed point type according to ISO/IEC JTC1 SC22 WG14 N1169. | |
bool | isFixedPointOrIntegerType () const |
Return true if this is a fixed point or integer type. | |
bool | isConvertibleToFixedPointType () const |
Return true if this can be converted to (or from) a fixed point type. | |
bool | isSaturatedFixedPointType () const |
Return true if this is a saturated fixed point type according to ISO/IEC JTC1 SC22 WG14 N1169. | |
bool | isUnsaturatedFixedPointType () const |
Return true if this is a saturated fixed point type according to ISO/IEC JTC1 SC22 WG14 N1169. | |
bool | isSignedFixedPointType () const |
Return true if this is a fixed point type that is signed according to ISO/IEC JTC1 SC22 WG14 N1169. | |
bool | isUnsignedFixedPointType () const |
Return true if this is a fixed point type that is unsigned according to ISO/IEC JTC1 SC22 WG14 N1169. | |
bool | isConstantSizeType () const |
Return true if this is not a variable sized type, according to the rules of C99 6.7.5p3. | |
bool | isSpecifierType () const |
Returns true if this type can be represented by some set of type specifiers. | |
Linkage | getLinkage () const |
Determine the linkage of this type. | |
Visibility | getVisibility () const |
Determine the visibility of this type. | |
bool | isVisibilityExplicit () const |
Return true if the visibility was explicitly set is the code. | |
LinkageInfo | getLinkageAndVisibility () const |
Determine the linkage and visibility of this type. | |
bool | isLinkageValid () const |
True if the computed linkage is valid. | |
std::optional< NullabilityKind > | getNullability () const |
Determine the nullability of the given type. | |
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. | |
std::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. | |
bool | acceptsObjCTypeParams () const |
Determines if this is an ObjC interface type that may accept type parameters. | |
const char * | getTypeClassName () const |
QualType | getCanonicalTypeInternal () const |
CanQualType | getCanonicalTypeUnqualified () const |
void | dump () const |
void | dump (llvm::raw_ostream &OS, const ASTContext &Context) 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. | |
Public Member Functions inherited from clang::ObjCProtocolQualifiers< ObjCObjectType > | |
qual_range | quals () const |
qual_iterator | qual_begin () const |
qual_iterator | qual_end () const |
bool | qual_empty () const |
unsigned | getNumProtocols () const |
Return the number of qualifying protocols in this type, or 0 if there are none. | |
ObjCProtocolDecl * | getProtocol (unsigned I) const |
Fetch a protocol by index. | |
ArrayRef< ObjCProtocolDecl * > | getProtocols () const |
Retrieve all of the protocol qualifiers. | |
Static Public Member Functions | |
static bool | classof (const Type *T) |
Protected Types | |
enum | Nonce_ObjCInterface { Nonce_ObjCInterface } |
Protected Types inherited from clang::Type | |
enum | { NumArrayTypeBits = NumTypeBits + 6 } |
enum | { NumTypeWithKeywordBits = NumTypeBits + 8 } |
Protected Member Functions | |
ObjCObjectType (QualType Canonical, QualType Base, ArrayRef< QualType > typeArgs, ArrayRef< ObjCProtocolDecl * > protocols, bool isKindOf) | |
ObjCObjectType (enum Nonce_ObjCInterface) | |
void | computeSuperClassTypeSlow () const |
Protected Member Functions inherited from clang::Type | |
Type (TypeClass tc, QualType canon, TypeDependence Dependence) | |
Type * | this_ () |
void | setDependence (TypeDependence D) |
void | addDependence (TypeDependence D) |
Protected Member Functions inherited from clang::ObjCProtocolQualifiers< ObjCObjectType > | |
ObjCProtocolQualifiers ()=default | |
ObjCProtocolDecl *const * | getProtocolStorage () const |
ObjCProtocolDecl ** | getProtocolStorage () |
void | setNumProtocols (unsigned N) |
void | initialize (ArrayRef< ObjCProtocolDecl * > protocols) |
Friends | |
class | ObjCProtocolQualifiers< ObjCObjectType > |
Represents a class type in Objective C.
Every Objective C type is a combination of a base type, a set of type arguments (optional, for parameterized classes) and a list of protocols.
Given the following declarations:
'C' is an ObjCInterfaceType C. It is sugar for an ObjCObjectType with base C and no protocols.
'C
' is an unspecialized ObjCObjectType with base C and protocol list [P]. 'C<C*>' is a specialized ObjCObjectType with type arguments 'C*' and no protocol list. 'C<C*>
' is a specialized ObjCObjectType with base C, type arguments 'C*', and protocol list [P].
'id' is a TypedefType which is sugar for an ObjCObjectPointerType whose pointee is an ObjCObjectType with base BuiltinType::ObjCIdType and no protocols.
'id
' is an ObjCObjectPointerType whose pointee is an ObjCObjectType with base BuiltinType::ObjCIdType and protocol list [P]. Eventually this should get its own sugar class to better represent the source.
|
protected |
|
protected |
Definition at line 810 of file Type.cpp.
References clang::Type::addDependence(), getTypeArgsAsWritten(), clang::ObjCProtocolQualifiers< ObjCObjectType >::initialize(), memcpy(), and clang::Type::ObjCObjectTypeBits.
|
inlineprotected |
Definition at line 7286 of file Type.h.
References clang::Type::getTypeClass(), and clang::T.
|
protected |
Definition at line 1729 of file Type.cpp.
References clang::Type::castAs(), clang::Decl::getASTContext(), getInterface(), clang::ASTContext::getObjCInterfaceType(), clang::ObjCInterfaceDecl::getSuperClassType(), getTypeArgs(), clang::ObjCInterfaceDecl::getTypeParamList(), isUnspecialized(), clang::ObjCTypeParamList::size(), clang::QualType::substObjCTypeArgs(), and clang::Superclass.
|
inline |
Gets the base type of this object type.
This is always (possibly sugar for) one of:
Definition at line 7207 of file Type.h.
Referenced by clang::ASTContext::applyObjCProtocolQualifiers(), clang::ObjCObjectTypeLoc::getInnerType(), getTypeArgs(), isKindOfType(), isSpecialized(), clang::ObjCObjectTypeImpl::Profile(), and stripObjCKindOfTypeAndQuals().
|
inline |
Gets the interface declaration for this object type, if the base type really is an interface.
Definition at line 7378 of file Type.h.
References clang::Type::getAs(), and clang::T.
Referenced by clang::SemaObjC::ActOnCompatibilityAlias(), clang::SemaObjC::ActOnSuperClassOfClassInterface(), clang::ASTContext::areCommonBaseCompatible(), clang::SemaObjC::BuildClassMessage(), clang::ASTContext::canAssignObjCInterfaces(), clang::SemaObjC::checkInitMethod(), clang::SemaObjC::CheckObjCForCollectionOperand(), computeSuperClassTypeSlow(), EvaluateBinaryTypeTrait(), FilterMethodsByTypeBound(), getIntersectionOfProtocols(), clang::Type::getObjCSubstitutions(), clang::ento::ObjCMethodCall::getRuntimeDefinition(), isNSStringType(), clang::SemaObjC::LookupMethodInObjectType(), maybeAdjustInterfaceForSubscriptingCheck(), ShouldTryAgainWithRedefinitionType(), and tryEmitSpecializedAllocInit().
|
inline |
Retrieve the type of the superclass of this object type.
This operation substitutes any type arguments into the superclass of the current class type, potentially producing a specialization of the superclass type. Produces a null type if there is no superclass.
Definition at line 7271 of file Type.h.
Referenced by clang::ASTContext::areCommonBaseCompatible(), clang::ASTContext::canAssignObjCInterfaces(), getMostInformativeDerivedClassImpl(), clang::Type::getObjCSubstitutions(), and clang::ObjCObjectPointerType::getSuperClassType().
Retrieve the type arguments of this object type (semantically).
Definition at line 850 of file Type.cpp.
References getBaseType(), getTypeArgsAsWritten(), and isSpecializedAsWritten().
Referenced by clang::ASTContext::areCommonBaseCompatible(), clang::ASTContext::canAssignObjCInterfaces(), computeSuperClassTypeSlow(), and clang::Type::getObjCSubstitutions().
Retrieve the type arguments of this object type as they were written.
Definition at line 7255 of file Type.h.
Referenced by clang::ASTContext::applyObjCProtocolQualifiers(), clang::ASTContext::areCommonBaseCompatible(), clang::ObjCObjectTypeLoc::getNumTypeArgs(), getTypeArgs(), ObjCObjectType(), clang::ObjCObjectTypeImpl::Profile(), and stripObjCKindOfTypeAndQuals().
bool ObjCObjectType::isKindOfType | ( | ) | const |
Whether this ia a "__kindof" type (semantically).
Definition at line 868 of file Type.cpp.
References getBaseType(), and isKindOfTypeAsWritten().
Referenced by clang::ASTContext::areCommonBaseCompatible(), clang::ASTContext::canAssignObjCInterfaces(), and stripObjCKindOfTypeAndQuals().
|
inline |
Whether this is a "__kindof" type as written.
Definition at line 7260 of file Type.h.
Referenced by clang::ASTContext::applyObjCProtocolQualifiers(), isKindOfType(), and clang::ObjCObjectTypeImpl::Profile().
|
inline |
Definition at line 7213 of file Type.h.
Referenced by clang::ASTContext::canAssignObjCInterfaces(), clang::SemaObjC::checkInitMethod(), clang::ento::ObjCMethodCall::getRuntimeDefinition(), LookupMemberExpr(), and ShouldTryAgainWithRedefinitionType().
|
inline |
Definition at line 7209 of file Type.h.
Referenced by clang::SemaObjC::checkInitMethod(), FilterMethodsByTypeBound(), LookupMemberExpr(), and ShouldTryAgainWithRedefinitionType().
|
inline |
Definition at line 7227 of file Type.h.
Referenced by clang::ASTContext::canAssignObjCInterfaces().
|
inline |
Definition at line 7226 of file Type.h.
Referenced by clang::ASTContext::canAssignObjCInterfaces().
|
inline |
|
inline |
Definition at line 7217 of file Type.h.
Referenced by clang::ASTContext::canAssignObjCInterfaces().
|
inline |
bool ObjCObjectType::isSpecialized | ( | ) | const |
Determine whether this object type is "specialized", meaning that it has type arguments.
Definition at line 832 of file Type.cpp.
References getBaseType(), and clang::Type::ObjCObjectTypeBits.
Referenced by clang::ASTContext::areCommonBaseCompatible(), and clang::ASTContext::canAssignObjCInterfaces().
|
inline |
Determine whether this object type was written with type arguments.
Definition at line 7238 of file Type.h.
Referenced by getTypeArgs().
|
inline |
Determine whether this object type is "unspecialized", meaning that it has no type arguments.
Definition at line 7244 of file Type.h.
Referenced by computeSuperClassTypeSlow(), and clang::Type::getObjCSubstitutions().
|
inline |
QualType ObjCObjectType::stripObjCKindOfTypeAndQuals | ( | const ASTContext & | ctx | ) | const |
Strip off the Objective-C "kindof" type and (with it) any protocol qualifiers.
Definition at line 885 of file Type.cpp.
References clang::Type::getAs(), getBaseType(), clang::ASTContext::getObjCObjectType(), clang::ASTContext::getQualifiedType(), getTypeArgsAsWritten(), isKindOfType(), clang::ObjCProtocolQualifiers< ObjCObjectType >::qual_empty(), clang::SplitQualType::Quals, clang::QualType::split(), and clang::SplitQualType::Ty.
Referenced by clang::Type::isObjCIdOrObjectKindOfType(), and clang::ObjCObjectPointerType::stripObjCKindOfTypeAndQuals().
|
friend |