00001 #include "ResponseCurveStreamer_v1.h"
00002 #include "../ResponseCurve.h"
00003
00004 using namespace Sct;
00005
00006 namespace SctData {
00007 namespace IO {
00008
00009
00010 unsigned ResponseCurveStreamer_v1::s_version=1;
00011
00012 ResponseCurveStreamer_v1::ResponseCurveStreamer_v1() throw() {}
00013
00014 bool ResponseCurveStreamer_v1::inMap = IOManager::addToMap("SctData::ResponseCurve", auto_ptr<Streamer>(new ResponseCurveStreamer_v1()));
00015
00016 void ResponseCurveStreamer_v1::write(OStream& out, const Streamable& ob, const IOManager& manager) const throw(LogicError, IoError) {
00017 const ResponseCurve& rc = dynamic_cast<const ResponseCurve&>(ob);
00018 out << ResponseCurveMap::getMap().getIndex(rc.getCurveName());
00019 for (int ipar=0; ipar<3; ++ipar) {
00020 out << rc.getFunction()->GetParameter(ipar);
00021 }
00022 }
00023
00024 shared_ptr<Streamable> ResponseCurveStreamer_v1::read(IStream& in, const IOManager& manager) const throw(LogicError, IoError) {
00025 int index;
00026 in >> index;
00027 auto_ptr<ResponseCurve> rc=ResponseCurveMap::getMap().get(index);
00028 for (int ipar=0; ipar<3; ++ipar) {
00029 double value;
00030 in >> value;
00031 rc->getFunction()->SetParameter(ipar,value);
00032 }
00033 return shared_ptr<Streamable>(rc);
00034 }
00035
00036 void ResponseCurveStreamer_v1::read(IStream& in, Streamable& ob, const IOManager& manager) const throw(LogicError, IoError) {
00037 dynamic_cast<ResponseCurve&>(ob);
00038 ob = *read(in, manager);
00039 }
00040 }
00041 }
00042