X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Fzone.h;h=647a6195e2dcac73567a15d934b6ea4379f17d74;hb=9a2fd67cec715e371e293be638b126e0d1b2148d;hp=86a36e8a45951bafd307ad4f031eb856512efccc;hpb=c8c39c4256af8676d46063db88048d809cc2ee5f;p=r2c2.git diff --git a/source/libr2c2/zone.h b/source/libr2c2/zone.h index 86a36e8..647a619 100644 --- a/source/libr2c2/zone.h +++ b/source/libr2c2/zone.h @@ -21,12 +21,16 @@ public: private: virtual void finish(); void block(unsigned); + void direction_hint(unsigned, Direction); + void preferred_direction(Direction); }; private: std::string group; std::string qualifier; unsigned number; + int up_end; + Direction preferred_dir; public: Zone(Layout &); @@ -41,7 +45,24 @@ public: const std::string &get_qualifier() const { return qualifier; } unsigned get_number() const { return number; } +private: + virtual void on_track_added(Track &); + +public: + void set_direction_towards(Track &, Direction); + bool has_direction() const { return up_end>=0; } + void set_preferred_direction(Direction); + Direction get_preferred_direction() const { return preferred_dir; } + void clear_direction(); + virtual TrackIter iter_for(Track &, Direction) const; +private: + TrackIter next_iter(const TrackIter &) const; +public: + using TrackChain::get_end; + virtual TrackIter get_end(Direction) const; + void save(std::list &) const; + virtual Msp::DataFile::Statement save_reference() const; }; } // namespace R2C2