CIRCT 23.0.0git
Loading...
Searching...
No Matches
Public Member Functions | Private Attributes | List of all members
esi::SegmentedMessageDataCursor Class Reference

Cursor for incremental consumption of a SegmentedMessageData. More...

#include <Common.h>

Collaboration diagram for esi::SegmentedMessageDataCursor:
Collaboration graph
[legend]

Public Member Functions

 SegmentedMessageDataCursor (const SegmentedMessageData &msg)
 
std::span< const uint8_t > remaining () const
 Contiguous span from current position to end of current segment.
 
void advance (size_t n)
 Advance by n bytes, crossing segment boundaries as needed.
 
bool done () const
 True when all segments have been consumed.
 
void reset ()
 Reset to the beginning.
 

Private Attributes

const SegmentedMessageDatamsg
 
size_t segIdx = 0
 
size_t offset = 0
 

Detailed Description

Cursor for incremental consumption of a SegmentedMessageData.

Tracks position across segment boundaries. Backends store this alongside a unique_ptr<SegmentedMessageData> for partial writes.

Deliberately a separate class (not embedded in SegmentedMessageData) so that generated types have no hidden members — their layout matches the hardware wire format exactly.

Definition at line 215 of file Common.h.

Constructor & Destructor Documentation

◆ SegmentedMessageDataCursor()

esi::SegmentedMessageDataCursor::SegmentedMessageDataCursor ( const SegmentedMessageData msg)
inline

Definition at line 217 of file Common.h.

Member Function Documentation

◆ advance()

void SegmentedMessageDataCursor::advance ( size_t  n)

Advance by n bytes, crossing segment boundaries as needed.

Definition at line 93 of file Common.cpp.

References done(), msg, offset, segIdx, esi::SegmentedMessageData::segment(), and esi::Segment::size.

◆ done()

bool SegmentedMessageDataCursor::done ( ) const

True when all segments have been consumed.

Definition at line 113 of file Common.cpp.

References msg, esi::SegmentedMessageData::numSegments(), and segIdx.

Referenced by advance().

◆ remaining()

std::span< const uint8_t > SegmentedMessageDataCursor::remaining ( ) const

Contiguous span from current position to end of current segment.

Definition at line 79 of file Common.cpp.

References esi::Segment::data, msg, esi::SegmentedMessageData::numSegments(), offset, segIdx, esi::SegmentedMessageData::segment(), and esi::Segment::size.

◆ reset()

void SegmentedMessageDataCursor::reset ( )

Reset to the beginning.

Definition at line 117 of file Common.cpp.

References offset, and segIdx.

Member Data Documentation

◆ msg

const SegmentedMessageData& esi::SegmentedMessageDataCursor::msg
private

Definition at line 232 of file Common.h.

Referenced by advance(), done(), and remaining().

◆ offset

size_t esi::SegmentedMessageDataCursor::offset = 0
private

Definition at line 234 of file Common.h.

Referenced by advance(), remaining(), and reset().

◆ segIdx

size_t esi::SegmentedMessageDataCursor::segIdx = 0
private

Definition at line 233 of file Common.h.

Referenced by advance(), done(), remaining(), and reset().


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