void InputConfigFile::process(InputContext &input) { //ファイル一行目のバージョン文字列を取得 std::string version = input.nextToken(); input.skipReturn(); //バージョン文字列に応じたInputProcedureを実行する if(version == InputConfigFileEV3Linetracer_1_0::VERSION_STRING) { InputConfigFileEV3Linetracer_1_0 body(ev3LineTracer); body.process(input); } else { //バージョンが一致しなかったら例外を投げる throw std::ios::failure("バージョンが不正です"); } }
/* <SingleState>::= <StateIndex><tab>;StateIndex <RefMax><tab>;RefMax <ControlCount>;ControlCount */ void ReadSingleState::process(InputContext &input) { idx stateindex; real refmax; idx controlcount; //State[stateIndex]を読み取りev3LineTracerに設定する stateindex = StringToData::parseTo<idx>(input.nextToken()); //読み取ったstateindexとstateIndexが異なっていれば例外発生 if(stateindex != stateIndex) { std::string msg("invalid stateIndex"); throw std::ios_base::failure(msg); } refmax = StringToData::parseTo<real>(input.nextToken()); controlcount = StringToData::parseTo<idx>(input.nextToken()); input.skipReturn(); ev3LineTracer.setState(stateindex,refmax,controlcount); }