clang 19.0.0git
Public Types | Public Member Functions | Static Public Member Functions | Friends | List of all members
clang::Qualifiers Class Reference

The collection of all-type qualifiers we support. More...

#include "clang/AST/Type.h"

Inheritance diagram for clang::Qualifiers:
Inheritance graph
[legend]

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 = 0x7fffffu , FastWidth = 3 , FastMask = (1 << FastWidth) - 1 }
 

Public Member Functions

unsigned getAsOpaqueValue () const
 
bool hasConst () const
 
bool hasOnlyConst () const
 
void removeConst ()
 
void addConst ()
 
Qualifiers withConst () const
 
bool hasVolatile () const
 
bool hasOnlyVolatile () const
 
void removeVolatile ()
 
void addVolatile ()
 
Qualifiers withVolatile () const
 
bool hasRestrict () const
 
bool hasOnlyRestrict () const
 
void removeRestrict ()
 
void addRestrict ()
 
Qualifiers withRestrict () const
 
bool hasCVRQualifiers () const
 
unsigned getCVRQualifiers () const
 
unsigned getCVRUQualifiers () const
 
void setCVRQualifiers (unsigned mask)
 
void removeCVRQualifiers (unsigned mask)
 
void removeCVRQualifiers ()
 
void addCVRQualifiers (unsigned mask)
 
void addCVRUQualifiers (unsigned mask)
 
bool hasUnaligned () const
 
void setUnaligned (bool flag)
 
void removeUnaligned ()
 
void addUnaligned ()
 
bool hasObjCGCAttr () const
 
GC getObjCGCAttr () const
 
void setObjCGCAttr (GC type)
 
void removeObjCGCAttr ()
 
void addObjCGCAttr (GC type)
 
Qualifiers withoutObjCGCAttr () const
 
Qualifiers withoutObjCLifetime () const
 
Qualifiers withoutAddressSpace () 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.
 
bool hasStrongOrWeakObjCLifetime () const
 True if the lifetime is either strong or weak.
 
bool hasAddressSpace () const
 
LangAS getAddressSpace () const
 
bool hasTargetSpecificAddressSpace () const
 
unsigned getAddressSpaceAttributePrintValue () const
 Get the address space attribute value to be printed by diagnostics.
 
void setAddressSpace (LangAS space)
 
void removeAddressSpace ()
 
void addAddressSpace (LangAS space)
 
bool hasFastQualifiers () const
 
unsigned getFastQualifiers () const
 
void setFastQualifiers (unsigned mask)
 
void removeFastQualifiers (unsigned mask)
 
void removeFastQualifiers ()
 
void addFastQualifiers (unsigned mask)
 
bool hasNonFastQualifiers () const
 Return true if the set contains any qualifiers which require an ExtQuals node to be allocated.
 
Qualifiers getNonFastQualifiers () const
 
bool hasQualifiers () const
 Return true if the set contains any qualifiers.
 
bool empty () const
 
void addQualifiers (Qualifiers Q)
 Add the qualifiers from the given set to this set.
 
void removeQualifiers (Qualifiers Q)
 Remove the qualifiers from the given set from this set.
 
void addConsistentQualifiers (Qualifiers qs)
 Add the qualifiers from the given set to this set, given that they don't conflict.
 
bool isAddressSpaceSupersetOf (Qualifiers other) const
 Returns true if the address space in these qualifiers is equal to or a superset of the address space in the argument qualifiers.
 
bool compatiblyIncludes (Qualifiers other) const
 Determines if these qualifiers compatibly include another set.
 
bool compatiblyIncludesObjCLifetime (Qualifiers other) const
 Determines if these qualifiers compatibly include another set of qualifiers from the narrow perspective of Objective-C ARC lifetime.
 
bool isStrictSupersetOf (Qualifiers Other) const
 Determine whether this set of qualifiers is a strict superset of another set of qualifiers, not considering qualifier compatibility.
 
bool operator== (Qualifiers Other) const
 
bool operator!= (Qualifiers Other) const
 
 operator bool () const
 
Qualifiersoperator+= (Qualifiers R)
 
Qualifiersoperator-= (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.
 
static Qualifiers fromFastMask (unsigned Mask)
 
static Qualifiers fromCVRMask (unsigned CVR)
 
static Qualifiers fromCVRUMask (unsigned CVRU)
 
static Qualifiers fromOpaqueValue (unsigned opaque)
 
static bool isAddressSpaceSupersetOf (LangAS A, LangAS B)
 Returns true if address space A is equal to or a superset of B.
 
static std::string getAddrSpaceAsString (LangAS AS)
 

Friends

Qualifiers operator+ (Qualifiers L, Qualifiers R)
 
Qualifiers operator- (Qualifiers L, Qualifiers R)
 Compute the difference between two qualifier sets.
 

Detailed Description

The collection of all-type qualifiers we support.

Clang supports five independent qualifiers:

Definition at line 147 of file Type.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
MaxAddressSpace 

The maximum supported address space number.

23 bits should be enough for anyone.

FastWidth 

The width of the "fast" qualifier mask.

FastMask 

The fast qualifier mask.

Definition at line 184 of file Type.h.

◆ GC

Enumerator
GCNone 
Weak 
Strong 

Definition at line 156 of file Type.h.

◆ ObjCLifetime

Enumerator
OCL_None 

There is no lifetime qualification on this type.

OCL_ExplicitNone 

This object can be modified without requiring retains or releases.

OCL_Strong 

Assigning into this object requires the old value to be released and the new value to be retained.

The timing of the release of the old value is inexact: it may be moved to immediately after the last known point where the value is live.

OCL_Weak 

Reading or writing from this object requires a barrier call.

OCL_Autoreleasing 

Assigning into this object requires a lifetime extension.

Definition at line 162 of file Type.h.

◆ TQ

Enumerator
Const 
Restrict 
Volatile 
CVRMask 

Definition at line 149 of file Type.h.

Member Function Documentation

◆ addAddressSpace()

void clang::Qualifiers::addAddressSpace ( LangAS  space)
inline

◆ addConsistentQualifiers()

void clang::Qualifiers::addConsistentQualifiers ( Qualifiers  qs)
inline

◆ addConst()

void clang::Qualifiers::addConst ( )
inline

◆ addCVRQualifiers()

void clang::Qualifiers::addCVRQualifiers ( unsigned  mask)
inline

Definition at line 309 of file Type.h.

References CVRMask.

Referenced by fromCVRMask(), and removeCommonQualifiers().

◆ addCVRUQualifiers()

void clang::Qualifiers::addCVRUQualifiers ( unsigned  mask)
inline

Definition at line 313 of file Type.h.

References CVRMask.

Referenced by fromCVRUMask(), and GetFullTypeForDeclarator().

◆ addFastQualifiers()

void clang::Qualifiers::addFastQualifiers ( unsigned  mask)
inline

◆ addObjCGCAttr()

void clang::Qualifiers::addObjCGCAttr ( GC  type)
inline

Definition at line 331 of file Type.h.

References setObjCGCAttr(), and clang::ast_matchers::type.

Referenced by addQualifiers(), and clang::ASTContext::getObjCGCQualType().

◆ addObjCLifetime()

void clang::Qualifiers::addObjCLifetime ( ObjCLifetime  type)
inline

◆ addQualifiers()

void clang::Qualifiers::addQualifiers ( Qualifiers  Q)
inline

Add the qualifiers from the given set to this set.

Definition at line 443 of file Type.h.

References addAddressSpace(), addObjCGCAttr(), addObjCLifetime(), CVRMask, getAddressSpace(), getObjCGCAttr(), getObjCLifetime(), hasAddressSpace(), hasObjCGCAttr(), and hasObjCLifetime().

Referenced by operator+=().

◆ addRestrict()

void clang::Qualifiers::addRestrict ( )
inline

◆ addUnaligned()

void clang::Qualifiers::addUnaligned ( )
inline

Definition at line 323 of file Type.h.

◆ addVolatile()

void clang::Qualifiers::addVolatile ( )
inline

◆ compatiblyIncludes()

bool clang::Qualifiers::compatiblyIncludes ( Qualifiers  other) const
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 532 of file Type.h.

References CVRMask, getObjCGCAttr(), getObjCLifetime(), hasObjCGCAttr(), hasUnaligned(), and isAddressSpaceSupersetOf().

Referenced by AdoptQualifiers(), CheckOriginalCallArgDeduction(), checkPointerTypesForAssignment(), compareOverloads(), DeduceTemplateArgumentsByTypeMatch(), emitBadConversionNotes(), clang::Sema::handlerCanCatch(), clang::QualType::isMoreQualifiedThan(), clang::Sema::isObjCWritebackConversion(), isQualificationConversionStep(), TryReferenceInit(), and TryStaticCast().

◆ compatiblyIncludesObjCLifetime()

bool clang::Qualifiers::compatiblyIncludesObjCLifetime ( Qualifiers  other) const
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, or both are non-__weak and one is None (which can only happen in non-ARC modes).

Definition at line 553 of file Type.h.

References getObjCLifetime(), hasConst(), OCL_None, and OCL_Weak.

Referenced by CastsAwayConstness(), checkPointerTypesForAssignment(), and isQualificationConversionStep().

◆ empty()

bool clang::Qualifiers::empty ( ) const
inline

◆ fromCVRMask()

static Qualifiers clang::Qualifiers::fromCVRMask ( unsigned  CVR)
inlinestatic

◆ fromCVRUMask()

static Qualifiers clang::Qualifiers::fromCVRUMask ( unsigned  CVRU)
inlinestatic

Definition at line 246 of file Type.h.

References addCVRUQualifiers().

Referenced by clang::Sema::FindCompositePointerType().

◆ fromFastMask()

static Qualifiers clang::Qualifiers::fromFastMask ( unsigned  Mask)
inlinestatic

Definition at line 234 of file Type.h.

References addFastQualifiers().

◆ fromOpaqueValue()

static Qualifiers clang::Qualifiers::fromOpaqueValue ( unsigned  opaque)
inlinestatic

◆ getAddressSpace()

LangAS clang::Qualifiers::getAddressSpace ( ) const
inline

◆ getAddressSpaceAttributePrintValue()

unsigned clang::Qualifiers::getAddressSpaceAttributePrintValue ( ) const
inline

Get the address space attribute value to be printed by diagnostics.

Definition at line 385 of file Type.h.

References clang::Default, getAddressSpace(), hasTargetSpecificAddressSpace(), and clang::toTargetAddressSpace().

Referenced by clang::Sema::ActOnCXXDelete(), and clang::Sema::CheckAllocatedType().

◆ getAddrSpaceAsString()

std::string Qualifiers::getAddrSpaceAsString ( LangAS  AS)
static

◆ getAsOpaqueValue()

unsigned clang::Qualifiers::getAsOpaqueValue ( ) const
inline

◆ getAsString() [1/2]

std::string Qualifiers::getAsString ( ) const

◆ getAsString() [2/2]

std::string Qualifiers::getAsString ( const PrintingPolicy Policy) const

Definition at line 2326 of file TypePrinter.cpp.

References print().

◆ getCVRQualifiers()

unsigned clang::Qualifiers::getCVRQualifiers ( ) const
inline

◆ getCVRUQualifiers()

unsigned clang::Qualifiers::getCVRUQualifiers ( ) const
inline

Definition at line 296 of file Type.h.

References CVRMask.

Referenced by clang::Sema::FindCompositePointerType().

◆ getFastQualifiers()

unsigned clang::Qualifiers::getFastQualifiers ( ) const
inline

◆ getNonFastQualifiers()

Qualifiers clang::Qualifiers::getNonFastQualifiers ( ) const
inline

Definition at line 432 of file Type.h.

References setFastQualifiers().

◆ getObjCGCAttr()

GC clang::Qualifiers::getObjCGCAttr ( ) const
inline

◆ getObjCLifetime()

ObjCLifetime clang::Qualifiers::getObjCLifetime ( ) const
inline

◆ hasAddressSpace()

bool clang::Qualifiers::hasAddressSpace ( ) const
inline

◆ hasConst()

bool clang::Qualifiers::hasConst ( ) const
inline

◆ hasCVRQualifiers()

bool clang::Qualifiers::hasCVRQualifiers ( ) const
inline

Definition at line 294 of file Type.h.

References getCVRQualifiers().

Referenced by clang::Sema::ActOnCXXDelete().

◆ hasFastQualifiers()

bool clang::Qualifiers::hasFastQualifiers ( ) const
inline

Definition at line 411 of file Type.h.

References getFastQualifiers().

Referenced by clang::ExtQuals::Profile().

◆ hasNonFastQualifiers()

bool clang::Qualifiers::hasNonFastQualifiers ( ) const
inline

Return true if the set contains any qualifiers which require an ExtQuals node to be allocated.

Definition at line 431 of file Type.h.

Referenced by clang::QualifierCollector::apply(), clang::ASTContext::getQualifiedType(), and clang::ASTContext::removeAddrSpaceQualType().

◆ hasNonTrivialObjCLifetime()

bool clang::Qualifiers::hasNonTrivialObjCLifetime ( ) const
inline

True if the lifetime is neither None or ExplicitNone.

Definition at line 366 of file Type.h.

References getObjCLifetime(), and OCL_ExplicitNone.

Referenced by DeduceTemplateArgumentsByTypeMatch(), and clang::QualType::hasNonTrivialObjCLifetime().

◆ hasObjCGCAttr()

bool clang::Qualifiers::hasObjCGCAttr ( ) const
inline

◆ hasObjCLifetime()

bool clang::Qualifiers::hasObjCLifetime ( ) const
inline

◆ hasOnlyConst()

bool clang::Qualifiers::hasOnlyConst ( ) const
inline

Definition at line 265 of file Type.h.

References Const.

Referenced by TryObjectArgumentInitialization().

◆ hasOnlyRestrict()

bool clang::Qualifiers::hasOnlyRestrict ( ) const
inline

Definition at line 285 of file Type.h.

References Restrict.

◆ hasOnlyVolatile()

bool clang::Qualifiers::hasOnlyVolatile ( ) const
inline

Definition at line 275 of file Type.h.

References Volatile.

◆ hasQualifiers()

bool clang::Qualifiers::hasQualifiers ( ) const
inline

Return true if the set contains any qualifiers.

Definition at line 439 of file Type.h.

Referenced by clang::InitializationSequence::Diagnose(), operator bool(), and clang::ASTNodeTraverser< Derived, NodeDelegateType >::Visit().

◆ hasRestrict()

bool clang::Qualifiers::hasRestrict ( ) const
inline

◆ hasStrongOrWeakObjCLifetime()

bool clang::Qualifiers::hasStrongOrWeakObjCLifetime ( ) const
inline

True if the lifetime is either strong or weak.

Definition at line 372 of file Type.h.

References getObjCLifetime(), OCL_Strong, and OCL_Weak.

Referenced by clang::QualType::hasStrongOrWeakObjCLifetime().

◆ hasTargetSpecificAddressSpace()

bool clang::Qualifiers::hasTargetSpecificAddressSpace ( ) const
inline

Definition at line 381 of file Type.h.

References getAddressSpace(), and clang::isTargetAddressSpace().

Referenced by getAddressSpaceAttributePrintValue().

◆ hasUnaligned()

bool clang::Qualifiers::hasUnaligned ( ) const
inline

◆ hasVolatile()

bool clang::Qualifiers::hasVolatile ( ) const
inline

◆ isAddressSpaceSupersetOf() [1/2]

static bool clang::Qualifiers::isAddressSpaceSupersetOf ( LangAS  A,
LangAS  B 
)
inlinestatic

◆ isAddressSpaceSupersetOf() [2/2]

bool clang::Qualifiers::isAddressSpaceSupersetOf ( Qualifiers  other) const
inline

Returns true if the address space in these qualifiers is equal to or a superset of the address space in the argument qualifiers.

Definition at line 525 of file Type.h.

References getAddressSpace(), and isAddressSpaceSupersetOf().

◆ isEmptyWhenPrinted()

bool Qualifiers::isEmptyWhenPrinted ( const PrintingPolicy Policy) const

◆ isStrictSupersetOf()

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 60 of file Type.cpp.

References CVRMask, getAddressSpace(), getObjCGCAttr(), getObjCLifetime(), hasAddressSpace(), hasObjCGCAttr(), hasObjCLifetime(), and clang::Other.

Referenced by DeduceTemplateArgumentsByTypeMatch().

◆ operator bool()

clang::Qualifiers::operator bool ( ) const
inlineexplicit

Definition at line 573 of file Type.h.

References hasQualifiers().

◆ operator!=()

bool clang::Qualifiers::operator!= ( Qualifiers  Other) const
inline

Definition at line 571 of file Type.h.

References clang::Other.

◆ operator+=()

Qualifiers & clang::Qualifiers::operator+= ( Qualifiers  R)
inline

Definition at line 575 of file Type.h.

References addQualifiers().

◆ operator-=()

Qualifiers & clang::Qualifiers::operator-= ( Qualifiers  R)
inline

Definition at line 587 of file Type.h.

References removeQualifiers().

◆ operator==()

bool clang::Qualifiers::operator== ( Qualifiers  Other) const
inline

Definition at line 570 of file Type.h.

References clang::Other.

◆ print()

void Qualifiers::print ( raw_ostream &  OS,
const PrintingPolicy Policy,
bool  appendSpaceIfNonEmpty = false 
) const

◆ Profile()

void clang::Qualifiers::Profile ( llvm::FoldingSetNodeID &  ID) const
inline

Definition at line 607 of file Type.h.

References ID.

Referenced by clang::ExtQuals::Profile().

◆ removeAddressSpace()

void clang::Qualifiers::removeAddressSpace ( )
inline

◆ removeCommonQualifiers()

static Qualifiers clang::Qualifiers::removeCommonQualifiers ( Qualifiers L,
Qualifiers R 
)
inlinestatic

◆ removeConst()

void clang::Qualifiers::removeConst ( )
inline

◆ removeCVRQualifiers() [1/2]

void clang::Qualifiers::removeCVRQualifiers ( )
inline

Definition at line 306 of file Type.h.

References CVRMask, and removeCVRQualifiers().

Referenced by removeCVRQualifiers().

◆ removeCVRQualifiers() [2/2]

void clang::Qualifiers::removeCVRQualifiers ( unsigned  mask)
inline

◆ removeFastQualifiers() [1/2]

void clang::Qualifiers::removeFastQualifiers ( )
inline

Definition at line 421 of file Type.h.

References FastMask, and removeFastQualifiers().

Referenced by removeFastQualifiers().

◆ removeFastQualifiers() [2/2]

void clang::Qualifiers::removeFastQualifiers ( unsigned  mask)
inline

Definition at line 417 of file Type.h.

References FastMask.

◆ removeObjCGCAttr()

void clang::Qualifiers::removeObjCGCAttr ( )
inline

◆ removeObjCLifetime()

void clang::Qualifiers::removeObjCLifetime ( )
inline

◆ removeQualifiers()

void clang::Qualifiers::removeQualifiers ( Qualifiers  Q)
inline

Remove the qualifiers from the given set from this set.

Definition at line 460 of file Type.h.

References CVRMask, getAddressSpace(), getObjCGCAttr(), getObjCLifetime(), removeAddressSpace(), removeObjCGCAttr(), and removeObjCLifetime().

Referenced by operator-=().

◆ removeRestrict()

void clang::Qualifiers::removeRestrict ( )
inline

◆ removeUnaligned()

void clang::Qualifiers::removeUnaligned ( )
inline

◆ removeVolatile()

void clang::Qualifiers::removeVolatile ( )
inline

◆ setAddressSpace()

void clang::Qualifiers::setAddressSpace ( LangAS  space)
inline

◆ setCVRQualifiers()

void clang::Qualifiers::setCVRQualifiers ( unsigned  mask)
inline

Definition at line 298 of file Type.h.

References CVRMask.

Referenced by DeduceTemplateArgumentsByTypeMatch().

◆ setFastQualifiers()

void clang::Qualifiers::setFastQualifiers ( unsigned  mask)
inline

Definition at line 413 of file Type.h.

References FastMask.

Referenced by getNonFastQualifiers().

◆ setObjCGCAttr()

void clang::Qualifiers::setObjCGCAttr ( GC  type)
inline

◆ setObjCLifetime()

void clang::Qualifiers::setObjCLifetime ( ObjCLifetime  type)
inline

◆ setUnaligned()

void clang::Qualifiers::setUnaligned ( bool  flag)
inline

Definition at line 319 of file Type.h.

Referenced by clang::Sema::BuildQualifiedType().

◆ withConst()

Qualifiers clang::Qualifiers::withConst ( ) const
inline

Definition at line 268 of file Type.h.

References addConst().

Referenced by clang::QualifiersAndAtomic::withConst().

◆ withoutAddressSpace()

Qualifiers clang::Qualifiers::withoutAddressSpace ( ) const
inline

Definition at line 345 of file Type.h.

References removeAddressSpace().

Referenced by TryReferenceInitializationCore(), and TryReferenceListInitialization().

◆ withoutObjCGCAttr()

Qualifiers clang::Qualifiers::withoutObjCGCAttr ( ) const
inline

Definition at line 335 of file Type.h.

References removeObjCGCAttr().

Referenced by checkPointerTypesForAssignment().

◆ withoutObjCLifetime()

Qualifiers clang::Qualifiers::withoutObjCLifetime ( ) const
inline

◆ withRestrict()

Qualifiers clang::Qualifiers::withRestrict ( ) const
inline

Definition at line 288 of file Type.h.

References addRestrict().

Referenced by clang::QualifiersAndAtomic::withRestrict().

◆ withVolatile()

Qualifiers clang::Qualifiers::withVolatile ( ) const
inline

Definition at line 278 of file Type.h.

References addVolatile().

Referenced by clang::QualifiersAndAtomic::withVolatile().

Friends And Related Function Documentation

◆ operator+

Qualifiers operator+ ( Qualifiers  L,
Qualifiers  R 
)
friend

Definition at line 582 of file Type.h.

◆ operator-

Qualifiers operator- ( Qualifiers  L,
Qualifiers  R 
)
friend

Compute the difference between two qualifier sets.

Definition at line 593 of file Type.h.


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