/usr/include/mia-2.4/mia/core/typedescr.hh is in libmia-2.4-dev 2.4.3-5.
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 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 | /* -*- mia-c++ -*-
*
* This file is part of MIA - a toolbox for medical image analysis
* Copyright (c) Leipzig, Madrid 1999-2016 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_typedescr_hh
#define mia_core_typedescr_hh
#include <mia/core/defines.hh>
#include <string>
#include <vector>
NS_MIA_BEGIN
/// @cond INTERNAL
/**
\ingroup misc
Template type parameter for time-step plugins
*/
struct EXPORT_CORE timestep_type {
/// value for plug-in search path component
static const char *type_descr;
};
/**
\ingroup traits
\brief Type description template
This template is used to create a type description for command line and
plug-in parameters. It needs to be specialized for each type that is used
in the command line parser or spline parameter parser
\tparam T the type to be described
*/
template <typename T>
struct __type_descr {
static const char * const value;
};
/**
A macro to make the declaration of the __type_descr specialization
*/
#define DECLARE_TYPE_DESCR(type) \
template <> \
struct EXPORT_CORE __type_descr<type> { \
static const char * const value; \
}
/**
A macro to define the value of the of the __type_descr specialization directly
based on the type name
\param type the type to be specialized
*/
#define DEFINE_TYPE_DESCR(type) const char * const __type_descr<type>::value = #type;
/**
A macro to define the value of the of the __type_descr specialization that takes
a special name
\param type the type to be specialized
\param name string to represent the type
*/
#define DEFINE_TYPE_DESCR2(type, name) const char * const __type_descr<type>::value = name;
/// @endcond
/// @cond NEVER
DECLARE_TYPE_DESCR(signed char);
DECLARE_TYPE_DESCR(unsigned char);
DECLARE_TYPE_DESCR(short);
DECLARE_TYPE_DESCR(int);
DECLARE_TYPE_DESCR(long);
DECLARE_TYPE_DESCR(unsigned int);
DECLARE_TYPE_DESCR(unsigned short);
DECLARE_TYPE_DESCR(unsigned long);
DECLARE_TYPE_DESCR(float);
DECLARE_TYPE_DESCR(double);
DECLARE_TYPE_DESCR(bool);
DECLARE_TYPE_DESCR(std::string);
DECLARE_TYPE_DESCR(std::vector<short>);
DECLARE_TYPE_DESCR(std::vector<int>);
DECLARE_TYPE_DESCR(std::vector<long>);
DECLARE_TYPE_DESCR(std::vector<unsigned int>);
DECLARE_TYPE_DESCR(std::vector<unsigned short>);
DECLARE_TYPE_DESCR(std::vector<unsigned long>);
DECLARE_TYPE_DESCR(std::vector<float>);
DECLARE_TYPE_DESCR(std::vector<double>);
DECLARE_TYPE_DESCR(std::vector<bool>);
DECLARE_TYPE_DESCR(std::vector<std::string>);
/// @endcond
NS_MIA_END
#endif
|