X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibmarklin%2Ftimetable.h;h=b4f9cc1b2fd2972ed097926e54c31a45824101f5;hb=9b05c573a38639827697fe393d55b7c76f5bde45;hp=3abbf83149e87e256bb9852a1c146a49c833c629;hpb=2571c111ec85b0d6a56ae369c83b5763b1975f93;p=r2c2.git diff --git a/source/libmarklin/timetable.h b/source/libmarklin/timetable.h index 3abbf83..b4f9cc1 100644 --- a/source/libmarklin/timetable.h +++ b/source/libmarklin/timetable.h @@ -30,32 +30,42 @@ public: void arrive(); void go_to(const std::string &); void route(const std::string &); - void speed(int); + void reverse(); + void speed(unsigned); void travel(const std::string &); void wait(unsigned); + void wait_train(unsigned, const std::string &); }; enum RowType { GOTO, TRAVEL, - WAIT, + WAIT_TIME, + WAIT_TRAIN, ARRIVE, SPEED, + REVERSE, ROUTE }; struct Row { RowType type; - int intparam; - std::string strparam; + std::vector params; - Row(RowType, int); - Row(RowType, const std::string &); + Row(RowType); + + template + Row(RowType, const T &); + + template + const T &get_param(unsigned) const; std::string str() const; + Msp::DataFile::Statement save() const; + static Row parse(const std::string &); }; @@ -66,6 +76,7 @@ private: unsigned current_row; bool executing; Block *pending_block; + Train *pending_train; Msp::Time::TimeStamp wait_timeout; public: