/usr/include/mia-2.0/mia/core/factory_trait.hh is in libmia-2.0-dev 2.0.13-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | /* -*- mia-c++ -*-
*
* This file is part of MIA - a toolbox for medical image analysis
* Copyright (c) Leipzig, Madrid 1999-2013 Gert Wollny
*
* MIA is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with MIA; if not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef mia_core_factory_trait_hh
#define mia_core_factory_trait_hh
#include <mia/core/defines.hh>
NS_MIA_BEGIN
/**
\ingroup traits
\brief Type trait to enable the use of a factory product as command
line option
Type trait that enables the use of the factory creation in commen line parsing.
This trait needs to be specialized for all factories that are to be used
utilizing the TCmdFactoryOption interface.
\tparam T a class that can be created by a TFactory through the call to
the method TFactoryPluginHandler::produce(const char *plugindescr) of the
corresponding factory plugin handler.
\sa TCmdFactoryOption
*/
template <class T>
class FactoryTrait {
/// the typetrait type if not defined properly
typedef typename T::must_create_trait_using_FACTORY_TRAIT type;
};
/**
\ingroup traits
\brief Type trait to enable the use of a factory product as command
line option
This trait specializes FactoryTrait for shared pointers.
*/
template <class T>
class FactoryTrait<std::shared_ptr<T> > {
public:
/// the typetrait type
typedef typename FactoryTrait<T>::type type;
};
/**
\ingroup traits
Specialize the FactoryTrait template for the given TFactoryPluginHandler
*/
#define FACTORY_TRAIT(F) \
template <> \
class FactoryTrait< F::Instance::ProductPtr::element_type > { \
public: \
typedef F type; \
};
NS_MIA_END
#endif
|