My Project
core/creator.hh
Go to the documentation of this file.
1/* -*- mia-c++ -*-
2 *
3 * This file is part of MIA - a toolbox for medical image analysis
4 * Copyright (c) Leipzig, Madrid 1999-2017 Gert Wollny
5 *
6 * MIA is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with MIA; if not, see <http://www.gnu.org/licenses/>.
18 *
19 */
20
21#ifndef mia_core_creator_hh
22#define mia_core_creator_hh
23
24#include <mia/core/pixeltype.hh>
25#include <mia/core/factory.hh>
26#include <mia/core/handler.hh>
27
28
30
32 static const char *type_descr;
33};
34
43template <typename T>
45{
46public:
48 typedef T plugin_data;
49
52
53 virtual ~TImageCreator() {}
54
61 virtual std::shared_ptr<T> operator () (const typename T::dimsize_type& size, EPixelType type) const = 0;
62};
63
64
65#define DEFINE_Image_Creator(TYPE) \
66 typedef TImageCreator<TYPE> TYPE##Creator; \
67 typedef TFactory<TImageCreator<TYPE> > TYPE##CreatorPlugin; \
68 typedef THandlerSingleton<TFactoryPluginHandler<TYPE##CreatorPlugin> > TYPE##CreatorPluginHandler;\
69 FACTORY_TRAIT(THandlerSingleton<TFactoryPluginHandler<TYPE##CreatorPlugin> >);
70
71
72#define INSTANCIATE_Image_Creator(TYPE) \
73 template class TImageCreator<TYPE>;\
74 template class TPlugin<TYPE, creator_type>; \
75 template class TFactory<TImageCreator<TYPE> >; \
76 template class TPluginHandler<TYPE##CreatorPlugin>; \
77 template class TFactoryPluginHandler<TYPE##CreatorPlugin>; \
78 template class THandlerSingleton<TFactoryPluginHandler<TYPE##CreatorPlugin> >;
79
80
82
83#endif
The base class for all plug-in created object.
Definition: product_base.hh:41
The base class for generic image creation.
Definition: core/creator.hh:45
T plugin_data
plugin searchpath helper type, data part
Definition: core/creator.hh:48
creator_type plugin_type
plugin searchpath helper type, plugin type part
Definition: core/creator.hh:51
virtual ~TImageCreator()
Definition: core/creator.hh:53
#define EXPORT_HANDLER
Definition: core/cost.hh:32
#define NS_MIA_BEGIN
conveniance define to start the mia namespace
Definition: defines.hh:33
#define EXPORT_CORE
Macro to manage Visual C++ style dllimport/dllexport.
Definition: defines.hh:101
#define NS_MIA_END
conveniance define to end the mia namespace
Definition: defines.hh:36
EPixelType
Definition: pixeltype.hh:32
static const char * type_descr
Definition: core/creator.hh:32