clang: clang::ObjCObjectPointerType Class Reference (original) (raw)

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 .

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 .

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'.

template<typename T >

const T *

getAsAdjusted () const

Member-template getAsAdjusted.

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.

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.

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.

Definition at line 7585 of file Type.h.

const ObjCObjectType * clang::ObjCObjectPointerType::getObjectType ( ) const 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:

\@class A; \@protocol P; \@protocol Q;

typedef A

AP;

typedef A A1;

typedef A1

A1P;

typedef A1P A1PQ;

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', because adding protocols to a protocol-qualified base discards the old qualifiers (for now). But if it didn't, getObjectType() would return 'A1P' (and we'd have to make iterating over qualifiers more complicated).

Definition at line 7622 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().