LLVM  8.0.1
Public Member Functions | List of all members
llvm::codeview::TypeRecordMapping Class Reference

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

Inheritance diagram for llvm::codeview::TypeRecordMapping:
Inheritance graph
[legend]
Collaboration diagram for llvm::codeview::TypeRecordMapping:
Collaboration graph
[legend]

Public Member Functions

 TypeRecordMapping (BinaryStreamReader &Reader)
 
 TypeRecordMapping (BinaryStreamWriter &Writer)
 
Error visitTypeBegin (CVType &Record) override
 Paired begin/end actions for all types. More...
 
Error visitTypeEnd (CVType &Record) override
 
Error visitMemberBegin (CVMemberRecord &Record) override
 
Error visitMemberEnd (CVMemberRecord &Record) override
 
- Public Member Functions inherited from llvm::codeview::TypeVisitorCallbacks
virtual ~TypeVisitorCallbacks ()=default
 
virtual Error visitUnknownType (CVType &Record)
 Action to take on unknown types. By default, they are ignored. More...
 
virtual Error visitTypeBegin (CVType &Record, TypeIndex Index)
 
virtual Error visitUnknownMember (CVMemberRecord &Record)
 

Detailed Description

Definition at line 23 of file TypeRecordMapping.h.

Constructor & Destructor Documentation

◆ TypeRecordMapping() [1/2]

llvm::codeview::TypeRecordMapping::TypeRecordMapping ( BinaryStreamReader Reader)
inlineexplicit

Definition at line 25 of file TypeRecordMapping.h.

◆ TypeRecordMapping() [2/2]

llvm::codeview::TypeRecordMapping::TypeRecordMapping ( BinaryStreamWriter Writer)
inlineexplicit

Member Function Documentation

◆ visitMemberBegin()

Error TypeRecordMapping::visitMemberBegin ( CVMemberRecord Record)
overridevirtual

◆ visitMemberEnd()

Error TypeRecordMapping::visitMemberEnd ( CVMemberRecord Record)
overridevirtual

Reimplemented from llvm::codeview::TypeVisitorCallbacks.

Definition at line 126 of file TypeRecordMapping.cpp.

References llvm::codeview::TypeServer2Record::Age, llvm::codeview::ArgListRecord::ArgIndices, llvm::codeview::BuildInfoRecord::ArgIndices, llvm::codeview::ProcedureRecord::ArgumentList, llvm::codeview::MemberFunctionRecord::ArgumentList, assert(), llvm::codeview::MemberAttributes::Attrs, llvm::codeview::PointerRecord::Attrs, llvm::codeview::DataMemberRecord::Attrs, llvm::codeview::StaticDataMemberRecord::Attrs, llvm::codeview::EnumeratorRecord::Attrs, llvm::codeview::BaseClassRecord::Attrs, llvm::codeview::VirtualBaseClassRecord::Attrs, llvm::codeview::VirtualBaseClassRecord::BaseType, llvm::codeview::BitFieldRecord::BitOffset, llvm::codeview::BitFieldRecord::BitSize, llvm::codeview::Byte, llvm::codeview::ProcedureRecord::CallConv, llvm::codeview::MemberFunctionRecord::CallConv, llvm::codeview::MemberFunctionRecord::ClassType, llvm::codeview::MemberFuncIdRecord::ClassType, llvm::codeview::VFTableRecord::CompleteClass, llvm::codeview::MemberPointerInfo::ContainingType, llvm::codeview::ListContinuationRecord::ContinuationIndex, llvm::codeview::FieldListRecord::Data, llvm::codeview::ClassRecord::DerivationList, llvm::codeview::EC, llvm::codeview::ArrayRecord::ElementType, error, llvm::codeview::TagRecord::FieldList, llvm::codeview::DataMemberRecord::FieldOffset, llvm::codeview::MemberFuncIdRecord::FunctionType, llvm::codeview::FuncIdRecord::FunctionType, llvm::codeview::VFTableShapeRecord::getSlots(), llvm::codeview::TypeServer2Record::Guid, llvm::codeview::TagRecord::hasUniqueName(), I, llvm::codeview::StringIdRecord::Id, llvm::codeview::ArrayRecord::IndexType, llvm::codeview::PointerRecord::isPointerToMember(), llvm::codeview::UdtSourceLineRecord::LineNumber, llvm::codeview::UdtModSourceLineRecord::LineNumber, mapNameAndUniqueName(), llvm::codeview::TagRecord::MemberCount, llvm::codeview::PointerRecord::MemberInfo, llvm::codeview::OverloadedMethodRecord::MethodList, llvm::codeview::VFTableRecord::MethodNames, llvm::codeview::MethodOverloadListRecord::Methods, llvm::codeview::LabelRecord::Mode, llvm::codeview::ModifierRecord::ModifiedType, llvm::codeview::ModifierRecord::Modifiers, llvm::codeview::UdtModSourceLineRecord::Module, N, Name, llvm::codeview::MemberFuncIdRecord::Name, llvm::codeview::NestedTypeRecord::Name, llvm::codeview::ArrayRecord::Name, llvm::codeview::TagRecord::Name, llvm::codeview::TypeServer2Record::Name, llvm::codeview::FuncIdRecord::Name, llvm::codeview::OverloadedMethodRecord::Name, llvm::codeview::DataMemberRecord::Name, llvm::codeview::StaticDataMemberRecord::Name, llvm::codeview::EnumeratorRecord::Name, llvm::codeview::OverloadedMethodRecord::NumOverloads, llvm::codeview::BaseClassRecord::Offset, llvm::codeview::ProcedureRecord::Options, llvm::codeview::MemberFunctionRecord::Options, llvm::codeview::TagRecord::Options, llvm::codeview::VFTableRecord::OverriddenVFTable, llvm::codeview::ProcedureRecord::ParameterCount, llvm::codeview::MemberFunctionRecord::ParameterCount, llvm::codeview::FuncIdRecord::ParentScope, llvm::codeview::PrecompRecord::PrecompFilePath, llvm::codeview::PointerRecord::ReferentType, llvm::codeview::MemberPointerInfo::Representation, llvm::codeview::ProcedureRecord::ReturnType, llvm::codeview::MemberFunctionRecord::ReturnType, llvm::codeview::PrecompRecord::Signature, llvm::codeview::EndPrecompRecord::Signature, Size, llvm::ArrayRef< T >::size(), llvm::codeview::ArrayRecord::Size, llvm::codeview::ClassRecord::Size, llvm::codeview::UnionRecord::Size, llvm::codeview::VFTableShapeRecord::Slots, llvm::codeview::UdtSourceLineRecord::SourceFile, llvm::codeview::UdtModSourceLineRecord::SourceFile, llvm::codeview::PrecompRecord::StartTypeIndex, llvm::codeview::StringIdRecord::String, llvm::codeview::StringListRecord::StringIndices, llvm::Error::success(), llvm::codeview::MemberFunctionRecord::ThisPointerAdjustment, llvm::codeview::MemberFunctionRecord::ThisType, llvm::codeview::CVRecord< Kind >::Type, llvm::codeview::NestedTypeRecord::Type, llvm::codeview::BitFieldRecord::Type, llvm::codeview::DataMemberRecord::Type, llvm::codeview::StaticDataMemberRecord::Type, llvm::codeview::VFPtrRecord::Type, llvm::codeview::BaseClassRecord::Type, llvm::codeview::PrecompRecord::TypesCount, llvm::codeview::UdtSourceLineRecord::UDT, llvm::codeview::UdtModSourceLineRecord::UDT, llvm::codeview::EnumRecord::UnderlyingType, llvm::codeview::TagRecord::UniqueName, llvm::codeview::EnumeratorRecord::Value, llvm::codeview::VirtualBaseClassRecord::VBPtrOffset, llvm::codeview::VirtualBaseClassRecord::VBPtrType, llvm::codeview::VFTableRecord::VFPtrOffset, visitKnownMember(), visitKnownRecord(), llvm::codeview::VirtualBaseClassRecord::VTableIndex, and llvm::codeview::ClassRecord::VTableShape.

Referenced by TypeRecordMapping(), and llvm::codeview::ContinuationRecordBuilder::writeMemberType().

◆ visitTypeBegin()

Error TypeRecordMapping::visitTypeBegin ( CVType Record)
overridevirtual

Paired begin/end actions for all types.

Receives all record data, including the fixed-length record prefix. visitTypeBegin() should return the type of the Record, or an error if it cannot be determined. Exactly one of the two visitTypeBegin methods will be called, depending on whether records are being visited sequentially or randomly. An implementation should be prepared to handle both (or assert if it can't handle random access visitation).

Reimplemented from llvm::codeview::TypeVisitorCallbacks.

Definition at line 84 of file TypeRecordMapping.cpp.

References assert(), error, llvm::codeview::MaxRecordLength, llvm::Error::success(), and llvm::codeview::CVRecord< Kind >::Type.

Referenced by llvm::codeview::ContinuationRecordBuilder::begin(), llvm::codeview::SimpleTypeSerializer::serialize(), and TypeRecordMapping().

◆ visitTypeEnd()

Error TypeRecordMapping::visitTypeEnd ( CVType Record)
overridevirtual

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