ITK  5.4.0
Insight Toolkit
itkTimeStamp.h
Go to the documentation of this file.
1/*=========================================================================
2 *
3 * Copyright NumFOCUS
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * https://www.apache.org/licenses/LICENSE-2.0.txt
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 *=========================================================================*/
18/*=========================================================================
19 *
20 * Portions of this file are subject to the VTK Toolkit Version 3 copyright.
21 *
22 * Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
23 *
24 * For complete copyright, license and disclaimer of warranty information
25 * please refer to the NOTICE file at the top of the ITK source tree.
26 *
27 *=========================================================================*/
28#ifndef itkTimeStamp_h
29#define itkTimeStamp_h
30
31#include "itkMacro.h"
32#include "itkIntTypes.h"
33#include <atomic>
34#include "itkSingletonMacro.h"
35
36namespace itk
37{
60class ITKCommon_EXPORT TimeStamp
61{
62public:
64 using Self = TimeStamp;
65
66 using GlobalTimeStampType = std::atomic<ModifiedTimeType>;
67
70 static Self *
71 New();
72
74 void
76 {
77 delete this;
78 }
79
81 static const char *
83 {
84 return "TimeStamp";
85 }
86
94 void
96
99 GetMTime() const
100 {
101 return m_ModifiedTime;
102 }
103
105 bool
107 {
108 return (m_ModifiedTime > ts.m_ModifiedTime);
109 }
110 bool
111 operator<(TimeStamp & ts) const
112 {
113 return (m_ModifiedTime < ts.m_ModifiedTime);
114 }
118 operator ModifiedTimeType() const { return m_ModifiedTime; }
119
120private:
124
125 ModifiedTimeType m_ModifiedTime{ 0 };
126
132};
133} // end namespace itk
134
135#endif
Generate a unique, increasing time value.
Definition: itkTimeStamp.h:61
ModifiedTimeType m_ModifiedTime
Definition: itkTimeStamp.h:125
itkGetGlobalDeclarationMacro(GlobalTimeStampType, GlobalTimeStamp)
ModifiedTimeType GetMTime() const
Definition: itkTimeStamp.h:99
static GlobalTimeStampType * m_GlobalTimeStamp
Definition: itkTimeStamp.h:131
static const char * GetNameOfClass()
Definition: itkTimeStamp.h:82
bool operator>(TimeStamp &ts) const
Definition: itkTimeStamp.h:106
std::atomic< ModifiedTimeType > GlobalTimeStampType
Definition: itkTimeStamp.h:66
static Self * New()
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
SizeValueType ModifiedTimeType
Definition: itkIntTypes.h:102
bool operator<(const Index< VDimension > &one, const Index< VDimension > &two)
Definition: itkIndex.h:559