RobotConfiguration* readLog(std::vector<BaseSensorData*>& sensorDatas, Deserializer& des){ RobotConfiguration* conf = 0; Serializable *o; int numObjects=0; while( (! conf && (o=des.readObject())) ){ cerr << o->className() << endl; numObjects++; if (! conf) { conf = dynamic_cast<RobotConfiguration*>(o); if (conf) { cerr << "got config" << endl; if (! conf->isReady()){ cerr << "conf failure" << endl; return 0; } } continue; } } if (!conf) { cerr << "unable to read robot configuration, aborting" << endl; return 0; } while( (o=des.readObject()) ){ BaseSensorData* sensorData=dynamic_cast<BaseSensorData*>(o); if(sensorData) sensorDatas.push_back(sensorData); } return conf; }
bool Serializer::writeObject(Serializable& instance) { ObjectData* data=new ObjectData(); instance.serialize(*data,*this); processDataForWrite(data,*this); if (!_datastream) { string str=_dataFileName; replaceEnvTags(str,_envMap); create_directories(path(str).parent_path()); _datastream=new ofstream(str.c_str()); } if (*_datastream) { _objectWriter->writeObject(*_datastream,instance.className(),*data); //TODO Change writer to get status flag return true; } return false; }