blob: f98e715e6b1576c7a94f51081561f28c61956964 [file] [log] [blame]
Andrew Scull5e1ddfa2018-08-14 10:06:54 +01001//===- IMSFFile.h - Abstract base class for an MSF file ---------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef LLVM_DEBUGINFO_MSF_IMSFFILE_H
11#define LLVM_DEBUGINFO_MSF_IMSFFILE_H
12
13#include "llvm/ADT/ArrayRef.h"
14#include "llvm/Support/Endian.h"
15#include "llvm/Support/Error.h"
16#include <cstdint>
17
18namespace llvm {
19namespace msf {
20
21class IMSFFile {
22public:
23 virtual ~IMSFFile() = default;
24
25 virtual uint32_t getBlockSize() const = 0;
26 virtual uint32_t getBlockCount() const = 0;
27
28 virtual uint32_t getNumStreams() const = 0;
29 virtual uint32_t getStreamByteSize(uint32_t StreamIndex) const = 0;
30 virtual ArrayRef<support::ulittle32_t>
31 getStreamBlockList(uint32_t StreamIndex) const = 0;
32
33 virtual Expected<ArrayRef<uint8_t>> getBlockData(uint32_t BlockIndex,
34 uint32_t NumBytes) const = 0;
35 virtual Error setBlockData(uint32_t BlockIndex, uint32_t Offset,
36 ArrayRef<uint8_t> Data) const = 0;
37};
38
39} // end namespace msf
40} // end namespace llvm
41
42#endif // LLVM_DEBUGINFO_MSF_IMSFFILE_H