My Project
traits.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_traits__hh
22#define mia_core_traits__hh
23
24#include <mia/core/defines.hh>
25
27
35template <typename T>
36struct dim_traits {
38 typedef typename T::dimsize_type dimsize_type;
39};
40
46
49 {
50 }
51
53 vector_dimsize(size_t n): m_n(n)
54 {
55 }
56
58 size_t size()
59 {
60 return 1;
61 }
62
64 size_t& operator [] (int /*i*/)
65 {
66 return m_n;
67 }
68
70 const size_t& operator [] (int /*i*/) const
71 {
72 return m_n;
73 }
74private:
75 size_t m_n;
76};
77
78
86template <typename T>
87struct dim_traits<std::vector<T>> {
89};
90
98template <typename T>
99struct __cache_policy {
100 static bool apply()
101 {
102 return false;
103 }
104};
106
107
108
109
111
112#endif
#define NS_MIA_BEGIN
conveniance define to start the mia namespace
Definition defines.hh:33
#define NS_MIA_END
conveniance define to end the mia namespace
Definition defines.hh:36
A trait to obtaine information about of dimensions of a class.
Definition traits.hh:36
T::dimsize_type dimsize_type
the trait
Definition traits.hh:38
Structure to enable the use of the dim_traits class for std::vector.
Definition traits.hh:45
vector_dimsize(size_t n)
contruct the dimsize object
Definition traits.hh:53
size_t size()
Definition traits.hh:58
size_t & operator[](int)
return a read-write reference to the first (and only)dimension
Definition traits.hh:64
vector_dimsize()
contruct the dimsize object
Definition traits.hh:48