namespace Marklin {
+class ArticleNumber;
class Block;
class Catalogue;
class Driver;
Loader(Layout &);
private:
virtual void finish();
+ void route();
void route(const std::string &);
void track(unsigned);
- void train(unsigned, unsigned);
+ void track(ArticleNumber);
+ void train(unsigned, unsigned, const std::string &);
+ void train(ArticleNumber, unsigned, const std::string &);
};
public:
Driver *driver;
std::string base;
std::set<Track *> tracks;
- std::map<std::string, Route *> routes;
+ std::set<Route *> routes;
std::set<Block *> blocks;
std::map<unsigned, Train *> trains;
std::set<Vehicle *> vehicles;
Msp::Time::TimeStamp last_tick;
+ unsigned next_turnout_id;
public:
Layout(Catalogue &, Driver * = 0);
void add_track(Track &);
const std::set<Track *> &get_tracks() const { return tracks; }
void remove_track(Track &);
+ unsigned allocate_turnout_id(bool);
void add_block(Block &);
Block &get_block(unsigned) const;
- Block &get_block_by_track(const Track &) const;
const std::set<Block *> &get_blocks() const { return blocks; }
void create_blocks();
- void create_blocks(const Track &);
+ void create_blocks(Track &);
void remove_block(Block &);
void add_route(Route &);
- const std::map<std::string, Route *> &get_routes() const { return routes; }
+ const std::set<Route *> &get_routes() const { return routes; }
Route &get_route(const std::string &) const;
+ void update_routes();
void remove_route(Route &);
void add_train(Train &);
void save(const std::string &);
void save_trains(const std::string &);
private:
- void check_links();
- void check_routes();
void sensor_event(unsigned, bool);
};