]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/track.h
Add an abstraction for things that are attached to tracks
[r2c2.git] / source / libr2c2 / track.h
index 916ea1966183c8ce5a87ec97a0c2297570a29c4a..994712da8c43cc2171cf340cb624cf55aa53bbd4 100644 (file)
@@ -13,6 +13,7 @@ namespace R2C2 {
 
 class Block;
 class Layout;
+class TrackAttachment;
 
 class Track: public Object, public sigc::trackable
 {
@@ -30,6 +31,8 @@ public:
                void turnout_id(unsigned);
        };
 
+       typedef std::list<TrackAttachment *> AttachmentList;
+
        sigc::signal<void, unsigned, Track *> signal_link_changed;
        sigc::signal<void, unsigned> signal_path_changing;
        sigc::signal<void, unsigned> signal_path_changed;
@@ -44,6 +47,7 @@ private:
        std::vector<Track *> links;
        unsigned active_path;
        bool path_changing;
+       AttachmentList attachments;
 
        Track(const Track &);
        Track &operator=(const Track &);
@@ -92,6 +96,10 @@ public:
        using Object::break_link;
        virtual bool break_link(unsigned);
 
+       void add_attachment(TrackAttachment &);
+       void remove_attachment(TrackAttachment &);
+       const AttachmentList &get_attachments() const { return attachments; }
+
        void save(std::list<Msp::DataFile::Statement> &) const;
 private:
        void turnout_event(unsigned, unsigned);