Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/llvm/tools/llvm-pdbutil/StreamUtil.h
35260 views
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-exception
6
//
7
//===----------------------------------------------------------------------===//
8
9
#ifndef LLVM_TOOLS_LLVMPDBDUMP_STREAMUTIL_H
10
#define LLVM_TOOLS_LLVMPDBDUMP_STREAMUTIL_H
11
12
#include "llvm/ADT/SmallVector.h"
13
#include "llvm/ADT/StringRef.h"
14
15
#include <string>
16
#include <optional>
17
18
namespace llvm {
19
namespace pdb {
20
class PDBFile;
21
enum 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
Other
34
};
35
36
struct StreamInfo {
37
public:
38
StreamInfo() {}
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
51
private:
52
StreamPurpose Purpose;
53
uint32_t StreamIndex;
54
std::string Name;
55
std::optional<uint32_t> ModuleIndex;
56
};
57
58
void discoverStreamPurposes(PDBFile &File,
59
SmallVectorImpl<StreamInfo> &Streams);
60
}
61
}
62
63
#endif
64
65