namespace Marklin {
class Layout;
+class Route;
+class TrackIter;
class Train;
class Block
unsigned get_sensor_id() const { return sensor_id; }
unsigned get_turnout_id() const { return turnout_id; }
const std::set<Track *> &get_tracks() const { return tracks; }
+ bool has_track(Track &) const;
const std::vector<Endpoint> &get_endpoints() const { return endpoints; }
- int get_endpoint_by_link(const Block &) const;
- unsigned traverse(unsigned, float * =0) const;
+ const Endpoint &get_endpoint(unsigned) const;
+ int get_endpoint_by_link(Block &) const;
+ float get_path_length(unsigned, const Route * = 0) const;
void check_link(Block &);
void break_link(Block &);
Block *get_link(unsigned) const;
Train *get_train() const { return train; }
void print_debug();
private:
- void find_paths(Track &, unsigned, unsigned, std::set<Track *> &);
+ void find_paths(TrackIter, unsigned);
void determine_id();
};