00001 #include "ResultHeaderStreamer_v1.h"
00002 #include "../ResultHeader.h"
00003 #include "../ConfigurationVariable.h"
00004 #include "../mVThresholdVariable.h"
00005
00006 #include <string>
00007
00008 using std::string;
00009 using std::auto_ptr;
00010 using namespace Sct;
00011
00012 namespace SctData {
00013 namespace IO {
00014
00015
00016 unsigned ResultHeaderStreamer_v1::s_version=1;
00017
00018 ResultHeaderStreamer_v1::ResultHeaderStreamer_v1() throw() {}
00019
00020 bool ResultHeaderStreamer_v1::inMap = IOManager::addToMap("SctData::ResultHeader", auto_ptr<Streamer>(new ResultHeaderStreamer_v1()));
00021
00022 shared_ptr<Streamable> ResultHeaderStreamer_v1::read(IStream& in, const IOManager& manager) const throw(LogicError, IoError) {
00023 shared_ptr<Streamable> ad (new ResultHeader(0, 0, "", mVThresholdVariable::instance()));
00024 read(in, *ad, manager);
00025 return ad;
00026 }
00027
00028 void ResultHeaderStreamer_v1::write(OStream& out, const Streamable& ob, const IOManager& manager) const throw(LogicError, IoError) {
00029
00030 const ResultHeader& header = dynamic_cast<const ResultHeader&>(ob);
00031
00032 out << header.getRunNumber() << header.getScanNumber() << header.getModuleName();
00033 out << header.getStartTimeString() << header.getEndTimeString();
00034 manager.writeImpl(out, header.getVariable(), false);
00035 }
00036
00037 void ResultHeaderStreamer_v1::read(IStream& in, Streamable& ob, const IOManager& manager) const throw(LogicError, IoError) {
00038
00039 ResultHeader& header = dynamic_cast<ResultHeader&>(ob);
00040
00041
00042 unsigned int runNumber = 0;
00043 unsigned int scanNumber = 0;
00044 string name, start, end;
00045 in >> runNumber >> scanNumber >> name >> start >> end;
00046 header.setRunNumber(runNumber);
00047 header.setScanNumber(scanNumber);
00048 header.setModuleName(name);
00049 header.setStartTimeString(start);
00050 header.setEndTimeString(end);
00051 shared_ptr<Streamable> ob2 = manager.readImpl(in, "SctData::ConfigurationVariable");
00052 header.setVariable(*boost::dynamic_pointer_cast<ConfigurationVariable>(ob2));
00053
00054
00055 }
00056
00057 }
00058 }