LLVM  13.0.0git
Public Member Functions | Static Public Member Functions | Static Public Attributes | Friends | List of all members
llvm::codeview::TypeIndex Class Reference

A 32-bit type reference. More...

#include "llvm/DebugInfo/CodeView/TypeIndex.h"

Collaboration diagram for llvm::codeview::TypeIndex:
Collaboration graph
[legend]

Public Member Functions

 TypeIndex ()
 
 TypeIndex (uint32_t Index)
 
 TypeIndex (SimpleTypeKind Kind)
 
 TypeIndex (SimpleTypeKind Kind, SimpleTypeMode Mode)
 
uint32_t getIndex () const
 
void setIndex (uint32_t I)
 
bool isSimple () const
 
bool isDecoratedItemId () const
 
bool isNoneType () const
 
uint32_t toArrayIndex () const
 
TypeIndex removeDecoration ()
 
SimpleTypeKind getSimpleKind () const
 
SimpleTypeMode getSimpleMode () const
 
TypeIndex makeDirect () const
 
TypeIndexoperator+= (unsigned N)
 
TypeIndexoperator++ ()
 
TypeIndex operator++ (int)
 
TypeIndexoperator-= (unsigned N)
 
TypeIndexoperator-- ()
 
TypeIndex operator-- (int)
 

Static Public Member Functions

static TypeIndex fromArrayIndex (uint32_t Index)
 
static TypeIndex fromDecoratedArrayIndex (bool IsItem, uint32_t Index)
 
static TypeIndex None ()
 
static TypeIndex Void ()
 
static TypeIndex VoidPointer32 ()
 
static TypeIndex VoidPointer64 ()
 
static TypeIndex NullptrT ()
 
static TypeIndex SignedCharacter ()
 
static TypeIndex UnsignedCharacter ()
 
static TypeIndex NarrowCharacter ()
 
static TypeIndex WideCharacter ()
 
static TypeIndex Int16Short ()
 
static TypeIndex UInt16Short ()
 
static TypeIndex Int32 ()
 
static TypeIndex UInt32 ()
 
static TypeIndex Int32Long ()
 
static TypeIndex UInt32Long ()
 
static TypeIndex Int64 ()
 
static TypeIndex UInt64 ()
 
static TypeIndex Int64Quad ()
 
static TypeIndex UInt64Quad ()
 
static TypeIndex Float32 ()
 
static TypeIndex Float64 ()
 
static StringRef simpleTypeName (TypeIndex TI)
 

Static Public Attributes

static const uint32_t FirstNonSimpleIndex = 0x1000
 
static const uint32_t SimpleKindMask = 0x000000ff
 
static const uint32_t SimpleModeMask = 0x00000700
 
static const uint32_t DecoratedItemIdMask = 0x80000000
 

Friends

bool operator== (const TypeIndex &A, const TypeIndex &B)
 
bool operator!= (const TypeIndex &A, const TypeIndex &B)
 
bool operator< (const TypeIndex &A, const TypeIndex &B)
 
bool operator<= (const TypeIndex &A, const TypeIndex &B)
 
bool operator> (const TypeIndex &A, const TypeIndex &B)
 
bool operator>= (const TypeIndex &A, const TypeIndex &B)
 
TypeIndex operator+ (const TypeIndex &A, uint32_t N)
 
TypeIndex operator- (const TypeIndex &A, uint32_t N)
 
uint32_t operator- (const TypeIndex &A, const TypeIndex &B)
 

Detailed Description

A 32-bit type reference.

Types are indexed by their order of appearance in .debug$T plus 0x1000. Type indices less than 0x1000 are "simple" types, composed of a SimpleTypeMode byte followed by a SimpleTypeKind byte.

Definition at line 95 of file TypeIndex.h.

Constructor & Destructor Documentation

◆ TypeIndex() [1/4]

llvm::codeview::TypeIndex::TypeIndex ( )
inline

◆ TypeIndex() [2/4]

llvm::codeview::TypeIndex::TypeIndex ( uint32_t  Index)
inlineexplicit

Definition at line 104 of file TypeIndex.h.

◆ TypeIndex() [3/4]

llvm::codeview::TypeIndex::TypeIndex ( SimpleTypeKind  Kind)
inlineexplicit

Definition at line 105 of file TypeIndex.h.

◆ TypeIndex() [4/4]

llvm::codeview::TypeIndex::TypeIndex ( SimpleTypeKind  Kind,
SimpleTypeMode  Mode 
)
inline

Definition at line 107 of file TypeIndex.h.

Member Function Documentation

◆ Float32()

static TypeIndex llvm::codeview::TypeIndex::Float32 ( )
inlinestatic

Definition at line 194 of file TypeIndex.h.

References llvm::codeview::Float32, and TypeIndex().

◆ Float64()

static TypeIndex llvm::codeview::TypeIndex::Float64 ( )
inlinestatic

Definition at line 195 of file TypeIndex.h.

References llvm::codeview::Float64, and TypeIndex().

◆ fromArrayIndex()

static TypeIndex llvm::codeview::TypeIndex::fromArrayIndex ( uint32_t  Index)
inlinestatic

