LLVM 19.0.0git
Public Member Functions | Public Attributes | List of all members
llvm::logicalview::LVLogicalVisitor Class Referencefinal

#include "llvm/DebugInfo/LogicalView/Readers/LVCodeViewVisitor.h"

Public Member Functions

 LVLogicalVisitor (LVCodeViewReader *Reader, ScopedPrinter &W, llvm::pdb::InputFile &Input)
 
void setInput (std::shared_ptr< llvm::pdb::InputFile > TypeServer)
 
void setInput (std::shared_ptr< LazyRandomTypeCollection > PrecompHeader)
 
void addInlineeInfo (TypeIndex TI, uint32_t LineNumber, StringRef Filename)
 
void printTypeIndex (StringRef FieldName, TypeIndex TI, uint32_t StreamIdx)
 
void printMemberAttributes (MemberAttributes Attrs)
 
void printMemberAttributes (MemberAccess Access, MethodKind Kind, MethodOptions Options)
 
LVElementcreateElement (TypeLeafKind Kind)
 
LVElementcreateElement (SymbolKind Kind)
 
LVElementcreateElement (TypeIndex TI, TypeLeafKind Kind)
 
Error inlineSiteAnnotation (LVScope *AbstractFunction, LVScope *InlinedFunction, InlineSiteSym &InlineSite)
 
void pushScope (LVScope *Scope)
 
void popScope ()
 
void closeScope ()
 
void setRoot (LVScope *Root)
 
void addElement (LVScope *Scope, bool IsCompileUnit)
 
void addElement (LVSymbol *Symbol)
 
void addElement (LVType *Type)
 
std::string getCompileUnitName ()
 
void setCompileUnitName (std::string Name)
 
LVElementgetElement (uint32_t StreamIdx, TypeIndex TI, LVScope *Parent=nullptr)
 
LVSharedgetShared ()
 
LVScopegetReaderScope () const
 
void printTypeBegin (CVType &Record, TypeIndex TI, LVElement *Element, uint32_t StreamIdx)
 
void printTypeEnd (CVType &Record)
 
void printMemberBegin (CVMemberRecord &Record, TypeIndex TI, LVElement *Element, uint32_t StreamIdx)
 
void printMemberEnd (CVMemberRecord &Record)
 
void startProcessArgumentList ()
 
void stopProcessArgumentList ()
 
void processFiles ()
 
void processLines ()
 
void processNamespaces ()
 
void printRecords (raw_ostream &OS) const
 
Error visitUnknownType (CVType &Record, TypeIndex TI)
 
Error visitKnownRecord (CVType &Record, ArgListRecord &Args, TypeIndex TI, LVElement *Element)
 
Error visitKnownRecord (CVType &Record, ArrayRecord &AT, TypeIndex TI, LVElement *Element)
 
Error visitKnownRecord (CVType &Record, BitFieldRecord &BF, TypeIndex TI, LVElement *Element)
 
Error visitKnownRecord (CVType &Record, BuildInfoRecord &BI, TypeIndex TI, LVElement *Element)
 
Error visitKnownRecord (CVType &Record, ClassRecord &Class, TypeIndex TI, LVElement *Element)
 
Error visitKnownRecord (CVType &Record, EnumRecord &Enum, TypeIndex TI, LVElement *Element)
 
Error visitKnownRecord (CVType &Record, FieldListRecord &FieldList, TypeIndex TI, LVElement *Element)
 
Error visitKnownRecord (CVType &Record, FuncIdRecord &Func, TypeIndex TI, LVElement *Element)
 
Error visitKnownRecord (CVType &Record, LabelRecord &LR, TypeIndex TI, LVElement *Element)
 
Error visitKnownRecord (CVType &Record, ModifierRecord &Mod, TypeIndex TI, LVElement *Element)
 
Error visitKnownRecord (CVType &Record, MemberFuncIdRecord &Id, TypeIndex TI, LVElement *Element)
 
Error visitKnownRecord (CVType &Record, MemberFunctionRecord &MF, TypeIndex TI, LVElement *Element)
 
Error visitKnownRecord (CVType &Record, MethodOverloadListRecord &Overloads, TypeIndex TI, LVElement *Element)
 
Error visitKnownRecord (CVType &Record, PointerRecord &Ptr, TypeIndex TI, LVElement *Element)
 
Error visitKnownRecord (CVType &Record, ProcedureRecord &Proc, TypeIndex TI, LVElement *Element)
 
Error visitKnownRecord (CVType &Record, UnionRecord &Union, TypeIndex TI, LVElement *Element)
 
