/usr/include/InsightToolkit/Common/itkTimeStamp.h is in libinsighttoolkit3-dev 3.20.1+git20120521-6build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | /*=========================================================================
Program: Insight Segmentation & Registration Toolkit
Module: itkTimeStamp.h
Language: C++
Date: $Date$
Version: $Revision$
Copyright (c) Insight Software Consortium. All rights reserved.
See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
Portions of this code are covered under the VTK copyright.
See VTKCopyright.txt or http://www.kitware.com/VTKCopyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#ifndef __itkTimeStamp_h
#define __itkTimeStamp_h
#include "itkMacro.h"
namespace itk
{
/** \class TimeStamp
* \brief Generate a unique, increasing time value.
*
* 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.
*
* \warning On most platforms, this class uses a lock-free incremental
* counter. The Modified function can safely be called simultaneously
* by multiple threads on different instances of the class. However,
* calling the Modified function by different threads on the same
* instance of the class can lead to some unexpected behavior. The
* global counter will always be correct but the local m_ModifiedTime
* might not (see
* http://www.itk.org/mailman/private/insight-developers/2009-February/011732.html
* for more detail).
*
* \ingroup ITKSystemObjects
*/
class ITKCommon_EXPORT TimeStamp
{
public:
/** Standard class typedefs. */
typedef TimeStamp Self;
/** Create an instance of this class. We don't want to use reference
* counting. */
static Self* New();
/** Constructor must remain public because classes instantiate
* TimeStamps implicitly in their construction. */
TimeStamp()
{m_ModifiedTime = 0;}
/** Destoy this instance. */
void Delete()
{delete this;}
/** The class name as a string. */
static const char *GetNameOfClass()
{return "TimeStamp";}
/** 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. */
void Modified();
/** Return this object's Modified time. */
unsigned long GetMTime() const
{return m_ModifiedTime;}
/** Support comparisons of time stamp objects directly. */
bool operator>(TimeStamp& ts)
{return (m_ModifiedTime > ts.m_ModifiedTime);}
bool operator<(TimeStamp& ts)
{return (m_ModifiedTime < ts.m_ModifiedTime);}
/** Allow for typcasting to unsigned long. */
operator unsigned long() const
{return m_ModifiedTime;}
private:
unsigned long m_ModifiedTime;
};
} // end namespace itk
#endif
|