1 //===- DIATable.cpp - DIA implementation of IPDBTable -----------*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #include "llvm/DebugInfo/PDB/DIA/DIATable.h" 11 #include "llvm/DebugInfo/PDB/DIA/DIAUtils.h" 12 13 using namespace llvm; 14 using namespace llvm::pdb; 15 DIATable(CComPtr<IDiaTable> DiaTable)16DIATable::DIATable(CComPtr<IDiaTable> DiaTable) : Table(DiaTable) {} 17 getItemCount() const18uint32_t DIATable::getItemCount() const { 19 LONG Count = 0; 20 return (S_OK == Table->get_Count(&Count)) ? Count : 0; 21 } 22 getName() const23std::string DIATable::getName() const { 24 return invokeBstrMethod(*Table, &IDiaTable::get_name); 25 } 26 getTableType() const27PDB_TableType DIATable::getTableType() const { 28 CComBSTR Name16; 29 if (S_OK != Table->get_name(&Name16)) 30 return PDB_TableType::TableInvalid; 31 32 if (Name16 == DiaTable_Symbols) 33 return PDB_TableType::Symbols; 34 if (Name16 == DiaTable_SrcFiles) 35 return PDB_TableType::SourceFiles; 36 if (Name16 == DiaTable_Sections) 37 return PDB_TableType::SectionContribs; 38 if (Name16 == DiaTable_LineNums) 39 return PDB_TableType::LineNumbers; 40 if (Name16 == DiaTable_SegMap) 41 return PDB_TableType::Segments; 42 if (Name16 == DiaTable_InjSrc) 43 return PDB_TableType::InjectedSources; 44 if (Name16 == DiaTable_FrameData) 45 return PDB_TableType::FrameData; 46 if (Name16 == DiaTable_InputAssemblyFiles) 47 return PDB_TableType::InputAssemblyFiles; 48 if (Name16 == DiaTable_Dbg) 49 return PDB_TableType::Dbg; 50 return PDB_TableType::TableInvalid; 51 } 52