Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Related Pages

TrimRangeTestResult_ChipTrimStreamer_v1.cpp

00001 #include "Sct/IoExceptions.h"
00002 
00003 #include "../TrimRangeTestResult.h"
00004 #include "TrimRangeTestResult_ChipTrimStreamer_v1.h"
00005 
00006 using namespace Sct;
00007 
00008 namespace SctData {
00009 namespace IO {
00010 
00011 /* READ NOTES ON STREAMERS AND VERSIONS BEFORE EDITING THIS FILE! */
00012 unsigned TrimRangeTestResult_ChipTrimStreamer_v1::s_version=1;
00013 
00014 TrimRangeTestResult_ChipTrimStreamer_v1::TrimRangeTestResult_ChipTrimStreamer_v1() throw() {}
00015 
00016 bool TrimRangeTestResult_ChipTrimStreamer_v1::inMap = IOManager::addToMap("SctData::TrimRangeTestResult::ChipTrim",  auto_ptr<Streamer>(new TrimRangeTestResult_ChipTrimStreamer_v1()));
00017 
00018 
00019 shared_ptr<Streamable> TrimRangeTestResult_ChipTrimStreamer_v1::read(IStream& in, const IOManager& manager) const throw(LogicError, IoError) {
00020     shared_ptr<Streamable> ad (new TrimRangeTestResult::ChipTrim());
00021     read(in, *ad, manager);
00022     return ad;
00023 }
00024 
00025 void TrimRangeTestResult_ChipTrimStreamer_v1::write(OStream& out, const Streamable& ob, const IOManager& manager) const throw(LogicError, IoError) {
00026   const TrimRangeTestResult::ChipTrim& trim = dynamic_cast<const TrimRangeTestResult::ChipTrim&> (ob);
00027   out << trim.target << (int) trim.range;
00028   if (trim.channelTrim.size()!=nChannelChip){
00029     ostringstream os;
00030     os << "TrimRangeTestResult_ChipTrimStreamer_v1::writeTrim, bad size " << trim.channelTrim.size();
00031     throw StreamCorruptedException(os.str(), __FILE__, __LINE__ );
00032   }
00033   out << (int) trim.channelTrim.size();
00034   for (unsigned i=0; i<trim.channelTrim.size(); ++i){
00035     Stat<TrimRangeTestResult::Trim> t=trim.channelTrim.getAt(i);
00036     int trim_i = t.value.trim;
00037     out << t.valid << trim_i << t.value.vthr;
00038   }
00039 }
00040 
00041   void TrimRangeTestResult_ChipTrimStreamer_v1::read(IStream& in, Streamable& ob, const IOManager& manager) const throw(Sct::LogicError, Sct::IoError){
00042     TrimRangeTestResult::ChipTrim& trim = dynamic_cast<TrimRangeTestResult::ChipTrim&> (ob);
00043     in >> trim.target;
00044     int range; in >> range ; trim.range=range;
00045     int size; in >> size; trim.channelTrim.resize(size);
00046     if (size!=nChannelChip){
00047       ostringstream os;
00048       os << "TrimRangeTestResult_ChipTrimStreamer_v1::readTrim, bad size " << trim.channelTrim.size();
00049       throw StreamCorruptedException(os.str(), __FILE__, __LINE__ );
00050     }
00051     for (unsigned i=0; i<size; ++i){
00052       Stat<TrimRangeTestResult::Trim>& t=trim.channelTrim.modifyAt(i);
00053       int trim_i;
00054       in >> t.valid >> trim_i >> t.value.vthr;
00055       t.value.trim=trim_i;
00056     }
00057   }
00058 
00059 }
00060 }

Generated on Thu Jul 15 09:51:01 2004 for SCT DAQ/DCS Software - C++ by doxygen 1.3.5