CTK
0.1.0
The Common Toolkit is a community effort to provide support code for medical image analysis, surgical navigation, and related projects.
Libs
Core
ctkAbstractObjectFactory.h
Go to the documentation of this file.
1
/*=========================================================================
2
3
Library: CTK
4
5
Copyright (c) Kitware Inc.
6
7
Licensed under the Apache License, Version 2.0 (the "License");
8
you may not use this file except in compliance with the License.
9
You may obtain a copy of the License at
10
11
http://www.apache.org/licenses/LICENSE-2.0.txt
12
13
Unless required by applicable law or agreed to in writing, software
14
distributed under the License is distributed on an "AS IS" BASIS,
15
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
See the License for the specific language governing permissions and
17
limitations under the License.
18
19
=========================================================================*/
20
21
#ifndef __ctkAbstractObjectFactory_h
22
#define __ctkAbstractObjectFactory_h
23
24
// Qt includes
25
#include <QDebug>
26
27
// CTK includes
28
#include "
ctkAbstractFactory.h
"
29
30
//----------------------------------------------------------------------------
31
namespace
{
34
template
<
typename
BaseClassType,
typename
ClassType>
35
BaseClassType *instantiateObject()
36
{
37
return
new
ClassType;
38
}
39
}
40
41
//----------------------------------------------------------------------------
43
template
<
typename
BaseClassType,
typename
ClassType>
44
class
ctkFactoryObjectItem
:
public
ctkAbstractFactoryItem
<BaseClassType>
45
{
46
protected
:
47
typedef
BaseClassType *(*InstantiateObjectFunc)();
48
public
:
49
virtual
bool
load
();
50
protected
:
51
virtual
BaseClassType*
instanciator
();
52
private
:
53
InstantiateObjectFunc
instantiateObjectFunc;
54
};
55
56
//----------------------------------------------------------------------------
58
template
<
typename
BaseClassType>
59
class
ctkAbstractObjectFactory
:
public
ctkAbstractFactory
<BaseClassType>
60
{
61
public
:
62
explicit
ctkAbstractObjectFactory
();
63
65
template
<
typename
ClassType>
66
bool
registerObject
(
const
QString& key);
67
68
private
:
69
ctkAbstractObjectFactory
(
const
ctkAbstractObjectFactory
&);
70
void
operator=(
const
ctkAbstractObjectFactory
&);
71
};
72
73
#include "ctkAbstractObjectFactory.tpp"
74
75
#endif
ctkAbstractFactory.h
ctkAbstractObjectFactory
Definition:
ctkAbstractObjectFactory.h:60
ctkAbstractFactory
ctkAbstractFactory is the base class of all the factory where items need to be registered before bein...
Definition:
ctkAbstractFactory.h:101
ctkFactoryObjectItem::load
virtual bool load()
ctkAbstractObjectFactory::registerObject
bool registerObject(const QString &key)
Register an object in the factory.
ctkFactoryObjectItem::InstantiateObjectFunc
BaseClassType *(* InstantiateObjectFunc)()
Definition:
ctkAbstractObjectFactory.h:47
ctkFactoryObjectItem
Definition:
ctkAbstractObjectFactory.h:45
ctkFactoryObjectItem::instanciator
virtual BaseClassType * instanciator()
Must be reimplemented in subclasses to instanciate a BaseClassType*.
ctkAbstractFactoryItem
Definition:
ctkAbstractFactory.h:43
ctkAbstractObjectFactory::ctkAbstractObjectFactory
ctkAbstractObjectFactory()
Generated on Fri Sep 4 2020 00:00:00 for CTK by
1.8.20