clang
3.7.0
|
#include <Type.h>
Public Types | |
enum | TQ { Const = 0x1, Restrict = 0x2, Volatile = 0x4, CVRMask = Const | Volatile | Restrict } |
enum | GC { GCNone = 0, Weak, Strong } |
enum | ObjCLifetime { OCL_None, OCL_ExplicitNone, OCL_Strong, OCL_Weak, OCL_Autoreleasing } |
enum | { MaxAddressSpace = 0xffffffu, FastWidth = 3, FastMask = (1 << FastWidth) - 1 } |
Public Member Functions | |
Qualifiers () | |
unsigned | getAsOpaqueValue () const |
bool | hasConst () const |
void | setConst (bool flag) |
void | removeConst () |
void | addConst () |
bool | hasVolatile () const |
void | setVolatile (bool flag) |
void | removeVolatile () |
void | addVolatile () |
bool | hasRestrict () const |
void | setRestrict (bool flag) |
void | removeRestrict () |
void | addRestrict () |
bool | hasCVRQualifiers () const |
unsigned | getCVRQualifiers () const |
void | setCVRQualifiers (unsigned mask) |
void | removeCVRQualifiers (unsigned mask) |
void | removeCVRQualifiers () |
void | addCVRQualifiers (unsigned mask) |
bool | hasObjCGCAttr () const |
GC | getObjCGCAttr () const |
void | setObjCGCAttr (GC type) |
void | removeObjCGCAttr () |
void | addObjCGCAttr (GC type) |
Qualifiers | withoutObjCGCAttr () const |
Qualifiers | withoutObjCLifetime () const |
bool | hasObjCLifetime () const |
ObjCLifetime | getObjCLifetime () const |
void | setObjCLifetime (ObjCLifetime type) |
void | removeObjCLifetime () |
void | addObjCLifetime (ObjCLifetime type) |
bool | hasNonTrivialObjCLifetime () const |
True if the lifetime is neither None or ExplicitNone. More... | |
bool | hasStrongOrWeakObjCLifetime () const |
True if the lifetime is either strong or weak. More... | |
bool | hasAddressSpace () const |
unsigned | getAddressSpace () const |
void | setAddressSpace (unsigned space) |
void | removeAddressSpace () |
void | addAddressSpace (unsigned space) |
bool | hasFastQualifiers () const |
unsigned | getFastQualifiers () const |
void | setFastQualifiers (unsigned mask) |
void | removeFastQualifiers (unsigned mask) |
void | removeFastQualifiers () |
void | addFastQualifiers (unsigned mask) |
bool | hasNonFastQualifiers () const |
Qualifiers | getNonFastQualifiers () const |
bool | hasQualifiers () const |
hasQualifiers - Return true if the set contains any qualifiers. More... | |
bool | empty () const |
void | addQualifiers (Qualifiers Q) |
Add the qualifiers from the given set to this set. More... | |
void | removeQualifiers (Qualifiers Q) |
Remove the qualifiers from the given set from this set. More... | |
void | addConsistentQualifiers (Qualifiers qs) |
Add the qualifiers from the given set to this set, given that they don't conflict. More... | |
bool | isAddressSpaceSupersetOf (Qualifiers other) const |
Returns true if this address space is a superset of the other one. OpenCL v2.0 defines conversion rules (OpenCLC v2.0 s6.5.5) and notion of overlapping address spaces. CL1.1 or CL1.2: every address space is a superset of itself. CL2.0 adds: __generic is a superset of any address space except for __constant. More... | |
bool | compatiblyIncludes (Qualifiers other) const |
Determines if these qualifiers compatibly include another set. Generally this answers the question of whether an object with the other qualifiers can be safely used as an object with these qualifiers. More... | |
bool | compatiblyIncludesObjCLifetime (Qualifiers other) const |
Determines if these qualifiers compatibly include another set of qualifiers from the narrow perspective of Objective-C ARC lifetime. More... | |
bool | isStrictSupersetOf (Qualifiers Other) const |
Determine whether this set of qualifiers is a strict superset of another set of qualifiers, not considering qualifier compatibility. More... | |
bool | operator== (Qualifiers Other) const |
bool | operator!= (Qualifiers Other) const |
operator bool () const | |
Qualifiers & | operator+= (Qualifiers R) |
Qualifiers & | operator-= (Qualifiers R) |
std::string | getAsString () const |
std::string | getAsString (const PrintingPolicy &Policy) const |
bool | isEmptyWhenPrinted (const PrintingPolicy &Policy) const |
void | print (raw_ostream &OS, const PrintingPolicy &Policy, bool appendSpaceIfNonEmpty=false) const |
void | Profile (llvm::FoldingSetNodeID &ID) const |
Static Public Member Functions | |
static Qualifiers | removeCommonQualifiers (Qualifiers &L, Qualifiers &R) |
Returns the common set of qualifiers while removing them from the given sets. More... | |
static Qualifiers | fromFastMask (unsigned Mask) |
static Qualifiers | fromCVRMask (unsigned CVR) |
static Qualifiers | fromOpaqueValue (unsigned opaque) |
Friends | |
Qualifiers | operator+ (Qualifiers L, Qualifiers R) |
Qualifiers | operator- (Qualifiers L, Qualifiers R) |
Compute the difference between two qualifier sets. More... | |
Qualifiers - The collection of all-type qualifiers we support. Clang supports five independent qualifiers:
anonymous enum |
|
inline |
Definition at line 320 of file Type.h.
References setAddressSpace().
Referenced by addQualifiers(), and clang::ASTContext::getAddrSpaceQualType().
|
inline |
Add the qualifiers from the given set to this set, given that they don't conflict.
Definition at line 394 of file Type.h.
References getAddressSpace(), getObjCGCAttr(), getObjCLifetime(), hasAddressSpace(), hasObjCGCAttr(), and hasObjCLifetime().
Referenced by clang::ASTContext::getBaseElementType(), clang::SplitQualType::getSingleStepDesugaredType(), and clang::ASTContext::getUnqualifiedArrayType().
|
inline |
Definition at line 231 of file Type.h.
References Const.
Referenced by clang::Sema::AddBuiltinOperatorCandidates().
|
inline |
Definition at line 260 of file Type.h.
References CVRMask.
Referenced by clang::Sema::BuildQualifiedType(), clang::CodeGen::CodeGenFunction::EmitLValueForField(), clang::CodeGen::CGObjCRuntime::EmitValueForIvarAtOffset(), fromCVRMask(), and removeCommonQualifiers().
|
inline |
Definition at line 340 of file Type.h.
References FastMask.
Referenced by clang::QualType::addConst(), clang::QualType::addRestrict(), clang::QualType::addVolatile(), fromFastMask(), clang::QualType::getLocalQualifiers(), clang::QualType::getQualifiers(), and clang::QualType::split().
|
inline |
Definition at line 271 of file Type.h.
References setObjCGCAttr().
Referenced by addQualifiers(), and clang::ASTContext::getObjCGCQualType().
|
inline |
Definition at line 294 of file Type.h.
References hasObjCLifetime().
Referenced by clang::Sema::ActOnPropertyImplDecl(), addQualifiers(), clang::ASTContext::getLifetimeQualifiedType(), handleObjCOwnershipTypeAttr(), inferARCLifetimeForPointee(), inferARCWriteback(), and transferARCOwnershipToDeclSpec().
|
inline |
Add the qualifiers from the given set to this set.
Definition at line 359 of file Type.h.
References addAddressSpace(), addObjCGCAttr(), addObjCLifetime(), CVRMask, getAddressSpace(), getObjCGCAttr(), getObjCLifetime(), hasAddressSpace(), hasObjCGCAttr(), and hasObjCLifetime().
Referenced by operator+=().
|
inline |
|
inline |
|
inline |
Determines if these qualifiers compatibly include another set. Generally this answers the question of whether an object with the other qualifiers can be safely used as an object with these qualifiers.
Definition at line 424 of file Type.h.
References CVRMask, getObjCGCAttr(), getObjCLifetime(), hasObjCGCAttr(), and isAddressSpaceSupersetOf().
Referenced by AdoptQualifiers(), CheckOriginalCallArgDeduction(), checkPointerTypesForAssignment(), clang::Sema::CompareReferenceRelationship(), clang::QualType::isMoreQualifiedThan(), clang::Sema::isObjCWritebackConversion(), clang::Sema::IsQualificationConversion(), TryReferenceInit(), and TryStaticCast().
|
inline |
Determines if these qualifiers compatibly include another set of qualifiers from the narrow perspective of Objective-C ARC lifetime.
One set of Objective-C lifetime qualifiers compatibly includes the other if the lifetime qualifiers match, or if both are non-__weak and the including set also contains the 'const' qualifier.
Definition at line 442 of file Type.h.
References getObjCLifetime(), hasConst(), and OCL_Weak.
Referenced by CastsAwayConstness(), checkPointerTypesForAssignment(), clang::Sema::CompareReferenceRelationship(), and clang::Sema::IsQualificationConversion().
|
inline |
Definition at line 356 of file Type.h.
Referenced by clang::Sema::CheckMain(), clang::ASTContext::getAsArrayType(), clang::ASTContext::getUnqualifiedArrayType(), clang::Sema::isObjCWritebackConversion(), and TypeInfoIsInStandardLibrary().
|
inlinestatic |
Definition at line 208 of file Type.h.
References addCVRQualifiers().
Referenced by AddImplicitObjectParameterType(), clang::Sema::BuildCallToMemberFunction(), clang::Sema::BuildQualifiedType(), clang::Sema::CodeCompleteOrdinaryName(), clang::Sema::CXXCheckConditionalOperands(), clang::Sema::FindCompositePointerType(), clang::ASTContext::getCVRQualifiedType(), getFunctionQualifiersAsString(), clang::ArrayType::getIndexTypeQualifiers(), and clang::CXXMethodDecl::getThisType().
|
inlinestatic |
Definition at line 202 of file Type.h.
References addFastQualifiers().
Referenced by clang::QualType::split().
|
inlinestatic |
|
inline |
Definition at line 313 of file Type.h.
Referenced by addConsistentQualifiers(), addQualifiers(), clang::Sema::DiagnoseAssignmentResult(), DiagnoseBadConversion(), clang::CodeGen::LValue::getAddressSpace(), clang::ExtQuals::getAddressSpace(), clang::ASTContext::getTargetAddressSpace(), hasInconsistentOrSupersetQualifiersOf(), isAddressSpaceSupersetOf(), IsModifiable(), isStrictSupersetOf(), clang::ASTContext::mergeObjCGCQualifiers(), clang::ASTContext::mergeTypes(), removeCommonQualifiers(), removeQualifiers(), and rewriteBuiltinFunctionDecl().
|
inline |
std::string Qualifiers::getAsString | ( | ) | const |
Definition at line 1484 of file TypePrinter.cpp.
Referenced by clang::Sema::BuildCallToMemberFunction(), and clang::QualType::getAsString().
std::string Qualifiers::getAsString | ( | const PrintingPolicy & | Policy | ) | const |
Definition at line 1492 of file TypePrinter.cpp.
|
inline |
Definition at line 248 of file Type.h.
References CVRMask.
Referenced by CastsAwayConstness(), checkConditionalPointerCompatibility(), DeduceTemplateArgumentsByTypeMatch(), clang::InitializationSequence::Diagnose(), DiagnoseBadConversion(), clang::CodeGen::CodeGenFunction::EmitExtVectorElementExpr(), clang::CodeGen::CodeGenFunction::EmitObjCIvarRefLValue(), clang::CodeGen::LValue::getVRQualifiers(), hasCVRQualifiers(), hasInconsistentOrSupersetQualifiersOf(), hasMangledSubstitutionQualifiers(), clang::Sema::IsQualificationConversion(), clang::ASTContext::mergeObjCGCQualifiers(), clang::ASTContext::mergeTypes(), clang::Sema::PerformObjectArgumentInitialization(), removeCommonQualifiers(), and TryReferenceInitializationCore().
|
inline |
Definition at line 328 of file Type.h.
References FastMask.
Referenced by clang::QualifierCollector::apply(), clang::ASTContext::getQualifiedType(), and hasFastQualifiers().
|
inline |
Definition at line 348 of file Type.h.
References setFastQualifiers().
|
inline |
Definition at line 266 of file Type.h.
Referenced by addConsistentQualifiers(), addQualifiers(), compatiblyIncludes(), DiagnoseBadConversion(), clang::CodeGen::CodeGenFunction::EmitLValueForField(), clang::ExtQuals::getObjCGCAttr(), hasInconsistentOrSupersetQualifiersOf(), clang::QualType::isObjCGCStrong(), clang::QualType::isObjCGCWeak(), clang::CodeGen::LValue::isObjCStrong(), clang::CodeGen::LValue::isObjCWeak(), clang::Sema::IsQualificationConversion(), isStrictSupersetOf(), clang::ASTContext::mergeObjCGCQualifiers(), clang::ASTContext::mergeTypes(), removeCommonQualifiers(), and removeQualifiers().
|
inline |
Definition at line 287 of file Type.h.
Referenced by clang::Sema::ActOnForEachDeclStmt(), addConsistentQualifiers(), addQualifiers(), clang::ASTContext::BlockRequiresCopying(), CheckOriginalCallArgDeduction(), checkPointerTypesForAssignment(), clang::Sema::CompareReferenceRelationship(), compatiblyIncludes(), compatiblyIncludesObjCLifetime(), DeduceTemplateArgumentsByTypeMatch(), clang::Sema::DiagnoseAssignmentResult(), DiagnoseBadConversion(), clang::CodeGen::CodeGenFunction::EmitLoadOfLValue(), clang::CodeGen::CodeGenFunction::EmitParmDecl(), clang::CodeGen::CodeGenFunction::EmitStoreThroughLValue(), clang::CodeGen::CodeGenFunction::GenerateCopyHelperFunction(), clang::CodeGen::CodeGenFunction::GenerateDestroyHelperFunction(), clang::CodeGen::CodeGenFunction::generateObjCGetterBody(), clang::CodeGen::LValue::getObjCLifetime(), clang::CodeGen::AggValueSlot::getObjCLifetime(), clang::ExtQuals::getObjCLifetime(), handleObjCOwnershipTypeAttr(), hasInconsistentOrSupersetQualifiersOf(), hasNonTrivialObjCLifetime(), hasStrongOrWeakObjCLifetime(), InitCatchParam(), isNonTrivialObjCLifetimeConversion(), clang::Sema::isObjCWritebackConversion(), clang::Sema::IsQualificationConversion(), isStrictSupersetOf(), clang::ASTContext::mergeTypes(), removeCommonQualifiers(), and removeQualifiers().
|
inline |
Definition at line 312 of file Type.h.
Referenced by addConsistentQualifiers(), addQualifiers(), BuildFieldReferenceExpr(), DeduceTemplateArgumentsByTypeMatch(), clang::ASTContext::getAddrSpaceQualType(), clang::Sema::HandleField(), clang::ExtQuals::hasAddressSpace(), hasInconsistentOrSupersetQualifiersOf(), hasMangledSubstitutionQualifiers(), isStrictSupersetOf(), and rewriteBuiltinFunctionDecl().
|
inline |
Definition at line 226 of file Type.h.
References Const.
Referenced by CheckOriginalCallArgDeduction(), compatiblyIncludesObjCLifetime(), ComputeQualifierFlags(), convertQualifiersAndValueKindIfNecessary(), clang::CodeGen::CodeGenFunction::EmitParmDecl(), IsConstNonVolatile(), isNonTrivialObjCLifetimeConversion(), clang::Sema::IsQualificationConversion(), TryReferenceInitializationCore(), and TryReferenceListInitialization().
|
inline |
Definition at line 247 of file Type.h.
References getCVRQualifiers().
|
inline |
Definition at line 327 of file Type.h.
References getFastQualifiers().
Referenced by clang::ExtQuals::ExtQuals(), and clang::ExtQuals::Profile().
|
inline |
hasNonFastQualifiers - Return true if the set contains any qualifiers which require an ExtQuals node to be allocated.
Definition at line 347 of file Type.h.
References FastMask.
Referenced by clang::QualifierCollector::apply(), clang::ExtQuals::ExtQuals(), and clang::ASTContext::getQualifiedType().
|
inline |
True if the lifetime is neither None or ExplicitNone.
Definition at line 301 of file Type.h.
References getObjCLifetime(), and OCL_ExplicitNone.
Referenced by DeduceTemplateArgumentsByTypeMatch().
|
inline |
Definition at line 265 of file Type.h.
Referenced by addConsistentQualifiers(), addQualifiers(), compatiblyIncludes(), DeduceTemplateArgumentsByTypeMatch(), clang::ASTContext::getObjCGCQualType(), hasInconsistentOrSupersetQualifiersOf(), clang::ExtQuals::hasObjCGCAttr(), clang::Sema::IsQualificationConversion(), and isStrictSupersetOf().
|
inline |
Definition at line 286 of file Type.h.
Referenced by addConsistentQualifiers(), addObjCLifetime(), addQualifiers(), checkARCPropertyImpl(), DeduceTemplateArgumentsByTypeMatch(), clang::ASTContext::getFunctionType(), clang::ASTContext::getUnqualifiedObjCPointerType(), handleObjCOwnershipTypeAttr(), hasDirectOwnershipQualifier(), HasExplicitOwnershipAttr(), hasInconsistentOrSupersetQualifiersOf(), clang::ExtQuals::hasObjCLifetime(), isStrictSupersetOf(), and rewriteToObjCProperty().
|
inline |
hasQualifiers - Return true if the set contains any qualifiers.
Definition at line 355 of file Type.h.
Referenced by operator bool().
|
inline |
Definition at line 240 of file Type.h.
References Restrict.
Referenced by clang::Sema::BuildQualifiedType(), CollectVRQualifiers(), ComputeQualifierFlags(), and clang::CodeGen::LValue::isRestrictQualified().
|
inline |
True if the lifetime is either strong or weak.
Definition at line 307 of file Type.h.
References getObjCLifetime(), OCL_Strong, and OCL_Weak.
Referenced by clang::CodeGen::CodeGenFunction::GenerateDestroyHelperFunction().
|
inline |
Definition at line 233 of file Type.h.
References Volatile.
Referenced by CollectVRQualifiers(), ComputeQualifierFlags(), convertQualifiersAndValueKindIfNecessary(), IsConstNonVolatile(), clang::CodeGen::LValue::isVolatile(), clang::CodeGen::AggValueSlot::isVolatile(), clang::CodeGen::LValue::isVolatileQualified(), TryReferenceInitializationCore(), and TryReferenceListInitialization().
|
inline |
Returns true if this address space is a superset of the other one. OpenCL v2.0 defines conversion rules (OpenCLC v2.0 s6.5.5) and notion of overlapping address spaces. CL1.1 or CL1.2: every address space is a superset of itself. CL2.0 adds: __generic is a superset of any address space except for __constant.
Definition at line 411 of file Type.h.
References getAddressSpace(), clang::LangAS::opencl_constant, and clang::LangAS::opencl_generic.
Referenced by checkPointerTypesForAssignment(), compatiblyIncludes(), and clang::PointerType::isAddressSpaceOverlapping().
bool Qualifiers::isEmptyWhenPrinted | ( | const PrintingPolicy & | Policy | ) | const |
Definition at line 1499 of file TypePrinter.cpp.
bool Qualifiers::isStrictSupersetOf | ( | Qualifiers | Other | ) | const |
Determine whether this set of qualifiers is a strict superset of another set of qualifiers, not considering qualifier compatibility.
Definition at line 31 of file Type.cpp.
References CVRMask, getAddressSpace(), getObjCGCAttr(), getObjCLifetime(), hasAddressSpace(), hasObjCGCAttr(), and hasObjCLifetime().
Referenced by clang::Sema::CXXCheckConditionalOperands(), and DeduceTemplateArgumentsByTypeMatch().
|
inlineexplicit |
Definition at line 459 of file Type.h.
References hasQualifiers().
|
inline |
|
inline |
Definition at line 461 of file Type.h.
References addQualifiers().
|
inline |
Definition at line 473 of file Type.h.
References removeQualifiers().
|
inline |
void Qualifiers::print | ( | raw_ostream & | OS, |
const PrintingPolicy & | Policy, | ||
bool | appendSpaceIfNonEmpty = false |
||
) | const |
Definition at line 1519 of file TypePrinter.cpp.
Referenced by clang::QualType::print().
|
inline |
Definition at line 491 of file Type.h.
Referenced by clang::Sema::IsOverload(), and clang::ExtQuals::Profile().
|
inline |
Definition at line 319 of file Type.h.
References setAddressSpace().
Referenced by clang::Sema::BuildCallToMemberFunction(), DeduceTemplateArgumentsByTypeMatch(), removeCommonQualifiers(), and removeQualifiers().
|
inlinestatic |
Returns the common set of qualifiers while removing them from the given sets.
Definition at line 166 of file Type.h.
References addCVRQualifiers(), CVRMask, getAddressSpace(), getCVRQualifiers(), getObjCGCAttr(), getObjCLifetime(), removeAddressSpace(), removeCVRQualifiers(), removeObjCGCAttr(), removeObjCLifetime(), setAddressSpace(), setObjCGCAttr(), and setObjCLifetime().
Referenced by UnwrapTypeForDebugInfo().
|
inline |
Definition at line 230 of file Type.h.
References Const.
Referenced by BuildFieldReferenceExpr(), clang::Sema::CheckMain(), and TypeInfoIsInStandardLibrary().
|
inline |
Definition at line 253 of file Type.h.
References CVRMask.
Referenced by checkConditionalPointerCompatibility(), DeduceTemplateArgumentsByTypeMatch(), removeCommonQualifiers(), shouldBeModeledWithNoOp(), and TryConstCast().
|
inline |
|
inline |
|
inline |
|
inline |
Definition at line 270 of file Type.h.
References GCNone, and setObjCGCAttr().
Referenced by clang::Sema::BuildCallToMemberFunction(), BuildFieldReferenceExpr(), DeduceTemplateArgumentsByTypeMatch(), clang::CodeGen::CodeGenFunction::EmitDeclRefLValue(), clang::CodeGen::CodeGenFunction::EmitLValueForField(), clang::Sema::IsQualificationConversion(), removeCommonQualifiers(), removeQualifiers(), TryReferenceInit(), TryStaticCast(), and withoutObjCGCAttr().
|
inline |
Definition at line 293 of file Type.h.
References OCL_None, and setObjCLifetime().
Referenced by BuildSimilarlyQualifiedPointerType(), checkPointerTypesForAssignment(), clang::Sema::CompareReferenceRelationship(), DeduceTemplateArgumentsByTypeMatch(), clang::ASTContext::getFunctionType(), clang::ASTContext::getUnqualifiedObjCPointerType(), handleObjCOwnershipTypeAttr(), clang::Sema::IsQualificationConversion(), removeCommonQualifiers(), removeQualifiers(), rewriteToObjCProperty(), TryReferenceInit(), TryStaticCast(), and withoutObjCLifetime().
|
inline |
Remove the qualifiers from the given set from this set.
Definition at line 376 of file Type.h.
References CVRMask, getAddressSpace(), getObjCGCAttr(), getObjCLifetime(), removeAddressSpace(), removeObjCGCAttr(), and removeObjCLifetime().
Referenced by operator-=().
|
inline |
Definition at line 244 of file Type.h.
References Restrict.
Referenced by clang::Sema::BuildQualifiedType().
|
inline |
|
inline |
Definition at line 314 of file Type.h.
References MaxAddressSpace.
Referenced by addAddressSpace(), removeAddressSpace(), and removeCommonQualifiers().
|
inline |
|
inline |
Definition at line 249 of file Type.h.
References CVRMask.
Referenced by CastsAwayConstness(), and DeduceTemplateArgumentsByTypeMatch().
|
inline |
|
inline |
Definition at line 267 of file Type.h.
Referenced by addObjCGCAttr(), clang::CodeGen::LValue::MakeAddr(), removeCommonQualifiers(), and removeObjCGCAttr().
|
inline |
Definition at line 290 of file Type.h.
Referenced by checkARCPropertyImpl(), CheckOriginalCallArgDeduction(), clang::Sema::CheckTemplateTypeArgument(), DeduceTemplateArgumentsByTypeMatch(), clang::ObjCMethodDecl::getSelfType(), clang::Sema::isObjCWritebackConversion(), removeCommonQualifiers(), and removeObjCLifetime().
|
inline |
|
inline |
Definition at line 234 of file Type.h.
References Volatile.
Referenced by clang::CodeGen::AggValueSlot::setVolatile().
|
inline |
Definition at line 275 of file Type.h.
References removeObjCGCAttr().
Referenced by checkPointerTypesForAssignment().
|
inline |
Definition at line 280 of file Type.h.
References removeObjCLifetime().
Referenced by checkPointerTypesForAssignment(), DeduceTemplateArgumentsByTypeMatch(), and clang::Sema::isObjCWritebackConversion().
|
friend |
|
friend |