class Layout;
class Track;
+class TrackIter;
class Route: public sigc::trackable
{
Layout &layout;
std::string name;
bool temporary;
- std::set<const Track *> tracks;
+ std::set<Track *> tracks;
TurnoutMap turnouts;
public:
void update_turnouts();
int get_turnout(unsigned) const;
const std::map<unsigned, int> &get_turnouts() const { return turnouts; }
- void add_track(const Track &);
- void add_tracks(const std::set<const Track *> &);
- void add_track_chain(const Track &, unsigned, const TurnoutMap &);
- const std::set<const Track *> &get_tracks() const { return tracks; }
+ void add_track(Track &);
+ void add_tracks(const std::set<Track *> &);
+ void add_track_chain(Track &, unsigned, const TurnoutMap &);
+ const std::set<Track *> &get_tracks() const { return tracks; }
+ bool has_track(Track &) const;
void save(std::list<Msp::DataFile::Statement> &) const;
private:
- unsigned check_validity(const Track &) const;
+ unsigned check_validity(Track &) const;
void track_removed(Track &);
public:
- static Route *find(const Track &, unsigned, const Track &);
- static Route *find(const Track &, unsigned, const Route &);
- static Route *find(const Track &, unsigned, const std::set<const Track *> &);
+ static Route *find(const TrackIter &, Track &);
+ static Route *find(const TrackIter &, const Route &);
+ static Route *find(const TrackIter &, const std::set<Track *> &);
};
} // namespace Marklin