00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef _mitkVersionCounter_h
00011 #define _mitkVersionCounter_h
00012
00013 #include "mitkCommonIncludes.h"
00014
00015 class MITK_COMMON_API mitkVersionCounter
00016 {
00017 public:
00018 mitkVersionCounter();
00019 ~mitkVersionCounter();
00020
00021 int GetVersion() const { return m_Version; }
00022 void Modified() { m_Version++; }
00023
00024 private:
00025 int m_Version;
00026 };
00027
00028 #define MITK_VERSIONED_OBJECT(UpdateFunc)\
00029 public:\
00030 mitkVersionCounter __versionCounter;\
00031 inline void __Update() {UpdateFunc;}
00032
00033 #define MITK_MODIFIED __versionCounter.Modified
00034
00035 class MITK_COMMON_API mitkLocalVersion
00036 {
00037 public:
00038 mitkLocalVersion();
00039 ~mitkLocalVersion();
00040
00041 int m_Version;
00042
00043 };
00044
00045 #define MITK_IS_MODIFIED(objectPtr, localVersion) ((objectPtr)->__Update(),((localVersion).m_Version!=(objectPtr)->__versionCounter.GetVersion()))
00046 #define MITK_UPDATED(objectPtr, localVersion) ((localVersion).m_Version=(objectPtr)->__versionCounter.GetVersion())
00047
00048
00049 #endif