X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibmarklin%2Fblock.h;h=f18ba8d6f49d52a53844045078aa17f5dd766a96;hb=52cbe8d99669f843f8f75c51128e2748584dd03a;hp=4a22aa97862bfc2019890aefc8090f83e7114ea9;hpb=36beacc579d3132642ed4d98ce5a6d99842b5812;p=r2c2.git diff --git a/source/libmarklin/block.h b/source/libmarklin/block.h index 4a22aa9..f18ba8d 100644 --- a/source/libmarklin/block.h +++ b/source/libmarklin/block.h @@ -15,33 +15,35 @@ class Block public: struct Endpoint { - Track *track; - const Track::Endpoint *track_ep; - Block *link; + Track *track; + unsigned track_ep; + Block *link; unsigned routes; - Endpoint(Track *, const Track::Endpoint *); + Endpoint(Track *, unsigned); }; - typedef std::list EndpointSeq; - Block(TrafficManager &, Track *); - unsigned get_sensor_id() const { return sensor_id; } - const TrackSet &get_tracks() const { return tracks; } - const EndpointSeq &get_endpoints() const { return endpoints; } - const Endpoint *get_endpoint_by_link(const Block *) const; - const Endpoint *traverse(const Endpoint *) const; - void check_link(Block &); - bool reserve(const Train *); - void print_debug(); private: TrafficManager &trfc_mgr; unsigned id; unsigned sensor_id; - TrackSet tracks; - EndpointSeq endpoints; + std::set tracks; + std::vector endpoints; const Train *train; - void find_routes(Track *, const Track::Endpoint *, unsigned, TrackSet &); +public: + Block(TrafficManager &, Track &); + unsigned get_sensor_id() const { return sensor_id; } + const std::set &get_tracks() const { return tracks; } + const std::vector &get_endpoints() const { return endpoints; } + int get_endpoint_by_link(const Block &) const; + int traverse(unsigned) const; + void check_link(Block &); + Block *get_link(unsigned) const; + bool reserve(const Train *); + void print_debug(); +private: + void find_routes(Track &, unsigned, unsigned, std::set &); static unsigned next_id; };