mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2026-01-31 01:35:20 +01:00
This converts remaining uses of ByteStream, which was still left in the symbol stream and type stream, to using the new StreamInterface zero-copy classes. RecordIterator is finally deleted, so this is the only way left now. Additionally, more error checking is added when iterating the various streams. With this, the transition to zero copy pdb access is complete. llvm-svn: 271101
41 lines
1.3 KiB
C++
41 lines
1.3 KiB
C++
//===- StreamInterface.h - Base interface for a stream of data --*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_DEBUGINFO_CODEVIEW_STREAMINTERFACE_H
|
|
#define LLVM_DEBUGINFO_CODEVIEW_STREAMINTERFACE_H
|
|
|
|
#include "llvm/ADT/ArrayRef.h"
|
|
#include "llvm/Support/Error.h"
|
|
#include <cstdint>
|
|
|
|
namespace llvm {
|
|
namespace codeview {
|
|
|
|
/// StreamInterface abstracts the notion of a data stream. This way, an
|
|
/// implementation could implement trivial reading from a contiguous memory
|
|
/// buffer or, as in the case of PDB files, reading from a set of possibly
|
|
/// discontiguous blocks. The implementation is required to return references
|
|
/// to stable memory, so if this is not possible (for example in the case of
|
|
/// a PDB file with discontiguous blocks, it must keep its own pool of temp
|
|
/// storage.
|
|
class StreamInterface {
|
|
public:
|
|
virtual ~StreamInterface() {}
|
|
|
|
virtual Error readBytes(uint32_t Offset, uint32_t Size,
|
|
ArrayRef<uint8_t> &Buffer) const = 0;
|
|
|
|
virtual uint32_t getLength() const = 0;
|
|
};
|
|
|
|
} // end namespace codeview
|
|
} // end namespace llvm
|
|
|
|
#endif // LLVM_DEBUGINFO_CODEVIEW_STREAMINTERFACE_H
|