X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibmarklin%2Fblock.h;h=b72215ae03d1608092fd0c41943fdea7b7abeb54;hb=4d84248a4990e913a56f013e67a608ad9698233e;hp=df3ed4a525444271c931d4dd02a6c4e70dd5d63b;hpb=78bc40c2d1a5fcc5715143bd2326716fbb143730;p=r2c2.git diff --git a/source/libmarklin/block.h b/source/libmarklin/block.h index df3ed4a..b72215a 100644 --- a/source/libmarklin/block.h +++ b/source/libmarklin/block.h @@ -1,5 +1,12 @@ -#ifndef MARKLIN_3D_SECTION_H_ -#define MARKLIN_3D_SECTION_H_ +/* $Id$ + +This file is part of the MSP Märklin suite +Copyright © 2006-2009 Mikkosoft Productions, Mikko Rasa +Distributed under the GPL +*/ + +#ifndef MARKLIN_3D_BLOCK_H_ +#define MARKLIN_3D_BLOCK_H_ #include #include @@ -16,35 +23,40 @@ public: struct Endpoint { Track *track; - const Track::Endpoint *track_ep; - Block *link; - unsigned routes; + unsigned track_ep; + Block *link; + unsigned paths; - Endpoint(Track *, const Track::Endpoint *); + Endpoint(Track *, unsigned); }; - typedef std::list EndpointSeq; - Block(TrafficManager &, Track *); +private: + TrafficManager &trfc_mgr; + unsigned id; + unsigned sensor_id; + unsigned turnout_id; + std::set tracks; + std::vector endpoints; + const Train *train; + +public: + Block(TrafficManager &, Track &); + + unsigned get_id() const { return id; } unsigned get_sensor_id() const { return sensor_id; } - const TrackSet &get_tracks() const { return tracks; } - const Endpoint *get_endpoint_by_link(const Block *) const; - const Endpoint *traverse(const Endpoint *) const; + unsigned get_turnout_id() const { return turnout_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; + unsigned traverse(unsigned, float * =0) const; void check_link(Block &); + Block *get_link(unsigned) const; bool reserve(const Train *); + const Train *get_train() const { return train; } void print_debug(); private: - TrafficManager &trfc_mgr; - unsigned id; - unsigned sensor_id; - TrackSet tracks; - EndpointSeq endpoints; - const Train *train; - - void find_routes(Track *, const Track::Endpoint *, unsigned, TrackSet &); - - static unsigned next_id; + void find_paths(Track &, unsigned, unsigned, std::set &); }; -typedef std::list BlockSeq; } // namespace Marklin