Error visitKnownRecord (CVType &Record, TypeServer2Record &TS, TypeIndex TI, LVElement *Element)
 
Error visitKnownRecord (CVType &Record, VFTableRecord &VFT, TypeIndex TI, LVElement *Element)
 
Error visitKnownRecord (CVType &Record, VFTableShapeRecord &Shape, TypeIndex TI, LVElement *Element)
 
Error visitKnownRecord (CVType &Record, StringListRecord &Strings, TypeIndex TI, LVElement *Element)
 
Error visitKnownRecord (CVType &Record, StringIdRecord &String, TypeIndex TI, LVElement *Element)
 
Error visitKnownRecord (CVType &Record, UdtSourceLineRecord &SourceLine, TypeIndex TI, LVElement *Element)
 
Error visitKnownRecord (CVType &Record, UdtModSourceLineRecord &ModSourceLine, TypeIndex TI, LVElement *Element)
 
Error visitKnownRecord (CVType &Record, PrecompRecord &Precomp, TypeIndex TI, LVElement *Element)
 
Error visitKnownRecord (CVType &Record, EndPrecompRecord &EndPrecomp, TypeIndex TI, LVElement *Element)
 
Error visitUnknownMember (CVMemberRecord &Record, TypeIndex TI)
 
Error visitKnownMember (CVMemberRecord &Record, BaseClassRecord &Base, TypeIndex TI, LVElement *Element)
 
Error visitKnownMember (CVMemberRecord &Record, DataMemberRecord &Field, TypeIndex TI, LVElement *Element)
 
Error visitKnownMember (CVMemberRecord &Record, EnumeratorRecord &Enum, TypeIndex TI, LVElement *Element)
 
Error visitKnownMember (CVMemberRecord &Record, ListContinuationRecord &Cont, TypeIndex TI, LVElement *Element)
 
Error visitKnownMember (CVMemberRecord &Record, NestedTypeRecord &Nested, TypeIndex TI, LVElement *Element)
 
Error visitKnownMember (CVMemberRecord &Record, OneMethodRecord &Method, TypeIndex TI, LVElement *Element)
 
Error visitKnownMember (CVMemberRecord &Record, OverloadedMethodRecord &Method, TypeIndex TI, LVElement *Element)
 
Error visitKnownMember (CVMemberRecord &Record, StaticDataMemberRecord &Field, TypeIndex TI, LVElement *Element)
 
Error visitKnownMember (CVMemberRecord &Record, VFPtrRecord &VFTable, TypeIndex TI, LVElement *Element)
 
Error visitKnownMember (CVMemberRecord &Record, VirtualBaseClassRecord &Base, TypeIndex TI, LVElement *Element)
 
template<typename T >
Error visitKnownMember (CVMemberRecord &Record, TypeVisitorCallbacks &Callbacks, TypeIndex TI, LVElement *Element)
 
template<typename T >
Error visitKnownRecord (CVType &Record, TypeIndex TI, LVElement *Element)
 
Error visitMemberRecord (CVMemberRecord &Record, TypeVisitorCallbacks &Callbacks, TypeIndex TI, LVElement *Element)
 
Error finishVisitation (CVType &Record, TypeIndex TI, LVElement *Element)
 

Public Attributes

LVElementCurrentElement = nullptr
 
LVScopeCurrentScope = nullptr
 
LVSymbolCurrentSymbol = nullptr
 
LVTypeCurrentType = nullptr
 

Detailed Description

Definition at line 232 of file LVCodeViewVisitor.h.

Constructor & Destructor Documentation

◆ LVLogicalVisitor()

LVLogicalVisitor::LVLogicalVisitor ( LVCodeViewReader Reader,
ScopedPrinter W,
llvm::pdb::InputFile Input 
)

Definition at line 1736 of file LVCodeViewVisitor.cpp.

Member Function Documentation

◆ addElement() [1/3]

void LVLogicalVisitor::addElement ( LVScope Scope,
bool  IsCompileUnit 
)

◆ addElement() [2/3]

void LVLogicalVisitor::addElement ( LVSymbol Symbol)

Definition at line 2974 of file LVCodeViewVisitor.cpp.

References llvm::logicalview::LVScope::addElement().

◆ addElement() [3/3]

void LVLogicalVisitor::addElement ( LVType Type)

Definition at line 2978 of file LVCodeViewVisitor.cpp.

References llvm::logicalview::LVScope::addElement().

◆ addInlineeInfo()

void llvm::logicalview::LVLogicalVisitor::addInlineeInfo ( TypeIndex  TI,
uint32_t  LineNumber,
StringRef  Filename 
)
inline

