LLVM 20.0.0git
Public Types | Public Member Functions | List of all members
llvm::SimpleBitstreamCursor Class Reference

This represents a position within a bitstream. More...

#include "llvm/Bitstream/BitstreamReader.h"

Inheritance diagram for llvm::SimpleBitstreamCursor:
Inheritance graph
[legend]

Public Types

using word_t = size_t
 This is the current data we have pulled from the stream but have not returned to the client.
 

Public Member Functions

 SimpleBitstreamCursor ()=default
 
 SimpleBitstreamCursor (ArrayRef< uint8_t > BitcodeBytes)
 
 SimpleBitstreamCursor (StringRef BitcodeBytes)
 
 SimpleBitstreamCursor (MemoryBufferRef BitcodeBytes)
 
bool canSkipToPos (size_t pos) const
 
bool AtEndOfStream ()
 
uint64_t GetCurrentBitNo () const
 Return the bit # of the bit we are reading.
 
uint64_t getCurrentByteNo () const
 
ArrayRef< uint8_t > getBitcodeBytes () const
 
Error JumpToBit (uint64_t BitNo)
 Reset the stream to the specified bit number.
 
const uint8_t * getPointerToByte (uint64_t ByteNo, uint64_t NumBytes)
 Get a pointer into the bitstream at the specified byte offset.
 
const uint8_t * getPointerToBit (uint64_t BitNo, uint64_t NumBytes)
 Get a pointer into the bitstream at the specified bit offset.
 
Error fillCurWord ()
 
Expected< word_tRead (unsigned NumBits)
 
Expected< uint32_tReadVBR (const unsigned NumBits)
 
Expected< uint64_tReadVBR64 (const unsigned NumBits)
 
void SkipToFourByteBoundary ()
 
size_t SizeInBytes () const
 Return the size of the stream in bytes.
 
void skipToEnd ()
 Skip to the end of the file.
 
bool isSizePlausible (size_t Size) const
 Check whether a reservation of Size elements is plausible.
 

Detailed Description

This represents a position within a bitstream.

There may be multiple independent cursors reading within one bitstream, each maintaining their own local state.

Definition at line 79 of file BitstreamReader.h.

Member Typedef Documentation

◆ word_t

This is the current data we have pulled from the stream but have not returned to the client.

This is specifically and intentionally defined to follow the word size of the host machine for efficiency. We use word_t in places that are aware of this to make it perfectly explicit what is going on.

Definition at line 89 of file BitstreamReader.h.

Constructor & Destructor Documentation

◆ SimpleBitstreamCursor() [1/4]

llvm::SimpleBitstreamCursor::SimpleBitstreamCursor ( )
default

◆ SimpleBitstreamCursor() [2/4]

llvm::SimpleBitstreamCursor::SimpleBitstreamCursor ( ArrayRef< uint8_t >  BitcodeBytes)
inlineexplicit

Definition at line 100 of file BitstreamReader.h.

◆ SimpleBitstreamCursor() [3/4]

llvm::SimpleBitstreamCursor::SimpleBitstreamCursor ( StringRef  BitcodeBytes)
inlineexplicit

Definition at line 102 of file BitstreamReader.h.

◆ SimpleBitstreamCursor() [4/4]

llvm::SimpleBitstreamCursor::SimpleBitstreamCursor ( MemoryBufferRef  BitcodeBytes)
inlineexplicit

Definition at line 104 of file BitstreamReader.h.

Member Function Documentation

◆ AtEndOfStream()

bool llvm::SimpleBitstreamCursor::AtEndOfStream ( )
inline

Definition at line 112 of file BitstreamReader.h.

References llvm::ArrayRef< T >::size().

◆ canSkipToPos()

bool llvm::SimpleBitstreamCursor::canSkipToPos ( size_t  pos) const
inline

Definition at line 107 of file BitstreamReader.h.

References llvm::ArrayRef< T >::size().

Referenced by JumpToBit().

◆ fillCurWord()

Error llvm::SimpleBitstreamCursor::fillCurWord ( )
inline

◆ getBitcodeBytes()

ArrayRef< uint8_t > llvm::SimpleBitstreamCursor::getBitcodeBytes ( ) const
inline

Definition at line 124 of file BitstreamReader.h.

◆ GetCurrentBitNo()

uint64_t llvm::SimpleBitstreamCursor::GetCurrentBitNo ( ) const
inline

Return the bit # of the bit we are reading.

Definition at line 117 of file BitstreamReader.h.

Referenced by getCurrentByteNo().

◆ getCurrentByteNo()

uint64_t llvm::SimpleBitstreamCursor::getCurrentByteNo ( ) const
inline

Definition at line 122 of file BitstreamReader.h.

References GetCurrentBitNo().

◆ getPointerToBit()

const uint8_t * llvm::SimpleBitstreamCursor::getPointerToBit ( uint64_t  BitNo,
uint64_t  NumBytes 
)
inline

Get a pointer into the bitstream at the specified bit offset.

The bit offset must be on a byte boundary.

Definition at line 155 of file BitstreamReader.h.

References assert(), and getPointerToByte().

Referenced by llvm::BitstreamCursor::readRecord().

◆ getPointerToByte()

const uint8_t * llvm::SimpleBitstreamCursor::getPointerToByte ( uint64_t  ByteNo,
uint64_t  NumBytes 
)
inline

Get a pointer into the bitstream at the specified byte offset.

Definition at line 148 of file BitstreamReader.h.

References llvm::ArrayRef< T >::data().

Referenced by getPointerToBit().

◆ isSizePlausible()

bool llvm::SimpleBitstreamCursor::isSizePlausible ( size_t  Size) const
inline

Check whether a reservation of Size elements is plausible.

Definition at line 315 of file BitstreamReader.h.

References llvm::ArrayRef< T >::size(), and Size.

Referenced by llvm::BitstreamCursor::readRecord().

◆ JumpToBit()

Error llvm::SimpleBitstreamCursor::JumpToBit ( uint64_t  BitNo)
inline

Reset the stream to the specified bit number.

Definition at line 127 of file BitstreamReader.h.

References assert(), canSkipToPos(), llvm::Read, and llvm::Error::success().

◆ Read()

Expected< word_t > llvm::SimpleBitstreamCursor::Read ( unsigned  NumBits)
inline

Definition at line 185 of file BitstreamReader.h.

References assert(), llvm::createStringError(), fillCurWord(), and R2.

◆ ReadVBR()

Expected< uint32_t > llvm::SimpleBitstreamCursor::ReadVBR ( const unsigned  NumBits)
inline

◆ ReadVBR64()

Expected< uint64_t > llvm::SimpleBitstreamCursor::ReadVBR64 ( const unsigned  NumBits)
inline

◆ SizeInBytes()

size_t llvm::SimpleBitstreamCursor::SizeInBytes ( ) const
inline

Return the size of the stream in bytes.

Definition at line 309 of file BitstreamReader.h.

References llvm::ArrayRef< T >::size().

◆ skipToEnd()

void llvm::SimpleBitstreamCursor::skipToEnd ( )
inline

Skip to the end of the file.

Definition at line 312 of file BitstreamReader.h.

References llvm::ArrayRef< T >::size().

◆ SkipToFourByteBoundary()

void llvm::SimpleBitstreamCursor::SkipToFourByteBoundary ( )
inline

The documentation for this class was generated from the following file: