X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Fblockallocator.h;h=2e3f3b28a7fb08d2ec809f35e2a75200651a1b8c;hb=1c1f8e0c2ce41bc6f943b450a510cc6bac7ef2e4;hp=95cb9108098d078dd70636c1a904a9c03f0814e9;hpb=110a865e1a175f304ecaaa7a31b6985cf0c12a99;p=r2c2.git diff --git a/source/libr2c2/blockallocator.h b/source/libr2c2/blockallocator.h index 95cb910..2e3f3b2 100644 --- a/source/libr2c2/blockallocator.h +++ b/source/libr2c2/blockallocator.h @@ -27,6 +27,9 @@ public: void hint(unsigned); }; + sigc::signal signal_advanced; + sigc::signal signal_rear_advanced; + private: struct BlockMatch; @@ -48,7 +51,7 @@ public: void set_active(bool); bool is_active() const { return active; } - void start_from(const BlockIter &); + bool start_from(const BlockIter &); void rewind_to(const Block &); void clear(); bool empty() const { return blocks.empty(); } @@ -65,7 +68,9 @@ public: private: void reserve_more(); bool reserve_block(const BlockIter &); - void advance_to(const Block *); + void advance_front(const Block *, bool); + void advance_front(const Sensor *); + void advance_back(); void release_blocks_begin(const BlockList::iterator &); void release_blocks_end(const BlockList::iterator &); void release_block(const BlockList::iterator &); @@ -78,6 +83,7 @@ private: void block_reserved(Block &, const Train *); void sensor_state_changed(Sensor &, Sensor::State); void update_next_sensor(Sensor *); + void halt_event(bool); public: void save(std::list &) const;