X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Froute.h;h=3ee7e5ead2306313d2afb293bae4b7931124f439;hb=850c1d571f2d2d157a873b678d86e4a5c771ba26;hp=4f5d0564934e665bbc86c9c7f0827965141e535e;hpb=d15ac13f2e170f155b4bbd124df48400c339b644;p=r2c2.git diff --git a/source/libr2c2/route.h b/source/libr2c2/route.h index 4f5d056..3ee7e5e 100644 --- a/source/libr2c2/route.h +++ b/source/libr2c2/route.h @@ -5,7 +5,7 @@ #include #include #include -#include +#include namespace R2C2 { @@ -14,12 +14,32 @@ class Track; class TrackIter; class Zone; +enum RouteValidityMask +{ + ROUTE_INVALID = 0, + ROUTE_LINKED = 1, + ROUTE_LINEAR = 2, + ROUTE_SMOOTH = 4, + ROUTE_VALID = 7 +}; + +class bad_route: public std::logic_error +{ +public: + bad_route(RouteValidityMask m): std::logic_error(get_message(m)) { } + virtual ~bad_route() throw() { } + +private: + static std::string get_message(RouteValidityMask); +}; + + class Route: public sigc::trackable { public: typedef std::map TurnoutMap; - class Loader: public Msp::DataFile::BasicLoader + class Loader: public Msp::DataFile::ObjectLoader { private: TurnoutMap turnouts; @@ -60,7 +80,7 @@ public: bool has_track(Track &) const; void save(std::list &) const; private: - unsigned check_validity(Track &) const; + RouteValidityMask check_validity(Track &) const; void track_removed(Track &); public: