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