ITK  5.2.0
Insight Toolkit
itkTransformIOFactory.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  * 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 #ifndef itkTransformIOFactory_h
19 #define itkTransformIOFactory_h
20 
21 #include "itkObject.h"
22 #include "itkTransformIOBase.h"
23 #include "ITKIOTransformBaseExport.h"
24 #include "itkCommonEnums.h"
25 
26 namespace itk
27 {
28 
29 #if !defined(ITK_LEGACY_REMOVE)
30 using TransformIOFactoryFileModeEnum = IOFileModeEnum;
31 #endif
32 
37 template <typename TParametersValueType>
38 class ITK_TEMPLATE_EXPORT TransformIOFactoryTemplate : public Object
39 {
40 public:
41  ITK_DISALLOW_COPY_AND_MOVE(TransformIOFactoryTemplate);
42 
45  using Superclass = Object;
48 
52  itkTypeMacro(TransformIOFactoryTemplate, Object);
53 
56 
61  CreateTransformIO(const char * path, IOFileModeEnum mode);
62 
63 protected:
65  ~TransformIOFactoryTemplate() override;
66 };
67 
70 
71 } // end namespace itk
72 
73 // Note: Explicit instantiation is done in itkTransformIOFactory.cxx
74 
75 #endif
76 
78 #ifndef ITK_TEMPLATE_EXPLICIT_TransformIOFactory
79 // Explicit instantiation is required to ensure correct dynamic_cast
80 // behavior across shared libraries.
81 //
82 // IMPORTANT: Since within the same compilation unit,
83 // ITK_TEMPLATE_EXPLICIT_<classname> defined and undefined states
84 // need to be considered. This code *MUST* be *OUTSIDE* the header
85 // guards.
86 //
87 #if defined(ITKIOTransformBase_EXPORTS)
88 // We are building this library
89 # define ITKIOTransformBase_EXPORT_EXPLICIT ITK_FORWARD_EXPORT
90 #else
91 // We are using this library
92 # define ITKIOTransformBase_EXPORT_EXPLICIT ITKIOTransformBase_EXPORT
93 #endif
94 namespace itk
95 {
96 
97 ITK_GCC_PRAGMA_DIAG_PUSH()
98 ITK_GCC_PRAGMA_DIAG(ignored "-Wattributes")
99 
102 
103 ITK_GCC_PRAGMA_DIAG_POP()
104 
105 } // end namespace itk
106 #undef ITKIOTransformBase_EXPORT_EXPLICIT
107 #endif
itk::TransformIOFactoryTemplate< float >
template class ITKIOTransformBase_EXPORT_EXPLICIT TransformIOFactoryTemplate< float >
itk::CommonEnums::IOFileMode
IOFileMode
Definition: itkCommonEnums.h:115
itk::TransformIOFactoryTemplate
Create instances of TransformIO objects using an object factory.
Definition: itkTransformIOFactory.h:38
itkTransformIOBase.h
itk::SmartPointer< Self >
itk::TransformIOFactoryTemplate< double >
template class ITKIOTransformBase_EXPORT_EXPLICIT TransformIOFactoryTemplate< double >
itk::LightObject
Light weight base class for most itk classes.
Definition: itkLightObject.h:59
itk::TransformIOFactoryTemplate::TransformIOBasePointer
typename TransformIOBaseTemplate< TParametersValueType >::Pointer TransformIOBasePointer
Definition: itkTransformIOFactory.h:55
itkObject.h
itk
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
Definition: itkAnnulusOperator.h:24
itkCommonEnums.h
ITKIOTransformBase_EXPORT_EXPLICIT
#define ITKIOTransformBase_EXPORT_EXPLICIT
Definition: itkTransformIOFactory.h:92
itk::Object
Base class for most ITK classes.
Definition: itkObject.h:62
itk::IOFileModeEnum
CommonEnums::IOFileMode IOFileModeEnum
Definition: itkCommonEnums.h:159