00001 #ifndef SCTDATA_IO_FITOBJECTIS_H
00002 #define SCTDATA_IO_FITOBJECTIS_H
00003
00004 #include "Sct/Streamer.h"
00005 #include "../FitObjectIOHelper.h"
00006 #include "Sct/LogicErrors.h"
00007 #include "Sct/IoExceptions.h"
00008
00009 using namespace Sct;
00010
00011 namespace SctData {
00012 namespace IO {
00013
00017 class FitObjectStreamer : public virtual Streamer {
00018 public:
00019
00020 virtual void write(OStream& out, const Streamable& ob, const IOManager& manager) const throw(LogicError, IoError);
00021 virtual void read(IStream& in, Streamable& ob, const IOManager& manager) const throw(LogicError, IoError);
00022
00023
00024 protected:
00025 FitObjectIOHelper helper;
00026 FitObjectStreamer() throw() {}
00027 };
00028
00029
00030
00031 class ErfcFitObjectStreamer : public FitObjectStreamer {
00032 public:
00034 virtual void read(IStream& in, Streamable& ob, const IOManager& manager) const throw(LogicError, IoError);
00035 virtual shared_ptr<Streamable> read(IStream& in, const IOManager& manager) const throw(LogicError, IoError);
00036
00037 private:
00038 ErfcFitObjectStreamer() throw() {}
00039 static bool inMap;
00040 };
00041
00042 class ErfFitObjectStreamer : public FitObjectStreamer {
00043 public:
00045 virtual void read(IStream& in, Streamable& ob, const IOManager& manager) const throw(LogicError, IoError);
00046 virtual shared_ptr<Streamable> read(IStream& in, const IOManager& manager) const throw(LogicError, IoError);
00047
00048 private:
00049 ErfFitObjectStreamer() throw() {}
00050 static bool inMap;
00051 };
00052
00053 class TopHatFitObjectStreamer : public FitObjectStreamer {
00054 public:
00056 virtual void read(IStream& in, Streamable& ob, const IOManager& manager) const throw(LogicError, IoError);
00057 virtual shared_ptr<Streamable> read(IStream& in, const IOManager& manager) const throw(LogicError, IoError);
00058
00059 private:
00060 TopHatFitObjectStreamer() throw() {}
00061 static bool inMap;
00062 };
00063
00064 class GausFitObjectStreamer : public FitObjectStreamer {
00065 public:
00067 virtual void read(IStream& in, Streamable& ob, const IOManager& manager) const throw(LogicError, IoError);
00068 virtual shared_ptr<Streamable> read(IStream& in, const IOManager& manager) const throw(LogicError, IoError);
00069
00070 private:
00071 GausFitObjectStreamer() throw() {}
00072 static bool inMap;
00073 };
00074
00075 }
00076 }
00077
00078 #endif //SCTDATA_IO_FITOBJECTIS_H