diff options
Diffstat (limited to 'llvm/tools/llvm-pdbutil/StreamUtil.h')
-rw-r--r-- | llvm/tools/llvm-pdbutil/StreamUtil.h | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/llvm/tools/llvm-pdbutil/StreamUtil.h b/llvm/tools/llvm-pdbutil/StreamUtil.h index f49c0a0eceb..443267ca329 100644 --- a/llvm/tools/llvm-pdbutil/StreamUtil.h +++ b/llvm/tools/llvm-pdbutil/StreamUtil.h @@ -10,20 +10,41 @@ #ifndef LLVM_TOOLS_LLVMPDBDUMP_STREAMUTIL_H #define LLVM_TOOLS_LLVMPDBDUMP_STREAMUTIL_H +#include "llvm/ADT/Optional.h" #include "llvm/ADT/SmallVector.h" +#include "llvm/ADT/StringRef.h" #include <string> namespace llvm { namespace pdb { class PDBFile; -enum class StreamPurpose { NamedStream, ModuleStream, Other }; +enum class StreamPurpose { NamedStream, ModuleStream, Symbols, Other }; + +struct StreamInfo { +public: + StreamInfo() {} + + uint32_t getModuleIndex() const { return *ModuleIndex; } + StreamPurpose getPurpose() const { return Purpose; } + StringRef getShortName() const { return Name; } + uint32_t getStreamIndex() const { return StreamIndex; } + std::string getLongName() const; + + static StreamInfo createStream(StreamPurpose Purpose, StringRef Name, + uint32_t StreamIndex); + static StreamInfo createModuleStream(StringRef Module, uint32_t StreamIndex, + uint32_t Modi); + +private: + StreamPurpose Purpose; + uint32_t StreamIndex; + std::string Name; + Optional<uint32_t> ModuleIndex; +}; void discoverStreamPurposes(PDBFile &File, - SmallVectorImpl<std::string> &Purposes); -void discoverStreamPurposes( - PDBFile &File, - SmallVectorImpl<std::pair<StreamPurpose, std::string>> &Purposes); + SmallVectorImpl<StreamInfo> &Streams); } } |