chunk_pair chunks()

in fatal/container/circular_queue.h [102:124]


  chunk_pair chunks() const {
    FATAL_ASSUME_LE(offset_, queue_.size());
    auto const gap = queue_.size() - offset_;

    chunk_pair chunk;

    chunk[0].first = offset_;
    chunk[1].first = 0;

    if (gap < size_) {
      // elements both in [offset_, queue_.size() - 1] and [0, offset_)
      chunk[0].second = queue_.size();
      chunk[1].second = size_ - gap;
    } else {
      // all elements in [offset_, queue_.size())
      chunk[0].second = offset_ + size_;
      chunk[1].second = 0;
    }

    FATAL_ASSUME_LE(chunk[0].first, chunk[0].second);
    FATAL_ASSUME_LE(chunk[1].first, chunk[1].second);
    return chunk;
  }