- if(!s.compare(0, 7, "travel "))
- {
- if(!s.compare(7, 10, "to sensor "))
- return Row(TRAVEL_TO, lexical_cast<unsigned>(s.substr(17)));
- else if(!s.compare(7, 13, "past turnout "))
- return Row(TRAVEL_PAST, lexical_cast<unsigned>(s.substr(20)));
- else if(!s.compare(7, string::npos, "until arrival"))
- return Row(ARRIVE);
- }
- else if(!s.compare(0, 9, "wait for "))
- {
- if(isdigit(s[9]))
- {
- unsigned nondigit = 10;
- while(nondigit<s.size() && isdigit(s[nondigit]))
- ++nondigit;
- return Row(WAIT_TIME, lexical_cast<unsigned>(s.substr(9, nondigit-9)));
- }
- else if(!s.compare(9, 6, "train "))
- {
- string::size_type at = s.find(" at sensor ", 15);
- if(at!=string::npos)
- {
- Row row(WAIT_TRAIN, lexical_cast<unsigned>(s.substr(15, at-15)));
- row.params.push_back(lexical_cast<unsigned>(s.substr(at+11)));
- return row;
- }
- }
- }
- else if(!s.compare(0, 11, "wait until "))