003 File Manager
Current Path:
/usr/src/contrib/llvm-project/llvm/lib/DebugInfo/PDB/DIA
usr
/
src
/
contrib
/
llvm-project
/
llvm
/
lib
/
DebugInfo
/
PDB
/
DIA
/
📁
..
📄
DIADataStream.cpp
(1.7 KB)
📄
DIAEnumDebugStreams.cpp
(1.47 KB)
📄
DIAEnumFrameData.cpp
(1.33 KB)
📄
DIAEnumInjectedSources.cpp
(1.45 KB)
📄
DIAEnumLineNumbers.cpp
(1.38 KB)
📄
DIAEnumSectionContribs.cpp
(1.54 KB)
📄
DIAEnumSourceFiles.cpp
(1.45 KB)
📄
DIAEnumSymbols.cpp
(1.65 KB)
📄
DIAEnumTables.cpp
(1.31 KB)
📄
DIAError.cpp
(1.56 KB)
📄
DIAFrameData.cpp
(1.68 KB)
📄
DIAInjectedSource.cpp
(2.07 KB)
📄
DIALineNumber.cpp
(2.24 KB)
📄
DIARawSymbol.cpp
(41.45 KB)
📄
DIASectionContrib.cpp
(4.07 KB)
📄
DIASession.cpp
(14.87 KB)
📄
DIASourceFile.cpp
(2.23 KB)
📄
DIATable.cpp
(1.61 KB)
Editing: DIADataStream.cpp
//===- DIADataStream.cpp - DIA implementation of IPDBDataStream -*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #include "llvm/DebugInfo/PDB/DIA/DIADataStream.h" #include "llvm/DebugInfo/PDB/DIA/DIAUtils.h" using namespace llvm; using namespace llvm::pdb; DIADataStream::DIADataStream(CComPtr<IDiaEnumDebugStreamData> DiaStreamData) : StreamData(DiaStreamData) {} uint32_t DIADataStream::getRecordCount() const { LONG Count = 0; return (S_OK == StreamData->get_Count(&Count)) ? Count : 0; } std::string DIADataStream::getName() const { return invokeBstrMethod(*StreamData, &IDiaEnumDebugStreamData::get_name); } llvm::Optional<DIADataStream::RecordType> DIADataStream::getItemAtIndex(uint32_t Index) const { RecordType Record; DWORD RecordSize = 0; StreamData->Item(Index, 0, &RecordSize, nullptr); if (RecordSize == 0) return llvm::Optional<RecordType>(); Record.resize(RecordSize); if (S_OK != StreamData->Item(Index, RecordSize, &RecordSize, &Record[0])) return llvm::Optional<RecordType>(); return Record; } bool DIADataStream::getNext(RecordType &Record) { Record.clear(); DWORD RecordSize = 0; ULONG CountFetched = 0; StreamData->Next(1, 0, &RecordSize, nullptr, &CountFetched); if (RecordSize == 0) return false; Record.resize(RecordSize); if (S_OK == StreamData->Next(1, RecordSize, &RecordSize, &Record[0], &CountFetched)) return false; return true; } void DIADataStream::reset() { StreamData->Reset(); }
Upload File
Create Folder