Definition at line 302 of file LVCodeViewVisitor.h.

References llvm::logicalview::Filename.

◆ closeScope()

void llvm::logicalview::LVLogicalVisitor::closeScope ( )
inline

Definition at line 331 of file LVCodeViewVisitor.h.

References popScope().

◆ createElement() [1/3]

LVElement * LVLogicalVisitor::createElement ( SymbolKind  Kind)

◆ createElement() [2/3]

LVElement * LVLogicalVisitor::createElement ( TypeIndex  TI,
TypeLeafKind  Kind 
)

◆ createElement() [3/3]

LVElement * LVLogicalVisitor::createElement ( TypeLeafKind  Kind)

◆ finishVisitation()

Error LVLogicalVisitor::finishVisitation ( CVType Record,
TypeIndex  TI,
LVElement Element 
)

◆ getCompileUnitName()

std::string llvm::logicalview::LVLogicalVisitor::getCompileUnitName ( )
inline

Definition at line 343 of file LVCodeViewVisitor.h.

◆ getElement()

LVElement * LVLogicalVisitor::getElement ( uint32_t  StreamIdx,
TypeIndex  TI,
LVScope Parent = nullptr 
)

◆ getReaderScope()

LVScope * llvm::logicalview::LVLogicalVisitor::getReaderScope ( ) const
inline

◆ getShared()

LVShared * llvm::logicalview::LVLogicalVisitor::getShared ( )
inline

Definition at line 350 of file LVCodeViewVisitor.h.

◆ inlineSiteAnnotation()

Error LVLogicalVisitor::inlineSiteAnnotation ( LVScope AbstractFunction,
LVScope InlinedFunction,
InlineSiteSym InlineSite 
)

◆ popScope()

void llvm::logicalview::LVLogicalVisitor::popScope ( )
inline

◆ printMemberAttributes() [1/2]

void llvm::logicalview::LVLogicalVisitor::printMemberAttributes ( MemberAccess  Access,
MethodKind  Kind,
MethodOptions  Options 
)

◆ printMemberAttributes() [2/2]

void llvm::logicalview::LVLogicalVisitor::printMemberAttributes ( MemberAttributes  Attrs)

◆ printMemberBegin()

void LVLogicalVisitor::printMemberBegin ( CVMemberRecord Record,
TypeIndex  TI,
LVElement Element,
uint32_t  StreamIdx 
)

◆ printMemberEnd()

void LVLogicalVisitor::printMemberEnd ( CVMemberRecord Record)

◆ printRecords()

void LVLogicalVisitor::printRecords ( raw_ostream OS) const

◆ printTypeBegin()

void LVLogicalVisitor::printTypeBegin ( CVType Record,
TypeIndex  TI,
LVElement Element,
uint32_t  StreamIdx 
)

◆ printTypeEnd()

void LVLogicalVisitor::printTypeEnd ( CVType Record)

◆ printTypeIndex()

void LVLogicalVisitor::printTypeIndex ( StringRef  FieldName,
TypeIndex  TI,
uint32_t  StreamIdx 
)

◆ processFiles()

void LVLogicalVisitor::processFiles ( )

Definition at line 3394 of file LVCodeViewVisitor.cpp.

◆ processLines()

void LVLogicalVisitor::processLines ( )

◆ processNamespaces()

void LVLogicalVisitor::processNamespaces ( )

Definition at line 3389 of file LVCodeViewVisitor.cpp.

◆ pushScope()

void llvm::logicalview::LVLogicalVisitor::pushScope ( LVScope Scope)
inline

Definition at line 321 of file LVCodeViewVisitor.h.

Referenced by addElement().

◆ setCompileUnitName()

void llvm::logicalview::LVLogicalVisitor::setCompileUnitName ( std::string  Name)
inline

◆ setInput() [1/2]

void llvm::logicalview::LVLogicalVisitor::setInput ( std::shared_ptr< LazyRandomTypeCollection PrecompHeader)
inline

Definition at line 298 of file LVCodeViewVisitor.h.

◆ setInput() [2/2]

void llvm::logicalview::LVLogicalVisitor::setInput ( std::shared_ptr< llvm::pdb::InputFile TypeServer)
inline

Definition at line 295 of file LVCodeViewVisitor.h.

◆ setRoot()

void llvm::logicalview::LVLogicalVisitor::setRoot ( LVScope Root)
inline

◆ startProcessArgumentList()

void llvm::logicalview::LVLogicalVisitor::startProcessArgumentList ( )
inline

