clang 10.0.0git

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

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

`#include "clang/AST/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
LangAS | getAddressSpace () const
const Type * | getBaseType () const
void | Profile (llvm::FoldingSetNodeID &ID) const

## Static Public Member Functions
static void | Profile (llvm::FoldingSetNodeID &ID, const Type *BaseType, Qualifiers Quals)

## Detailed Description

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 1338 of file Type.h.

## Constructor & Destructor Documentation

## ◆ ExtQuals()

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

Definition at line 1359 of file Type.h.

References clang::Qualifiers::hasFastQualifiers(), and clang::Qualifiers::hasNonFastQualifiers().

## Member Function Documentation

## ◆ getAddressSpace()

LangAS clang::ExtQuals::getAddressSpace | ( |  | ) | const
| inline

Definition at line 1380 of file Type.h.

References clang::Qualifiers::getAddressSpace().

## ◆ getBaseType()

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

Definition at line 1382 of file Type.h.

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

## ◆ getObjCGCAttr()

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

Definition at line 1372 of file Type.h.

References clang::Qualifiers::getObjCGCAttr().

## ◆ getObjCLifetime()

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

Definition at line 1375 of file Type.h.

References clang::Qualifiers::getObjCLifetime().

## ◆ getQualifiers()

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

Definition at line 1369 of file Type.h.

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

## ◆ hasAddressSpace()

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

Definition at line 1379 of file Type.h.

References clang::Qualifiers::hasAddressSpace().

## ◆ hasObjCGCAttr()

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

Definition at line 1371 of file Type.h.

References clang::Qualifiers::hasObjCGCAttr().

## ◆ hasObjCLifetime()

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

Definition at line 1374 of file Type.h.

References clang::Qualifiers::hasObjCLifetime().

## ◆ Profile() [1/2]

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

Definition at line 1385 of file Type.h.

Referenced by clang::ASTContext::getASTObjCImplementationLayout().

## ◆ Profile() [2/2]

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

Definition at line 1389 of file Type.h.

References clang::Qualifiers::hasFastQualifiers(), and clang::Qualifiers::Profile().

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

- include/clang/AST/Type.h