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