◆ fromDecoratedArrayIndex()

static TypeIndex llvm::codeview::TypeIndex::fromDecoratedArrayIndex ( bool  IsItem,
uint32_t  Index 
)
inlinestatic

Definition at line 126 of file TypeIndex.h.

References DecoratedItemIdMask, FirstNonSimpleIndex, and TypeIndex().

◆ getIndex()

uint32_t llvm::codeview::TypeIndex::getIndex ( ) const
inline

◆ getSimpleKind()

SimpleTypeKind llvm::codeview::TypeIndex::getSimpleKind ( ) const
inline

Definition at line 135 of file TypeIndex.h.

References assert(), isSimple(), and SimpleKindMask.

Referenced by makeDirect(), and simpleTypeName().

◆ getSimpleMode()

SimpleTypeMode llvm::codeview::TypeIndex::getSimpleMode ( ) const
inline

◆ Int16Short()

static TypeIndex llvm::codeview::TypeIndex::Int16Short ( )
inlinestatic

Definition at line 175 of file TypeIndex.h.

References llvm::codeview::Int16Short, and TypeIndex().

◆ Int32()

static TypeIndex llvm::codeview::TypeIndex::Int32 ( )
inlinestatic

Definition at line 181 of file TypeIndex.h.

References llvm::codeview::Int32, and TypeIndex().

◆ Int32Long()

static TypeIndex llvm::codeview::TypeIndex::Int32Long ( )
inlinestatic

Definition at line 183 of file TypeIndex.h.

References llvm::codeview::Int32Long, and TypeIndex().

◆ Int64()

static TypeIndex llvm::codeview::TypeIndex::Int64 ( )
inlinestatic

Definition at line 187 of file TypeIndex.h.

References llvm::codeview::Int64, and TypeIndex().

◆ Int64Quad()

static TypeIndex llvm::codeview::TypeIndex::Int64Quad ( )
inlinestatic

Definition at line 189 of file TypeIndex.h.

References llvm::codeview::Int64Quad, and TypeIndex().

◆ isDecoratedItemId()

bool llvm::codeview::TypeIndex::isDecoratedItemId ( ) const
inline

Definition at line 113 of file TypeIndex.h.

References DecoratedItemIdMask.

◆ isNoneType()

bool llvm::codeview::TypeIndex::isNoneType ( ) const
inline

◆ isSimple()

bool llvm::codeview::TypeIndex::isSimple ( ) const
inline

◆ makeDirect()

TypeIndex llvm::codeview::TypeIndex::makeDirect ( ) const
inline

Definition at line 145 of file TypeIndex.h.

References getSimpleKind().

Referenced by llvm::pdb::NativeTypePointer::getTypeId().

◆ NarrowCharacter()

static TypeIndex llvm::codeview::TypeIndex::NarrowCharacter ( )
inlinestatic

Definition at line 169 of file TypeIndex.h.

References llvm::codeview::NarrowCharacter, and TypeIndex().

◆ None()

static TypeIndex llvm::codeview::TypeIndex::None ( )
inlinestatic

Definition at line 147 of file TypeIndex.h.

References llvm::codeview::None, and TypeIndex().

Referenced by isNoneType().

◆ NullptrT()

static TypeIndex llvm::codeview::TypeIndex::NullptrT ( )
inlinestatic

Definition at line 156 of file TypeIndex.h.

References llvm::codeview::NearPointer, TypeIndex(), and llvm::codeview::Void.

Referenced by simpleTypeName().

◆ operator++() [1/2]

TypeIndex& llvm::codeview::TypeIndex::operator++ ( )
inline

Definition at line 202 of file TypeIndex.h.

Referenced by operator++().

◆ operator++() [2/2]

TypeIndex llvm::codeview::TypeIndex::operator++ ( int  )
inline

Definition at line 207 of file TypeIndex.h.

References llvm::codeview::Copy, and operator++().

◆ operator+=()

TypeIndex& llvm::codeview::TypeIndex::operator+= ( unsigned  N)
inline

Definition at line 197 of file TypeIndex.h.

References N.

◆ operator--() [1/2]

TypeIndex& llvm::codeview::TypeIndex::operator-- ( )
inline

Definition at line 219 of file TypeIndex.h.

Referenced by operator--().

◆ operator--() [2/2]

TypeIndex llvm::codeview::TypeIndex::operator-- ( int  )
inline

Definition at line 224 of file TypeIndex.h.

References llvm::codeview::Copy, and operator--().

◆ operator-=()

TypeIndex& llvm::codeview::TypeIndex::operator-= ( unsigned  N)
inline

Definition at line 213 of file TypeIndex.h.

References assert(), and N.

◆ removeDecoration()

TypeIndex llvm::codeview::TypeIndex::removeDecoration ( )
inline

Definition at line 131 of file TypeIndex.h.

References DecoratedItemIdMask, and TypeIndex().

◆ setIndex()

void llvm::codeview::TypeIndex::setIndex ( uint32_t  I)
inline

Definition at line 111 of file TypeIndex.h.

References I.

Referenced by llvm::codeview::CodeViewRecordIO::mapInteger().