◆ stopProcessArgumentList()

void llvm::logicalview::LVLogicalVisitor::stopProcessArgumentList ( )
inline

◆ visitKnownMember() [1/11]

Error LVLogicalVisitor::visitKnownMember ( CVMemberRecord Record,
BaseClassRecord Base,
TypeIndex  TI,
LVElement Element 
)

◆ visitKnownMember() [2/11]

Error LVLogicalVisitor::visitKnownMember ( CVMemberRecord Record,
DataMemberRecord Field,
TypeIndex  TI,
LVElement Element 
)

◆ visitKnownMember() [3/11]

Error LVLogicalVisitor::visitKnownMember ( CVMemberRecord Record,
EnumeratorRecord Enum,
TypeIndex  TI,
LVElement Element 
)

◆ visitKnownMember() [4/11]

Error LVLogicalVisitor::visitKnownMember ( CVMemberRecord Record,
ListContinuationRecord Cont,
TypeIndex  TI,
LVElement Element 
)

◆ visitKnownMember() [5/11]

Error LVLogicalVisitor::visitKnownMember ( CVMemberRecord Record,
NestedTypeRecord Nested,
TypeIndex  TI,
LVElement Element 
)

◆ visitKnownMember() [6/11]

Error LVLogicalVisitor::visitKnownMember ( CVMemberRecord Record,
OneMethodRecord Method,
TypeIndex  TI,
LVElement Element 
)

◆ visitKnownMember() [7/11]

Error LVLogicalVisitor::visitKnownMember ( CVMemberRecord Record,
OverloadedMethodRecord Method,
TypeIndex  TI,
LVElement Element 
)

◆ visitKnownMember() [8/11]

Error LVLogicalVisitor::visitKnownMember ( CVMemberRecord Record,
StaticDataMemberRecord Field,
TypeIndex  TI,
LVElement Element 
)

◆ visitKnownMember() [9/11]

template<typename T >
Error llvm::logicalview::LVLogicalVisitor::visitKnownMember ( CVMemberRecord Record,
TypeVisitorCallbacks Callbacks,
TypeIndex  TI,
LVElement Element 
)
inline

Definition at line 445 of file LVCodeViewVisitor.h.

References llvm::Error::success(), and visitKnownMember().

◆ visitKnownMember() [10/11]

Error LVLogicalVisitor::visitKnownMember ( CVMemberRecord Record,
VFPtrRecord VFTable,
TypeIndex  TI,
LVElement Element 
)

◆ visitKnownMember() [11/11]

Error LVLogicalVisitor::visitKnownMember ( CVMemberRecord Record,
VirtualBaseClassRecord Base,
TypeIndex  TI,
LVElement Element 
)

◆ visitKnownRecord() [1/26]

Error LVLogicalVisitor::visitKnownRecord ( CVType Record,
ArgListRecord Args,
TypeIndex  TI,
LVElement Element 
)

◆ visitKnownRecord() [2/26]

Error LVLogicalVisitor::visitKnownRecord ( CVType Record,
ArrayRecord AT,
TypeIndex  TI,
LVElement Element 
)

◆ visitKnownRecord() [3/26]

Error LVLogicalVisitor::visitKnownRecord ( CVType Record,
BitFieldRecord BF,
TypeIndex  TI,
LVElement Element 
)

◆ visitKnownRecord() [4/26]

Error LVLogicalVisitor::visitKnownRecord ( CVType Record,
BuildInfoRecord BI,
TypeIndex  TI,
LVElement Element 
)

◆ visitKnownRecord() [5/26]

Error LVLogicalVisitor::visitKnownRecord ( CVType Record,
ClassRecord Class,
TypeIndex  TI,
LVElement Element 
)

◆ visitKnownRecord() [6/26]

Error LVLogicalVisitor::visitKnownRecord ( CVType Record,
EndPrecompRecord EndPrecomp,
TypeIndex  TI,
LVElement Element 
)

◆ visitKnownRecord() [7/26]

Error LVLogicalVisitor::visitKnownRecord ( CVType Record,
EnumRecord Enum,
TypeIndex  TI,
LVElement Element 
)

◆ visitKnownRecord() [8/26]

Error LVLogicalVisitor::visitKnownRecord ( CVType Record,
FieldListRecord FieldList,
TypeIndex  TI,
LVElement Element 
)

◆ visitKnownRecord() [9/26]

Error LVLogicalVisitor::visitKnownRecord ( CVType Record,
FuncIdRecord Func,
TypeIndex  TI,
LVElement Element 
)

