#include <itkTimeStamp.h>

Public Types | |
| typedef TimeStamp | Self |
Public Member Functions | |
| TimeStamp () | |
| void | Delete () |
| void | Modified () |
| unsigned long | GetMTime () const |
| bool | operator> (TimeStamp &ts) |
| bool | operator< (TimeStamp &ts) |
| operator unsigned long () const | |
Static Public Member Functions | |
| static Self * | New () |
| static const char * | GetNameOfClass () |
Private Attributes | |
| unsigned long | m_ModifiedTime |
TimeStamp records a unique time when the method Modified() is executed. This time is guaranteed to be monotonically increasing. Classes use this object to record modified and/or execution time. There is built in support for the binary < and > comparison operators between two TimeStamp objects.
Definition at line 49 of file itkTimeStamp.h.
| typedef TimeStamp itk::TimeStamp::Self |
Standard class typedefs.
Definition at line 53 of file itkTimeStamp.h.
| itk::TimeStamp::TimeStamp | ( | ) | [inline] |
Constructor must remain public because classes instantiate TimeStamps implicitly in their construction.
Definition at line 61 of file itkTimeStamp.h.
| TimeStamp * itk::TimeStamp::New | ( | void | ) | [static] |
Create an instance of this class. We don't want to use reference counting.
Instance creation.
Definition at line 57 of file itkTimeStamp.cxx.
00058 { 00059 return new Self; 00060 }
| void itk::TimeStamp::Delete | ( | ) | [inline] |
| static const char* itk::TimeStamp::GetNameOfClass | ( | ) | [inline, static] |
| void itk::TimeStamp::Modified | ( | void | ) |
Set this objects time to the current time. The current time is just a monotonically increasing unsigned long integer. It is possible for this number to wrap around back to zero. This should only happen for processes that have been running for a very long time, while constantly changing objects within the program. When this does occur, the typical consequence should be that some filters will update themselves when really they don't need to.
Make sure the new time stamp is greater than all others so far.
Initialize static member
Used for mutex locking
Definition at line 68 of file itkTimeStamp.cxx.
References itk::SimpleFastMutexLock::Lock(), and itk::SimpleFastMutexLock::Unlock().
Referenced by otb::Function::StandardRenderingFunction< TPixel, TRGBPixel, TPixelRepresentationFunction, TTransferFunction >::Initialize(), itk::Object::Modified(), and itk::MatrixOffsetTransformBase< TScalarType, 3, 3 >::SetMatrix().
00069 { 00070 // Windows optimization 00071 #if defined(WIN32) || defined(_WIN32) 00072 static LONG itkTimeStampTime = 0; 00073 m_ModifiedTime = (unsigned long)InterlockedIncrement(&itkTimeStampTime); 00074 00075 // Mac optimization 00076 #elif defined(__APPLE__) && (MAC_OS_X_VERSION_MIN_REQUIRED >= 1050) 00077 #if __LP64__ 00078 // "m_ModifiedTime" is "unsigned long", a type that changess sizes 00079 // depending on architecture. The atomic increment is safe, since it 00080 // operates on a variable of the exact type needed. The cast does not 00081 // change the size, but does change signedness, which is not ideal. 00082 static volatile int64_t itkTimeStampTime = 0; 00083 m_ModifiedTime = (unsigned long)OSAtomicIncrement64Barrier(&itkTimeStampTime); 00084 #else 00085 static volatile int32_t itkTimeStampTime = 0; 00086 m_ModifiedTime = (unsigned long)OSAtomicIncrement32Barrier(&itkTimeStampTime); 00087 #endif 00088 00089 // gcc optimization 00090 #elif defined(__GLIBCPP__) || defined(__GLIBCXX__) 00091 // We start from 1 since __exchange_and_add returns the old (non-incremented) 00092 // value. This is not really necessary but will make the absolute value of the 00093 // timestamp more consistent across platforms. 00094 static volatile _Atomic_word itkTimeStampTime = 1; 00095 m_ModifiedTime = (unsigned long)__exchange_and_add(&itkTimeStampTime, 1); 00096 00097 // General case 00098 #else 00099 00102 static unsigned long itkTimeStampTime = 0; 00103 00105 static SimpleFastMutexLock TimeStampMutex; 00106 00107 TimeStampMutex.Lock(); 00108 m_ModifiedTime = ++itkTimeStampTime; 00109 TimeStampMutex.Unlock(); 00110 #endif 00111 00112 00113 }
| unsigned long itk::TimeStamp::GetMTime | ( | void | ) | const [inline] |
Return this object's Modified time.
Definition at line 82 of file itkTimeStamp.h.
Referenced by itk::Object::GetMTime().
| bool itk::TimeStamp::operator> | ( | TimeStamp & | ts | ) | [inline] |
Support comparisons of time stamp objects directly.
Definition at line 86 of file itkTimeStamp.h.
References m_ModifiedTime.
| itk::TimeStamp::operator unsigned long | ( | ) | const [inline] |