X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Fblockallocator.h;h=c90b450bb52f11248ce1f8d016a0e73163e5b0a0;hb=dda1e6c8716b6ac70d63a3f6ff95474a8b8b7336;hp=3ef3fa047796e2cceaaef10fb92dfd76558ab53b;hpb=ca9d278f9472206ad9a01190dcef9f0eb1bcc274;p=r2c2.git diff --git a/source/libr2c2/blockallocator.h b/source/libr2c2/blockallocator.h index 3ef3fa0..c90b450 100644 --- a/source/libr2c2/blockallocator.h +++ b/source/libr2c2/blockallocator.h @@ -40,7 +40,7 @@ private: public: BlockAllocator(Train &); - void start_from(Block &, unsigned); + void start_from(const BlockIter &); void clear(); bool empty() const { return blocks.empty(); } void stop_at(const Block *); @@ -48,15 +48,25 @@ public: const BlockIter &first() const; const BlockIter &last() const; const BlockIter &last_current() const; + const BlockIter &iter_for(const Block &) const; - int get_entry_to_block(const Block &) const; + bool has_block(const Block &) const; + bool is_block_current(const Block &) const; +private: + BlockList::const_iterator find_block(const BlockList::const_iterator &, const BlockList::const_iterator &, const Block &) const; +public: void reserve_more(); +private: + bool reserve_block(const BlockIter &); +public: void release_until(const Block &); bool release_from(const Block &); void release_noncurrent(); private: - void release_blocks(const BlockList::iterator &, const BlockList::iterator &); + void release_blocks_begin(const BlockList::iterator &); + void release_blocks_end(const BlockList::iterator &); + void release_block(const BlockList::iterator &); public: void reverse();