00001 #include "ScanHeaderStreamer.h"
00002 #include "../ScanHeader.h"
00003 #include "../ConfigurationVariable.h"
00004 #include "../mVThresholdVariable.h"
00005
00006 #include <string>
00007
00008 using std::string;
00009 using namespace Sct;
00010
00011 namespace SctData {
00012 namespace IO {
00013
00014 ScanHeaderStreamer::ScanHeaderStreamer() throw() {}
00015
00016 bool ScanHeaderStreamer::inMap = IOManager::addToMap("SctData::ScanHeader", auto_ptr<Streamer>(new ScanHeaderStreamer()));
00017
00018 shared_ptr<Streamable> ScanHeaderStreamer::read(IStream& in, const IOManager& manager) const throw(LogicError, IoError) {
00019 shared_ptr<Streamable> ad (new ScanHeader(0, 0, "", mVThresholdVariable::instance()));
00020 read(in, *ad, manager);
00021 return ad;
00022 }
00023
00024 void ScanHeaderStreamer::write(OStream& out, const Streamable& ob, const IOManager& manager) const throw(LogicError, IoError) {
00025
00026 const ScanHeader& header = dynamic_cast<const ScanHeader&>(ob);
00027
00028 out << header.getRunNumber() << header.getScanNumber() << header.getModuleName();
00029 manager.writeImpl(out, header.getVariable(), false);
00030 }
00031
00032 void ScanHeaderStreamer::read(IStream& in, Streamable& ob, const IOManager& manager) const throw(LogicError, IoError) {
00033
00034 ScanHeader& header = dynamic_cast<ScanHeader&>(ob);
00035
00036 headerHelper.set(header);
00037
00038 in >> headerHelper.getRunNumber();
00039 in >> headerHelper.getScanNumber();
00040 in >> headerHelper.getModuleName();
00041 shared_ptr<Streamable> ob2 = manager.readImpl(in, "SctData::ConfigurationVariable");
00042 headerHelper.getVariable() = boost::dynamic_pointer_cast<ConfigurationVariable>(ob2).get();
00043
00044
00045 }
00046
00047 }
00048 }