00001 #ifndef __INSTANTIO_BASICENCODER_H
00002 #define __INSTANTIO_BASICENCODER_H
00003 
00004 #ifdef _MSC_VER
00005 # pragma once
00006 #endif
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 #include "InstantIODef.h"
00027 #include "TimeStamp.h"
00028 #include <iosfwd>
00029 #include <string>
00030 
00031 
00032 namespace InstantIO
00033 {
00034 
00035 
00036 class BasicInSlot;
00037 class SetStateEvent;
00038 
00039 
00046 class INSTANTIO_DLLMAPPING BasicEncoder
00047 {
00048 public:
00049 
00051         virtual ~BasicEncoder();
00052 
00058         virtual void initialize(const std::string &label, const std::string &description);
00059 
00065         inline const std::string &getLabel() const { return label_; }
00066 
00072         virtual BasicInSlot *getInSlot() const = 0;
00073 
00079         virtual void popAndEncode(SetStateEvent &event);
00080 
00081 protected:
00082 
00084         inline BasicEncoder(): label_() {}
00085 
00092         virtual TimeStamp popAndEncode(std::ostream &os) = 0;
00093 
00094 private:
00095 
00097         BasicEncoder(const BasicEncoder &);
00098 
00100         const BasicEncoder &operator=(const BasicEncoder &);
00101 
00103         std::string label_;
00104 };
00105 
00106 
00107 } 
00108 
00109 
00110 #endif // __INSTANTIO_BASICENCODER_H