ITK  6.0.0
Insight Toolkit
itkSpatialObjectFactoryBase.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 itkSpatialObjectFactoryBase_h
29#define itkSpatialObjectFactoryBase_h
30
33#include "ITKSpatialObjectsExport.h"
34
35namespace itk
36{
43class ITKSpatialObjects_EXPORT SpatialObjectFactoryBase : public ObjectFactoryBase
44{
45public:
46 ITK_DISALLOW_COPY_AND_MOVE(SpatialObjectFactoryBase);
47
53
55 const char *
56 GetITKSourceVersion() const override;
57
58 const char *
59 GetDescription() const override;
60
62 itkOverrideGetNameOfClassMacro(SpatialObjectFactoryBase);
63
65 itkFactorylessNewMacro(Self);
66
68 static void
70
74 {
75 if (m_Factory == nullptr)
76 {
77 // Make and register the factory
79 m_Factory = p.GetPointer();
81 p->RegisterDefaultSpatialObjects();
82 }
83 return m_Factory;
84 }
87 void
88 RegisterSpatialObject(const char * classOverride,
89 const char * overrideClassName,
90 const char * description,
91 bool enableFlag,
92 CreateObjectFunctionBase * createFunction)
93 {
94 this->RegisterOverride(classOverride, overrideClassName, description, enableFlag, createFunction);
95 }
96
97protected:
100
101private:
103};
104} // end namespace itk
105#endif
Define API for object creation callback functions.
Light weight base class for most itk classes.
Create instances of classes using an object factory.
static bool RegisterFactory(ObjectFactoryBase *, InsertionPositionEnum where=InsertionPositionEnum::INSERT_AT_BACK, vcl_size_t position=0)
Create instances of SpatialObjects.
const char * GetITKSourceVersion() const override
void RegisterSpatialObject(const char *classOverride, const char *overrideClassName, const char *description, bool enableFlag, CreateObjectFunctionBase *createFunction)
static SpatialObjectFactoryBase * m_Factory
static SpatialObjectFactoryBase * GetFactory()
const char * GetDescription() const override
static void RegisterDefaultSpatialObjects()
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....