brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · 6b8c13f Raw
64 lines · c
1//===- Streamutil.h - PDB stream utilities ----------------------*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLVM_TOOLS_LLVMPDBDUMP_STREAMUTIL_H10#define LLVM_TOOLS_LLVMPDBDUMP_STREAMUTIL_H11 12#include "llvm/ADT/SmallVector.h"13#include "llvm/ADT/StringRef.h"14 15#include <string>16#include <optional>17 18namespace llvm {19namespace pdb {20class PDBFile;21enum class StreamPurpose {22  NamedStream,23  ModuleStream,24  Symbols,25  PDB,26  DBI,27  TPI,28  IPI,29  GlobalHash,30  PublicHash,31  TpiHash,32  IpiHash,33  Other34};35 36struct StreamInfo {37public:38  StreamInfo() = default;39 40  uint32_t getModuleIndex() const { return *ModuleIndex; }41  StreamPurpose getPurpose() const { return Purpose; }42  StringRef getShortName() const { return Name; }43  uint32_t getStreamIndex() const { return StreamIndex; }44  std::string getLongName() const;45 46  static StreamInfo createStream(StreamPurpose Purpose, StringRef Name,47                                 uint32_t StreamIndex);48  static StreamInfo createModuleStream(StringRef Module, uint32_t StreamIndex,49                                       uint32_t Modi);50 51private:52  StreamPurpose Purpose;53  uint32_t StreamIndex;54  std::string Name;55  std::optional<uint32_t> ModuleIndex;56};57 58void discoverStreamPurposes(PDBFile &File,59                            SmallVectorImpl<StreamInfo> &Streams);60}61}62 63#endif64