00001 
00002 
00003 
00004 
00005 
00006 
00007 #ifndef COH_ABSTRACT_EVOLVABLE_HPP
00008 #define COH_ABSTRACT_EVOLVABLE_HPP
00009 
00010 #include "coherence/lang.ns"
00011 
00012 #include "coherence/io/Evolvable.hpp"
00013 #include "coherence/util/Binary.hpp"
00014 
00015 COH_OPEN_NAMESPACE2(coherence,io)
00016 
00017 
00018 using coherence::util::Binary;
00019 
00020 
00021 
00022 
00023 
00024 
00025 class COH_EXPORT AbstractEvolvable
00026     : public abstract_spec<AbstractEvolvable,
00027         extends <Object>,
00028         implements<Evolvable> >
00029     {
00030     
00031 
00032     protected:
00033 
00034 
00035 
00036         AbstractEvolvable();
00037 
00038 
00039 
00040 
00041         AbstractEvolvable(const AbstractEvolvable& that);
00042 
00043 
00044     
00045 
00046     public:
00047 
00048 
00049 
00050         virtual int32_t getImplVersion() const = 0;
00051 
00052 
00053 
00054 
00055         virtual int32_t getDataVersion() const;
00056 
00057 
00058 
00059 
00060         virtual void setDataVersion(int32_t nVersion);
00061 
00062 
00063 
00064 
00065         virtual Binary::View getFutureData() const;
00066 
00067 
00068 
00069 
00070         virtual void setFutureData(Binary::View vBinFuture);
00071 
00072 
00073       
00074 
00075       private:
00076 
00077 
00078 
00079         int32_t m_nDataVersion;
00080 
00081 
00082 
00083 
00084 
00085         FinalView<Binary> f_vBinFuture;
00086       
00087     };
00088 
00089 COH_CLOSE_NAMESPACE2
00090 
00091 #endif // COH_ABSTRACT_EVOLVABLE_HPP
00092