X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;ds=sidebyside;f=source%2Flibr2c2%2Ftrackchain.h;h=7102e5659445062765793ac5d349894f36a649db;hb=2225814e69913aecaee53b0505d1b92197621b10;hp=729a89cd9c6910882fe641721f86751e93df21e0;hpb=72cc2ffc70f78d255297c3b8aa19618806f62a94;p=r2c2.git diff --git a/source/libr2c2/trackchain.h b/source/libr2c2/trackchain.h index 729a89c..7102e56 100644 --- a/source/libr2c2/trackchain.h +++ b/source/libr2c2/trackchain.h @@ -4,6 +4,7 @@ #include #include #include +#include #include "trackiter.h" namespace R2C2 { @@ -22,6 +23,13 @@ public: class TrackChain: public sigc::trackable { public: + enum Direction + { + UNSPECIFIED, + UP, + DOWN + }; + typedef std::set TrackSet; protected: @@ -62,11 +70,21 @@ private: public: const TrackSet &get_tracks() const { return tracks; } bool has_track(Track &) const; + virtual TrackIter iter_for(Track &, Direction) const; + TrackIter get_end(unsigned) const; + bool is_loop() const; private: void object_removed(Object &); + +public: + virtual Msp::DataFile::Statement save_reference() const = 0; }; + +void operator<<(Msp::LexicalConverter &, TrackChain::Direction); +void operator>>(const Msp::LexicalConverter &, TrackChain::Direction &); + } // namespace R2C2 #endif