Mercurial > hg > CbC > CbC_llvm
view tools/llvm-pdbutil/StreamUtil.h @ 171:66f3bfe93da9
git version 2c4ca6832fa6b306ee6a7010bfb80a3f2596f824
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 May 2020 11:07:02 +0900 |
parents | |
children |
line wrap: on
line source
//===- 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