clang 20.0.0git
|
Represents a pointer to an Objective C object. More...
#include "clang/AST/Type.h"
Public Types | |
using | qual_iterator = ObjCObjectType::qual_iterator |
An iterator over the qualifiers on the object type. | |
using | qual_range = llvm::iterator_range< qual_iterator > |
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 } |
Public Member Functions | |
QualType | getPointeeType () const |
Gets the type pointed to by this ObjC pointer. | |
const ObjCObjectType * | getObjectType () const |
Gets the type pointed to by this ObjC pointer. | |
const ObjCInterfaceType * | getInterfaceType () const |
If this pointer points to an Objective C @interface type, gets the type for that interface. | |
ObjCInterfaceDecl * | getInterfaceDecl () const |
If this pointer points to an Objective @interface type, gets the declaration for that interface. | |
bool | isObjCIdType () const |
True if this is equivalent to the 'id' type, i.e. | |
bool | isObjCClassType () const |
True if this is equivalent to the 'Class' type, i.e. | |
bool | isObjCIdOrClassType () const |
True if this is equivalent to the 'id' or 'Class' type,. | |
bool | isObjCQualifiedIdType () const |
True if this is equivalent to 'id. | |
bool | isObjCQualifiedClassType () const |
True if this is equivalent to 'Class. | |
bool | isKindOfType () const |
Whether this is a "__kindof" type. | |
bool | isSpecialized () const |
Whether this type is specialized, meaning that it has type arguments. | |
bool | isSpecializedAsWritten () const |
Whether this type is specialized, meaning that it has type arguments. | |
bool | isUnspecialized () const |
Whether this type is unspecialized, meaning that is 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 for this type. | |
ArrayRef< QualType > | getTypeArgsAsWritten () const |
Retrieve the type arguments for this type. | |
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 on the object type. | |
ObjCProtocolDecl * | getProtocol (unsigned I) const |
Retrieve a qualifying protocol by index on the object type. | |
bool | isSugared () const |
QualType | desugar () const |
QualType | getSuperClassType () const |
Retrieve the type of the superclass of this object pointer type. | |
const ObjCObjectPointerType * | stripObjCKindOfTypeAndQuals (const ASTContext &ctx) const |
Strip off the Objective-C "kindof" type and (with it) any protocol qualifiers. | |
void | Profile (llvm::FoldingSetNodeID &ID) |
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 | isHLSLBuiltinIntangibleType () const |
bool | isHLSLAttributedResourceType () const |
bool | isHLSLIntangibleType () 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. | |
Static Public Member Functions | |
static void | Profile (llvm::FoldingSetNodeID &ID, QualType T) |
static bool | classof (const Type *T) |
Friends | |
class | ASTContext |
Represents a pointer to an Objective C object.
These are constructed from pointer declarators when the pointee type is an ObjCObjectType (or sugar for one). In addition, the 'id' and 'Class' types are typedefs for these, and the protocol-qualified types 'id
' and 'Class
' are translated into these.
Pointers to pointers to Objective C objects are still PointerTypes; only the first level of pointer gets it own type implementation.
using clang::ObjCObjectPointerType::qual_range = llvm::iterator_range<qual_iterator> |
Definition at line 7745 of file Type.h.
References clang::Type::getTypeClass(), and clang::T.
|
inline |
|
inline |
If this pointer points to an Objective @interface type, gets the declaration for that interface.
Definition at line 7632 of file Type.h.
References getObjectType().
Referenced by AddObjCKeyValueCompletions(), clang::SemaObjC::CheckConversionToObjCLiteral(), checkSelfIvarsForInvariantViolation(), CompareDerivedToBaseConversions(), findMethodDecl(), getMostInformativeDerivedClassImpl(), getSuperClassType(), clang::SemaObjC::HandleExprPropertyRefExpr(), hasDefinition(), clang::ento::cocoa::isCocoaObjectRef(), isKnownNonNilCollectionType(), IsNSError(), and clang::ASTContext::ObjCQualifiedIdTypesAreCompatible().
const ObjCInterfaceType * ObjCObjectPointerType::getInterfaceType | ( | ) | const |
If this pointer points to an Objective C @interface type, gets the type for that interface.
Any protocol qualifiers on the interface are ignored.
Definition at line 1833 of file Type.cpp.
References clang::Type::castAs(), and getObjectType().
Referenced by clang::SemaObjC::BuildObjCExceptionDecl(), clang::ASTContext::canAssignObjCInterfacesInBlockPointer(), clang::Sema::DiagnoseAssignmentResult(), clang::SemaObjC::HandleExprPropertyRefExpr(), clang::Sema::isObjCPointerConversion(), and clang::ASTContext::ObjCQualifiedIdTypesAreCompatible().
|
inline |
Return the number of qualifying protocols on the object type.
Definition at line 7712 of file Type.h.
References getObjectType().
|
inline |
Gets the type pointed to by this ObjC pointer.
Always returns non-null.
This method is equivalent to getPointeeType() except that it discards any typedefs (or other sugar) between this type and the "outermost" object type. So for:
For 'A*', getObjectType() will return 'A'. For 'A
*', getObjectType() will return 'A
'. For 'AP*', getObjectType() will return 'A
'. For 'A1*', getObjectType() will return 'A'. For 'A1
*', getObjectType() will return 'A1
'. For 'A1P*', getObjectType() will return 'A1
'. For 'A1PQ*', getObjectType() will return 'A1<Q>', because adding protocols to a protocol-qualified base discards the old qualifiers (for now). But if it didn't, getObjectType() would return 'A1P<Q>' (and we'd have to make iterating over qualifiers more complicated).
Definition at line 7617 of file Type.h.
References clang::Type::castAs().
Referenced by clang::ASTContext::areCommonBaseCompatible(), clang::ASTContext::canAssignObjCInterfaces(), checkObjCKindOfType(), getInterfaceType(), getIntersectionOfProtocols(), getMostInformativeDerivedClassImpl(), getSuperClassType(), isNSStringType(), LookupMemberExpr(), ShouldTryAgainWithRedefinitionType(), and stripObjCKindOfTypeAndQuals().
|
inline |
Gets the type pointed to by this ObjC pointer.
The result will always be an ObjCObjectType or sugar thereof.
Definition at line 7592 of file Type.h.
Referenced by DiagnoseBadConversion(), clang::Sema::FindCompositePointerType(), generateDiagnosticsForCallLike(), clang::SemaObjC::HandleExprPropertyRefExpr(), clang::Sema::isObjCPointerConversion(), LookupMethodInReceiverType(), and clang::ASTContext::UnwrapSimilarTypes().
|
inline |
Retrieve a qualifying protocol by index on the object type.
Definition at line 7717 of file Type.h.
References getObjectType().
QualType ObjCObjectPointerType::getSuperClassType | ( | ) | const |
Retrieve the type of the superclass of this object pointer type.
This operation substitutes any type arguments into the superclass of the current class type, potentially producing a pointer to a specialization of the superclass type. Produces a null type if there is no superclass.
Definition at line 1842 of file Type.cpp.
References clang::Decl::getASTContext(), getInterfaceDecl(), clang::ASTContext::getObjCObjectPointerType(), getObjectType(), clang::ObjCObjectType::getSuperClassType(), and clang::QualType::isNull().
Retrieve the type arguments for this type.
Definition at line 7684 of file Type.h.
References getObjectType().
Referenced by clang::SemaObjC::checkArrayLiteral(), and clang::SemaObjC::checkDictionaryLiteral().
Retrieve the type arguments for this type.
Definition at line 7689 of file Type.h.
References getObjectType().
|
inline |
Whether this is a "__kindof" type.
Definition at line 7666 of file Type.h.
References getObjectType().
Referenced by stripObjCKindOfTypeAndQuals().
|
inline |
True if this is equivalent to the 'Class' type, i.e.
if its object tive is the primitive 'Class' type with no protocols.
Definition at line 7644 of file Type.h.
References getObjectType().
Referenced by CompareDerivedToBaseConversions(), clang::ento::cocoa::isCocoaObjectRef(), LookupMethodInReceiverType(), and clang::ASTContext::ObjCQualifiedIdTypesAreCompatible().
|
inline |
True if this is equivalent to the 'id' or 'Class' type,.
Definition at line 7649 of file Type.h.
References getObjectType().
|
inline |
True if this is equivalent to the 'id' type, i.e.
if its object type is the primitive 'id' type with no protocols.
Definition at line 7638 of file Type.h.
References getObjectType().
Referenced by clang::ASTContext::canAssignObjCInterfacesInBlockPointer(), canAssignObjCObjectTypes(), clang::SemaObjC::CheckConversionToObjCLiteral(), CompareDerivedToBaseConversions(), clang::ento::cocoa::isCocoaObjectRef(), isObjCTypeSubstitutable(), and clang::ASTContext::ObjCQualifiedIdTypesAreCompatible().
|
inline |
True if this is equivalent to 'Class.
' for some non-empty set of protocols.
Definition at line 7661 of file Type.h.
References getObjectType().
Referenced by clang::ento::cocoa::isCocoaObjectRef(), and clang::ASTContext::ObjCQualifiedIdTypesAreCompatible().
|
inline |
True if this is equivalent to 'id.
' for some non-empty set of protocols.
Definition at line 7655 of file Type.h.
References getObjectType().
Referenced by clang::ASTContext::canAssignObjCInterfacesInBlockPointer(), clang::SemaObjC::FindCompositeObjCPointerType(), clang::ento::cocoa::isCocoaObjectRef(), isObjCTypeSubstitutable(), and clang::ASTContext::ObjCQualifiedIdTypesAreCompatible().
|
inline |
Whether this type is specialized, meaning that it has type arguments.
Definition at line 7669 of file Type.h.
References getObjectType().
Referenced by CompareDerivedToBaseConversions(), getMostInformativeDerivedClassImpl(), and storeWhenMoreInformative().
|
inline |
Whether this type is specialized, meaning that it has type arguments.
Definition at line 7672 of file Type.h.
References getObjectType().
|
inline |
|
inline |
Whether this type is unspecialized, meaning that is has no type arguments.
Definition at line 7677 of file Type.h.
References getObjectType().
Referenced by getMostInformativeDerivedClassImpl(), and storeWhenMoreInformative().
|
inline |
|
inline |
Definition at line 7737 of file Type.h.
References getPointeeType(), and ID.
Referenced by clang::ASTContext::getObjCObjectPointerType().
|
inlinestatic |
|
inline |
Definition at line 7701 of file Type.h.
References getObjectType().
|
inline |
Definition at line 7709 of file Type.h.
References getObjectType().
Referenced by clang::ASTContext::ObjCQualifiedIdTypesAreCompatible(), and stripObjCKindOfTypeAndQuals().
|
inline |
Definition at line 7705 of file Type.h.
References getObjectType().
|
inline |
Definition at line 7699 of file Type.h.
Referenced by clang::SemaCodeCompletion::CodeCompleteMemberReferenceExpr(), clang::Sema::DiagnoseAssignmentResult(), FindGetterSetterNameDecl(), clang::SemaObjC::HandleExprPropertyRefExpr(), clang::SemaObjC::LookupMethodInQualifiedType(), clang::ASTContext::ObjCQualifiedClassTypesAreCompatible(), and clang::ASTContext::ObjCQualifiedIdTypesAreCompatible().
const ObjCObjectPointerType * ObjCObjectPointerType::stripObjCKindOfTypeAndQuals | ( | const ASTContext & | ctx | ) | const |
Strip off the Objective-C "kindof" type and (with it) any protocol qualifiers.
Definition at line 943 of file Type.cpp.
References clang::Type::castAs(), clang::ASTContext::getObjCObjectPointerType(), getObjectType(), isKindOfType(), qual_empty(), and clang::ObjCObjectType::stripObjCKindOfTypeAndQuals().
Referenced by clang::ASTContext::canAssignObjCInterfaces(), and clang::ASTContext::canAssignObjCInterfacesInBlockPointer().
|
friend |