64 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
| //===- Streamutil.h - PDB stream utilities ----------------------*- 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
 | |
| //
 | |
| //===----------------------------------------------------------------------===//
 | |
| 
 | |
| #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,
 | |
|   Symbols,
 | |
|   PDB,
 | |
|   DBI,
 | |
|   TPI,
 | |
|   IPI,
 | |
|   GlobalHash,
 | |
|   PublicHash,
 | |
|   TpiHash,
 | |
|   IpiHash,
 | |
|   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<StreamInfo> &Streams);
 | |
| }
 | |
| }
 | |
| 
 | |
| #endif
 |