◆ SignedCharacter()

static TypeIndex llvm::codeview::TypeIndex::SignedCharacter ( )
inlinestatic

Definition at line 163 of file TypeIndex.h.

References llvm::codeview::SignedCharacter, and TypeIndex().

◆ simpleTypeName()

StringRef TypeIndex::simpleTypeName ( TypeIndex  TI)
static

◆ toArrayIndex()

uint32_t llvm::codeview::TypeIndex::toArrayIndex ( ) const
inline

◆ UInt16Short()

static TypeIndex llvm::codeview::TypeIndex::UInt16Short ( )
inlinestatic

Definition at line 178 of file TypeIndex.h.

References TypeIndex(), and llvm::codeview::UInt16Short.

◆ UInt32()

static TypeIndex llvm::codeview::TypeIndex::UInt32 ( )
inlinestatic

Definition at line 182 of file TypeIndex.h.

References TypeIndex(), and llvm::codeview::UInt32.

◆ UInt32Long()

static TypeIndex llvm::codeview::TypeIndex::UInt32Long ( )
inlinestatic

Definition at line 184 of file TypeIndex.h.

References TypeIndex(), and llvm::codeview::UInt32Long.

◆ UInt64()

static TypeIndex llvm::codeview::TypeIndex::UInt64 ( )
inlinestatic

Definition at line 188 of file TypeIndex.h.

References TypeIndex(), and llvm::codeview::UInt64.

◆ UInt64Quad()

static TypeIndex llvm::codeview::TypeIndex::UInt64Quad ( )
inlinestatic

Definition at line 190 of file TypeIndex.h.

References TypeIndex(), and llvm::codeview::UInt64Quad.

◆ UnsignedCharacter()

static TypeIndex llvm::codeview::TypeIndex::UnsignedCharacter ( )
inlinestatic

Definition at line 166 of file TypeIndex.h.

References TypeIndex(), and llvm::codeview::UnsignedCharacter.

◆ Void()

static TypeIndex llvm::codeview::TypeIndex::Void ( )
inlinestatic

Definition at line 148 of file TypeIndex.h.

References TypeIndex(), and llvm::codeview::Void.

◆ VoidPointer32()

static TypeIndex llvm::codeview::TypeIndex::VoidPointer32 ( )
inlinestatic

Definition at line 149 of file TypeIndex.h.

References llvm::codeview::NearPointer32, TypeIndex(), and llvm::codeview::Void.

◆ VoidPointer64()

static TypeIndex llvm::codeview::TypeIndex::VoidPointer64 ( )
inlinestatic

Definition at line 152 of file TypeIndex.h.

References llvm::codeview::NearPointer64, TypeIndex(), and llvm::codeview::Void.

◆ WideCharacter()

static TypeIndex llvm::codeview::TypeIndex::WideCharacter ( )
inlinestatic

Definition at line 172 of file TypeIndex.h.

References TypeIndex(), and llvm::codeview::WideCharacter.

Friends And Related Function Documentation

◆ operator!=

bool operator!= ( const TypeIndex A,
const TypeIndex B 
)
friend

Definition at line 234 of file TypeIndex.h.

◆ operator+

TypeIndex operator+ ( const TypeIndex A,
uint32_t  N 
)
friend

Definition at line 254 of file TypeIndex.h.

◆ operator- [1/2]

uint32_t operator- ( const TypeIndex A,
const TypeIndex B 
)
friend

Definition at line 267 of file TypeIndex.h.

◆ operator- [2/2]

TypeIndex operator- ( const TypeIndex A,
uint32_t  N 
)
friend

Definition at line 260 of file TypeIndex.h.

◆ operator<

bool operator< ( const TypeIndex A,
const TypeIndex B 
)
friend

Definition at line 238 of file TypeIndex.h.

◆ operator<=

bool operator<= ( const TypeIndex A,
const TypeIndex B 
)
friend

Definition at line 242 of file TypeIndex.h.

◆ operator==

bool operator== ( const TypeIndex A,
const TypeIndex B 
)
friend

Definition at line 230 of file TypeIndex.h.

◆ operator>

bool operator> ( const TypeIndex A,
const TypeIndex B 
)
friend

Definition at line 246 of file TypeIndex.h.

◆ operator>=

bool operator>= ( const TypeIndex A,
const TypeIndex B 
)
friend

Definition at line 250 of file TypeIndex.h.

Member Data Documentation

◆ DecoratedItemIdMask

const uint32_t llvm::codeview::TypeIndex::DecoratedItemIdMask = 0x80000000
static

◆ FirstNonSimpleIndex

const uint32_t llvm::codeview::TypeIndex::FirstNonSimpleIndex = 0x1000
static

◆ SimpleKindMask

const uint32_t llvm::codeview::TypeIndex::SimpleKindMask = 0x000000ff
static

Definition at line 98 of file TypeIndex.h.

Referenced by getSimpleKind().

◆ SimpleModeMask

const uint32_t llvm::codeview::TypeIndex::SimpleModeMask = 0x00000700
static

Definition at line 99 of file TypeIndex.h.

Referenced by getSimpleMode().


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