mirror of
https://github.com/RPCS3/llvm.git
synced 2025-04-06 23:31:48 +00: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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271101 91177308-0d34-0410-b5e6-96231b3b80d8
38 lines
1.2 KiB
C++
38 lines
1.2 KiB
C++
//===- ByteStream.cpp - Reads stream data from a byte sequence ------------===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "llvm/DebugInfo/CodeView/ByteStream.h"
|
|
#include "llvm/DebugInfo/CodeView/CodeViewError.h"
|
|
#include "llvm/DebugInfo/CodeView/StreamReader.h"
|
|
#include <cstring>
|
|
|
|
using namespace llvm;
|
|
using namespace llvm::codeview;
|
|
|
|
ByteStream::ByteStream() {}
|
|
|
|
ByteStream::ByteStream(ArrayRef<uint8_t> Data) : Data(Data) {}
|
|
|
|
ByteStream::~ByteStream() {}
|
|
|
|
Error ByteStream::readBytes(uint32_t Offset, uint32_t Size,
|
|
ArrayRef<uint8_t> &Buffer) const {
|
|
if (Data.size() < Size + Offset)
|
|
return make_error<CodeViewError>(cv_error_code::insufficient_buffer);
|
|
Buffer = Data.slice(Offset, Size);
|
|
return Error::success();
|
|
}
|
|
|
|
uint32_t ByteStream::getLength() const { return Data.size(); }
|
|
|
|
StringRef ByteStream::str() const {
|
|
const char *CharData = reinterpret_cast<const char *>(Data.data());
|
|
return StringRef(CharData, Data.size());
|
|
}
|