void hoge(HogeTarget pTarget, IBinaryReader reader)
 Xxx newReader(reader, 3) // 3 = 読み取り可能バイト数

 pTarget->onRead(newReader);
 newReader->skip(newReader->getReadableSize()); // skip(x) = x バイトを読み捨てる
}

bool HogeTarget::onRead(Xxx reader) {
 if (reader->getReadableSize() < 4) {
  return false;
 } else {
  this.value = reader->readLong();
 }
}

c++とかjavaに似せたコードで書くとこんな感じ?