1 /*========================================================================= 2 * 3 * Copyright Insight Software Consortium 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 * http://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 itkVersion_h 29 #define itkVersion_h 30 31 #include "itkObject.h" 32 #include "itkObjectFactory.h" 33 34 #define ITK_VERSION_TO_STRING(x) ITK_VERSION_TO_STRING0(x) 35 #define ITK_VERSION_TO_STRING0(x) #x 36 #define ITK_VERSION \ 37 ITK_VERSION_TO_STRING(ITK_VERSION_MAJOR) "." \ 38 ITK_VERSION_TO_STRING(ITK_VERSION_MINOR) "." \ 39 ITK_VERSION_TO_STRING(ITK_VERSION_PATCH) 40 #define ITK_SOURCE_VERSION "itk version " ITK_VERSION 41 42 namespace itk 43 { 44 /** \class Version 45 * \brief Track the current version of the software. 46 * 47 * Holds methods for defining/determining the current itk version 48 * (major, minor, build). 49 * 50 * This file will change frequently to update the ITKSourceVersion which 51 * timestamps a particular source release. 52 * 53 * \ingroup ITKSystemObjects 54 * \ingroup ITKCommon 55 */ 56 57 class ITKCommon_EXPORT Version:public Object 58 { 59 public: 60 ITK_DISALLOW_COPY_AND_ASSIGN(Version); 61 62 /** Standard class type aliases. */ 63 using Self = Version; 64 using Superclass = Object; 65 using Pointer = SmartPointer< Self >; 66 using ConstPointer = SmartPointer< const Self >; 67 68 /** Method for creation through the object factory. */ 69 itkNewMacro(Self); 70 71 /** Standard part of every itk Object. */ 72 itkTypeMacro(Version, Object); 73 74 /** Return the version of itk this object is a part of. */ 75 static const char * GetITKVersion(); 76 77 /** Get the itk major version. */ 78 static int GetITKMajorVersion(); 79 80 /** Get the itk minor version. */ 81 static int GetITKMinorVersion(); 82 83 /** Get the itk build version. */ 84 static int GetITKBuildVersion(); 85 86 /** Get a string with an identifier which timestamps a particular source tree. */ 87 static const char * GetITKSourceVersion(); 88 89 protected: 90 Version(); 91 ~Version() override; 92 }; 93 } // end namespace itk 94 95 #endif 96