//==- MappedBlockStream.h - Discontiguous stream data in an MSF --*- 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_DEBUGINFO_MSF_MAPPEDBLOCKSTREAM_H #define LLVM_DEBUGINFO_MSF_MAPPEDBLOCKSTREAM_H #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/DenseMap.h" #include "llvm/DebugInfo/MSF/MSFCommon.h" #include "llvm/Support/Allocator.h" #include "llvm/Support/BinaryStream.h" #include "llvm/Support/BinaryStreamRef.h" #include "llvm/Support/Endian.h" #include "llvm/Support/Error.h" #include <cstdint> #include <memory> #include <vector> namespace llvm { namespace msf { /// MappedBlockStream represents data stored in an MSF file into chunks of a /// particular size (called the Block Size), and whose chunks may not be /// necessarily contiguous. The arrangement of these chunks MSF the file /// is described by some other metadata contained within the MSF file. In /// the case of a standard MSF Stream, the layout of the stream's blocks /// is described by the MSF "directory", but in the case of the directory /// itself, the layout is described by an array at a fixed location within /// the MSF. MappedBlockStream provides methods for reading from and writing /// to one of these streams transparently, as if it were a contiguous sequence /// of bytes. class MappedBlockStream : public BinaryStream { … }; class WritableMappedBlockStream : public WritableBinaryStream { … }; } // namespace msf } // end namespace llvm #endif // LLVM_DEBUGINFO_MSF_MAPPEDBLOCKSTREAM_H