LLVM 20.0.0git
|
BinaryStreamRef is to BinaryStream what ArrayRef is to an Array. More...
#include "llvm/Support/BinaryStreamRef.h"
Friends | |
class | WritableBinaryStreamRef |
Additional Inherited Members | |
![]() | |
BinaryStreamRefBase ()=default | |
BinaryStreamRefBase (BinaryStream &BorrowedImpl) | |
BinaryStreamRefBase (std::shared_ptr< BinaryStream > SharedImpl, uint64_t Offset, std::optional< uint64_t > Length) | |
BinaryStreamRefBase (BinaryStream &BorrowedImpl, uint64_t Offset, std::optional< uint64_t > Length) | |
BinaryStreamRefBase (const BinaryStreamRefBase &Other)=default | |
BinaryStreamRefBase (BinaryStreamRefBase &&Other)=default | |
BinaryStreamRefBase & | operator= (const BinaryStreamRefBase &Other)=default |
BinaryStreamRefBase & | operator= (BinaryStreamRefBase &&Other)=default |
Error | checkOffsetForRead (uint64_t Offset, uint64_t DataSize) const |
![]() | |
std::shared_ptr< BinaryStream > | SharedImpl |
BinaryStream * | BorrowedImpl |
uint64_t | ViewOffset |
std::optional< uint64_t > | Length |
BinaryStreamRef is to BinaryStream what ArrayRef is to an Array.
It provides copy-semantics and read only access to a "window" of the underlying BinaryStream. Note that BinaryStreamRef is not a BinaryStream. That is to say, it does not inherit and override the methods of BinaryStream. In general, you should not pass around pointers or references to BinaryStreams and use inheritance to achieve polymorphism. Instead, you should pass around BinaryStreamRefs by value and achieve polymorphism that way.
Definition at line 153 of file BinaryStreamRef.h.
|
default |
BinaryStreamRef::BinaryStreamRef | ( | BinaryStream & | Stream | ) |
Definition at line 62 of file BinaryStreamRef.cpp.
BinaryStreamRef::BinaryStreamRef | ( | BinaryStream & | Stream, |
uint64_t | Offset, | ||
std::optional< uint64_t > | Length | ||
) |
Definition at line 64 of file BinaryStreamRef.cpp.
|
explicit |
Definition at line 67 of file BinaryStreamRef.cpp.
References Endian, and llvm::size().
|
explicit |
Definition at line 70 of file BinaryStreamRef.cpp.
References Endian.
|
default |
|
default |
|
delete |
|
default |
|
default |
Error BinaryStreamRef::readBytes | ( | uint64_t | Offset, |
uint64_t | Size, | ||
ArrayRef< uint8_t > & | Buffer | ||
) | const |
Given an Offset into this StreamRef and a Size, return a reference to a buffer owned by the stream.
Definition at line 73 of file BinaryStreamRef.cpp.
References llvm::BinaryStreamRefBase< BinaryStreamRef, BinaryStream >::BorrowedImpl, llvm::BinaryStreamRefBase< BinaryStreamRef, BinaryStream >::checkOffsetForRead(), llvm::Offset, llvm::BinaryStream::readBytes(), Size, and llvm::BinaryStreamRefBase< BinaryStreamRef, BinaryStream >::ViewOffset.
Referenced by llvm::FixedStreamArray< T >::operator[](), llvm::BinaryStreamReader::peek(), llvm::BinaryStreamReader::readBytes(), and llvm::msf::MappedBlockStream::readLongestContiguousChunk().
Error BinaryStreamRef::readLongestContiguousChunk | ( | uint64_t | Offset, |
ArrayRef< uint8_t > & | Buffer | ||
) | const |
Given an Offset into this BinaryStreamRef, return a reference to the largest buffer the stream could support without necessitating a copy.
Definition at line 80 of file BinaryStreamRef.cpp.
References llvm::BinaryStreamRefBase< BinaryStreamRef, BinaryStream >::BorrowedImpl, llvm::BinaryStreamRefBase< BinaryStreamRef, BinaryStream >::checkOffsetForRead(), llvm::BinaryStreamRefBase< BinaryStreamRef, BinaryStream >::getLength(), llvm::Offset, llvm::BinaryStream::readLongestContiguousChunk(), llvm::ArrayRef< T >::size(), llvm::ArrayRef< T >::slice(), llvm::Error::success(), and llvm::BinaryStreamRefBase< BinaryStreamRef, BinaryStream >::ViewOffset.
Referenced by llvm::BinaryStreamReader::readLongestContiguousChunk().
|
friend |
Definition at line 156 of file BinaryStreamRef.h.