24ris::FrameIterator::FrameIterator(
ris::FramePtr frame,
bool write,
bool end) {
27 frameSize_ = (write_) ? frame_->getSize() : frame_->getPayload();
31 buff_ = frame_->endBuffer();
32 framePos_ = frameSize_;
33 buffBeg_ = frameSize_;
34 buffEnd_ = frameSize_;
37 buff_ = frame_->beginBuffer();
40 buffEnd_ = (write_) ? (*buff_)->getSize() : (*buff_)->getPayload();
41 data_ = (*buff_)->begin();
46void ris::FrameIterator::increment(int32_t diff) {
51 if (framePos_ >= buffEnd_) {
53 if (framePos_ >= frameSize_) {
54 framePos_ = frameSize_;
55 buffBeg_ = frameSize_;
56 buffEnd_ = frameSize_;
57 buff_ = frame_->endBuffer();
64 while (framePos_ >= buffEnd_) {
67 buffEnd_ += (write_) ? (*buff_)->getSize() : (*buff_)->getPayload();
71 data_ = (*buff_)->begin() + (framePos_ - buffBeg_);
77void ris::FrameIterator::decrement(int32_t diff) {
82 if (framePos_ < buffBeg_) {
85 framePos_ = frameSize_;
86 buffBeg_ = frameSize_;
87 buffEnd_ = frameSize_;
88 buff_ = frame_->endBuffer();
95 while (framePos_ < buffBeg_) {
98 buffBeg_ -= (write_) ? (*buff_)->getSize() : (*buff_)->getPayload();
102 data_ = (*buff_)->begin() + (framePos_ - buffBeg_);
107ris::FrameIterator::FrameIterator() {
118 this->write_ = rhs.write_;
119 this->frame_ = rhs.frame_;
120 this->framePos_ = rhs.framePos_;
121 this->frameSize_ = rhs.frameSize_;
122 this->buff_ = rhs.buff_;
123 this->buffBeg_ = rhs.buffBeg_;
124 this->buffEnd_ = rhs.buffEnd_;
125 this->data_ = rhs.data_;
132 ret.increment(buffEnd_ - framePos_);
137uint32_t ris::FrameIterator::remBuffer() {
138 return (buffEnd_ - framePos_);
142uint8_t& ris::FrameIterator::operator*()
const {
152uint8_t* ris::FrameIterator::ptr()
const {
157uint8_t ris::FrameIterator::operator[](
const uint32_t offset)
const {
159 ret.increment(
static_cast<int32_t
>(offset));
191 return (this->framePos_ != other.framePos_);
196 return (this->framePos_ == other.framePos_);
201 return (this->framePos_ < other.framePos_);
206 return (this->framePos_ > other.framePos_);
211 return (this->framePos_ <= other.framePos_);
216 return (this->framePos_ >= other.framePos_);
233 ret.decrement(-1 * sub);
235 ret.increment(-1 * sub);
241 return (this->framePos_ - other.framePos_);
247 this->increment(add);
249 this->decrement(add);
256 this->decrement(-1 * sub);
258 this->increment(-1 * sub);
Random-access byte iterator across a Frame payload.
std::shared_ptr< rogue::interfaces::stream::Frame > FramePtr
Shared pointer alias for Frame.