clang  3.7.0
Public Member Functions | Static Public Member Functions | List of all members
clang::ExtQuals Class Reference

#include <Type.h>

Inheritance diagram for clang::ExtQuals:
[legend]
Collaboration diagram for clang::ExtQuals:
[legend]

Public Member Functions

 ExtQuals (const Type *baseType, QualType canon, Qualifiers quals)
 
Qualifiers getQualifiers () const
 
bool hasObjCGCAttr () const
 
Qualifiers::GC getObjCGCAttr () const
 
bool hasObjCLifetime () const
 
Qualifiers::ObjCLifetime getObjCLifetime () const
 
bool hasAddressSpace () const
 
unsigned getAddressSpace () const
 
const TypegetBaseType () const
 
void Profile (llvm::FoldingSetNodeID &ID) const
 

Static Public Member Functions

static void Profile (llvm::FoldingSetNodeID &ID, const Type *BaseType, Qualifiers Quals)
 

Detailed Description

ExtQuals - We can encode up to four bits in the low bits of a type pointer, but there are many more type qualifiers that we want to be able to apply to an arbitrary type. Therefore we have this struct, intended to be heap-allocated and used by QualType to store qualifiers.

The current design tags the 'const', 'restrict', and 'volatile' qualifiers in three low bits on the QualType pointer; a fourth bit records whether the pointer is an ExtQuals node. The extended qualifiers (address spaces, Objective-C GC attributes) are much more rare.

Definition at line 1137 of file Type.h.

Constructor & Destructor Documentation

clang::ExtQuals::ExtQuals ( const Type baseType,
QualType  canon,
Qualifiers  quals 
)
inline

Member Function Documentation

unsigned clang::ExtQuals::getAddressSpace ( ) const
inline

Definition at line 1180 of file Type.h.

References clang::Qualifiers::getAddressSpace().

const Type* clang::ExtQuals::getBaseType ( ) const
inline

Definition at line 1182 of file Type.h.

Referenced by Profile(), clang::QualType::split(), and clang::QualifierCollector::strip().

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

Definition at line 1172 of file Type.h.

References clang::Qualifiers::getObjCGCAttr().

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

Definition at line 1175 of file Type.h.

References clang::Qualifiers::getObjCLifetime().

Qualifiers clang::ExtQuals::getQualifiers ( ) const
inline

Definition at line 1169 of file Type.h.

Referenced by clang::QualType::split(), and clang::QualifierCollector::strip().

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

Definition at line 1179 of file Type.h.

References clang::Qualifiers::hasAddressSpace().

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

Definition at line 1171 of file Type.h.

References clang::Qualifiers::hasObjCGCAttr().

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

Definition at line 1174 of file Type.h.

References clang::Qualifiers::hasObjCLifetime().

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

Definition at line 1185 of file Type.h.

References getBaseType().

static void clang::ExtQuals::Profile ( llvm::FoldingSetNodeID &  ID,
const Type BaseType,
Qualifiers  Quals 
)
inlinestatic

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