ITK  5.4.0
Insight Toolkit
itkObjectFactory.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 itkObjectFactory_h
29#define itkObjectFactory_h
30
32
33namespace itk
34{
54template <typename T>
56{
57public:
58 static typename T::Pointer
60 {
61 LightObject::Pointer ret = CreateInstance(typeid(T).name());
62
63 return dynamic_cast<T *>(ret.GetPointer());
64 }
65};
66} // end namespace itk
67
68#endif
Create instances of classes using an object factory.
static LightObject::Pointer CreateInstance(const char *itkclassname)
Create instances of a class.
static T::Pointer Create()
ObjectType * GetPointer() const noexcept
SmartPointer< Self > Pointer
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....