X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Fblockallocator.h;h=6eecbd4e2c531eb0cbbcc49363a0910598fca774;hb=9f4f169affcedcf249e935f93e0a15ed60232f6a;hp=7ff5d77f2cf538b4effc9fa4c40826b9a8cb956d;hpb=54392d65e2053d1eacb4cfcc435f1013993f2973;p=r2c2.git diff --git a/source/libr2c2/blockallocator.h b/source/libr2c2/blockallocator.h index 7ff5d77..6eecbd4 100644 --- a/source/libr2c2/blockallocator.h +++ b/source/libr2c2/blockallocator.h @@ -3,8 +3,8 @@ #include #include -#include "block.h" #include "blockiter.h" +#include "sensor.h" namespace R2C2 { @@ -48,22 +48,31 @@ 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(); - void release_until(const Block &); +private: + bool reserve_block(const BlockIter &); +public: 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(); private: void turnout_path_changed(Track &); void block_reserved(Block &, const Train *); - void block_state_changed(Block &, Block::State); + void sensor_state_changed(Sensor &, Sensor::State); public: void save(std::list &) const;