blob: 0e2e80707361c0ed8f699b08b888100aea566e38 [file] [log] [blame]
Zachary Turner435ba4a2017-03-13 23:28:25 +00001//===- Streamutil.h - PDB stream utilities ----------------------*- 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#ifndef LLVM_TOOLS_LLVMPDBDUMP_STREAMUTIL_H
11#define LLVM_TOOLS_LLVMPDBDUMP_STREAMUTIL_H
12
Zachary Turnerb6d8c582017-08-21 14:53:25 +000013#include "llvm/ADT/Optional.h"
Zachary Turner435ba4a2017-03-13 23:28:25 +000014#include "llvm/ADT/SmallVector.h"
Zachary Turnerb6d8c582017-08-21 14:53:25 +000015#include "llvm/ADT/StringRef.h"
Zachary Turner435ba4a2017-03-13 23:28:25 +000016
17#include <string>
18
19namespace llvm {
20namespace pdb {
21class PDBFile;
Zachary Turner21ff13f2018-03-30 17:16:50 +000022enum class StreamPurpose {
23 NamedStream,
24 ModuleStream,
25 Symbols,
26 PDB,
27 DBI,
28 TPI,
29 IPI,
30 GlobalHash,
31 PublicHash,
32 TpiHash,
33 IpiHash,
34 Other
35};
Zachary Turnerb6d8c582017-08-21 14:53:25 +000036
37struct StreamInfo {
38public:
39 StreamInfo() {}
40
41 uint32_t getModuleIndex() const { return *ModuleIndex; }
42 StreamPurpose getPurpose() const { return Purpose; }
43 StringRef getShortName() const { return Name; }
44 uint32_t getStreamIndex() const { return StreamIndex; }
45 std::string getLongName() const;
46
47 static StreamInfo createStream(StreamPurpose Purpose, StringRef Name,
48 uint32_t StreamIndex);
49 static StreamInfo createModuleStream(StringRef Module, uint32_t StreamIndex,
50 uint32_t Modi);
51
52private:
53 StreamPurpose Purpose;
54 uint32_t StreamIndex;
55 std::string Name;
56 Optional<uint32_t> ModuleIndex;
57};
Zachary Turner8f321092017-07-10 19:16:49 +000058
Zachary Turner435ba4a2017-03-13 23:28:25 +000059void discoverStreamPurposes(PDBFile &File,
Zachary Turnerb6d8c582017-08-21 14:53:25 +000060 SmallVectorImpl<StreamInfo> &Streams);
Zachary Turner435ba4a2017-03-13 23:28:25 +000061}
62}
63
64#endif