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