◆ visitKnownRecord() [10/26]

Error LVLogicalVisitor::visitKnownRecord ( CVType Record,
LabelRecord LR,
TypeIndex  TI,
LVElement Element 
)

◆ visitKnownRecord() [11/26]

Error LVLogicalVisitor::visitKnownRecord ( CVType Record,
MemberFuncIdRecord Id,
TypeIndex  TI,
LVElement Element 
)

◆ visitKnownRecord() [12/26]

Error LVLogicalVisitor::visitKnownRecord ( CVType Record,
MemberFunctionRecord MF,
TypeIndex  TI,
LVElement Element 
)

◆ visitKnownRecord() [13/26]

Error LVLogicalVisitor::visitKnownRecord ( CVType Record,
MethodOverloadListRecord Overloads,
TypeIndex  TI,
LVElement Element 
)

◆ visitKnownRecord() [14/26]

Error LVLogicalVisitor::visitKnownRecord ( CVType Record,
ModifierRecord Mod,
TypeIndex  TI,
LVElement Element 
)

◆ visitKnownRecord() [15/26]

Error LVLogicalVisitor::visitKnownRecord ( CVType Record,
PointerRecord Ptr,
TypeIndex  TI,
LVElement Element 
)

◆ visitKnownRecord() [16/26]

Error LVLogicalVisitor::visitKnownRecord ( CVType Record,
PrecompRecord Precomp,
TypeIndex  TI,
LVElement Element 
)

◆ visitKnownRecord() [17/26]

Error LVLogicalVisitor::visitKnownRecord ( CVType Record,
ProcedureRecord Proc,
TypeIndex  TI,
LVElement Element 
)

◆ visitKnownRecord() [18/26]

Error LVLogicalVisitor::visitKnownRecord ( CVType Record,
StringIdRecord String,
TypeIndex  TI,
LVElement Element 
)

◆ visitKnownRecord() [19/26]

Error LVLogicalVisitor::visitKnownRecord ( CVType Record,
StringListRecord Strings,
TypeIndex  TI,
LVElement Element 
)

◆ visitKnownRecord() [20/26]

template<typename T >
Error llvm::logicalview::LVLogicalVisitor::visitKnownRecord ( CVType Record,
TypeIndex  TI,
LVElement Element 
)
inline

◆ visitKnownRecord() [21/26]

Error LVLogicalVisitor::visitKnownRecord ( CVType Record,
TypeServer2Record TS,
TypeIndex  TI,
LVElement Element 
)

◆ visitKnownRecord() [22/26]

Error LVLogicalVisitor::visitKnownRecord ( CVType Record,
UdtModSourceLineRecord ModSourceLine,
TypeIndex  TI,
LVElement Element 
)

◆ visitKnownRecord() [23/26]

Error LVLogicalVisitor::visitKnownRecord ( CVType Record,
UdtSourceLineRecord SourceLine,
TypeIndex  TI,
LVElement Element 
)

◆ visitKnownRecord() [24/26]

Error LVLogicalVisitor::visitKnownRecord ( CVType Record,
UnionRecord Union,
TypeIndex  TI,
LVElement Element 
)

◆ visitKnownRecord() [25/26]

Error LVLogicalVisitor::visitKnownRecord ( CVType Record,
VFTableRecord VFT,
TypeIndex  TI,
LVElement Element 
)

◆ visitKnownRecord() [26/26]

Error LVLogicalVisitor::visitKnownRecord ( CVType Record,
VFTableShapeRecord Shape,
TypeIndex  TI,
LVElement Element 
)

◆ visitMemberRecord()

Error LVLogicalVisitor::visitMemberRecord ( CVMemberRecord Record,
TypeVisitorCallbacks Callbacks,
TypeIndex  TI,
LVElement Element 
)

◆ visitUnknownMember()

Error LVLogicalVisitor::visitUnknownMember ( CVMemberRecord Record,
TypeIndex  TI 
)

◆ visitUnknownType()

Error LVLogicalVisitor::visitUnknownType ( CVType Record,
TypeIndex  TI 
)

Member Data Documentation

◆ CurrentElement

LVElement* llvm::logicalview::LVLogicalVisitor::CurrentElement = nullptr

◆ CurrentScope

LVScope* llvm::logicalview::LVLogicalVisitor::CurrentScope = nullptr

◆ CurrentSymbol

LVSymbol* llvm::logicalview::LVLogicalVisitor::CurrentSymbol = nullptr

◆ CurrentType

LVType* llvm::logicalview::LVLogicalVisitor::CurrentType = nullptr

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