aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/llvm12/lib/DebugInfo/PDB/Native/NativeEnumSymbols.cpp
blob: c861163b3f2b83026151f2695e53a80f78c9cbe8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//==- NativeEnumSymbols.cpp - Native Symbol Enumerator impl ------*- 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/Native/NativeEnumSymbols.h" 
 
#include "llvm/DebugInfo/PDB/IPDBEnumChildren.h" 
#include "llvm/DebugInfo/PDB/Native/NativeSession.h" 
#include "llvm/DebugInfo/PDB/Native/NativeTypeEnum.h" 
#include "llvm/DebugInfo/PDB/PDBSymbol.h" 
#include "llvm/DebugInfo/PDB/PDBSymbolTypeEnum.h" 
 
using namespace llvm; 
using namespace llvm::codeview; 
using namespace llvm::pdb; 
 
NativeEnumSymbols::NativeEnumSymbols(NativeSession &PDBSession, 
                                     std::vector<SymIndexId> Symbols) 
    : Symbols(std::move(Symbols)), Index(0), Session(PDBSession) {} 
 
uint32_t NativeEnumSymbols::getChildCount() const { 
  return static_cast<uint32_t>(Symbols.size()); 
} 
 
std::unique_ptr<PDBSymbol> 
NativeEnumSymbols::getChildAtIndex(uint32_t N) const { 
  if (N < Symbols.size()) { 
    return Session.getSymbolCache().getSymbolById(Symbols[N]); 
  } 
  return nullptr; 
} 
 
std::unique_ptr<PDBSymbol> NativeEnumSymbols::getNext() { 
  return getChildAtIndex(Index++); 
} 
 
void NativeEnumSymbols::reset() { Index = 0; }