LSSTApplications
10.0+286,10.0+36,10.0+46,10.0-2-g4f67435,10.1+152,10.1+37,11.0,11.0+1,11.0-1-g47edd16,11.0-1-g60db491,11.0-1-g7418c06,11.0-2-g04d2804,11.0-2-g68503cd,11.0-2-g818369d,11.0-2-gb8b8ce7
LSSTDataManagementBasePackage
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
home
lsstsw
stack
Linux64
ndarray
10.1+37
include
ndarray
ExpressionTraits.h
Go to the documentation of this file.
1
// -*- c++ -*-
2
/*
3
* LSST Data Management System
4
* Copyright 2008, 2009, 2010, 2011 LSST Corporation.
5
*
6
* This product includes software developed by the
7
* LSST Project (http://www.lsst.org/).
8
*
9
* This program is free software: you can redistribute it and/or modify
10
* it under the terms of the GNU General Public License as published by
11
* the Free Software Foundation, either version 3 of the License, or
12
* (at your option) any later version.
13
*
14
* This program is distributed in the hope that it will be useful,
15
* but WITHOUT ANY WARRANTY; without even the implied warranty of
16
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
* GNU General Public License for more details.
18
*
19
* You should have received a copy of the LSST License Statement and
20
* the GNU General Public License along with this program. If not,
21
* see <http://www.lsstcorp.org/LegalNotices/>.
22
*/
23
#ifndef NDARRAY_ExpressionTraits_h_INCLUDED
24
#define NDARRAY_ExpressionTraits_h_INCLUDED
25
32
#include "
ndarray_fwd.h
"
33
#include <boost/static_assert.hpp>
34
35
namespace
ndarray {
36
42
template
<
typename
Expression_>
struct
ExpressionTraits
{
43
typedef
boost::mpl::true_
IsScalar
;
44
};
45
46
#ifndef GCC_45
47
53
template
<
typename
Operand,
typename
UnaryFunction,
int
N>
54
struct
ExpressionTraits
< detail::UnaryOpExpression<Operand,UnaryFunction,N> > {
55
typedef
typename
UnaryFunction::result_type
Element
;
56
typedef
typename
ExpressionTraits<Operand>::ND
ND
;
57
typedef
detail::UnaryOpIterator<Operand,UnaryFunction>
Iterator
;
58
typedef
detail::UnaryOpExpression
<
59
typename
ExpressionTraits<Operand>::Reference
,UnaryFunction,N-1
60
>
Value
;
61
typedef
Value
Reference
;
62
typedef
boost::mpl::false_
IsScalar
;
63
};
64
70
template
<
typename
Operand,
typename
UnaryFunction>
71
struct
ExpressionTraits
< detail::UnaryOpExpression<Operand,UnaryFunction,1> > {
72
typedef
typename
UnaryFunction::result_type
Element
;
73
typedef
typename
ExpressionTraits<Operand>::ND
ND
;
74
typedef
detail::UnaryOpIterator<Operand,UnaryFunction>
Iterator
;
75
typedef
typename
boost::remove_const<Element>::type
Value
;
76
typedef
Value
const
Reference
;
77
typedef
boost::mpl::false_
IsScalar
;
78
};
79
85
template
<
typename
Operand1,
typename
Operand2,
typename
BinaryFunction,
int
N>
86
struct
ExpressionTraits
< detail::BinaryOpExpression<Operand1,Operand2,BinaryFunction,N> > {
87
typedef
typename
BinaryFunction::result_type
Element
;
88
typedef
typename
ExpressionTraits<Operand1>::ND
ND
;
89
typedef
detail::BinaryOpIterator<Operand1,Operand2,BinaryFunction>
Iterator
;
90
typedef
detail::BinaryOpExpression
<
91
typename
ExpressionTraits<Operand1>::Reference
,
92
typename
ExpressionTraits<Operand2>::Reference
,
93
BinaryFunction, N-1 >
Reference
;
94
typedef
Reference
Value
;
95
typedef
boost::mpl::false_
IsScalar
;
96
BOOST_STATIC_ASSERT((ND::value ==
ExpressionTraits<Operand2>::ND::value
));
97
};
98
104
template
<
typename
Operand1,
typename
Operand2,
typename
BinaryFunction>
105
struct
ExpressionTraits
< detail::BinaryOpExpression<Operand1,Operand2,BinaryFunction,1> > {
106
typedef
typename
BinaryFunction::result_type
Element
;
107
typedef
typename
ExpressionTraits<Operand1>::ND
ND
;
108
typedef
detail::BinaryOpIterator<Operand1,Operand2,BinaryFunction>
Iterator
;
109
typedef
typename
boost::remove_const<Element>::type
Value
;
110
typedef
Value
const
Reference
;
111
typedef
boost::mpl::false_
IsScalar
;
112
BOOST_STATIC_ASSERT((ND::value ==
ExpressionTraits<Operand2>::ND::value
));
113
};
114
115
#endif // GCC_45
116
117
}
// namespace ndarray
118
119
#endif // !NDARRAY_ExpressionTraits_h_INCLUDED
ndarray::detail::UnaryOpIterator
Definition:
UnaryOp.h:47
ndarray::ExpressionTraits< detail::BinaryOpExpression< Operand1, Operand2, BinaryFunction, N > >::Reference
detail::BinaryOpExpression< typename ExpressionTraits< Operand1 >::Reference, typename ExpressionTraits< Operand2 >::Reference, BinaryFunction, N-1 > Reference
Definition:
ExpressionTraits.h:93
ndarray::ExpressionTraits< detail::UnaryOpExpression< Operand, UnaryFunction, N > >::ND
ExpressionTraits< Operand >::ND ND
Definition:
ExpressionTraits.h:56
ndarray::ExpressionTraits< detail::UnaryOpExpression< Operand, UnaryFunction, 1 > >::Element
UnaryFunction::result_type Element
Definition:
ExpressionTraits.h:72
ndarray::detail::UnaryOpExpression
Definition:
UnaryOp.h:86
ndarray::ExpressionTraits< detail::BinaryOpExpression< Operand1, Operand2, BinaryFunction, N > >::ND
ExpressionTraits< Operand1 >::ND ND
Definition:
ExpressionTraits.h:88
ndarray::ExpressionTraits< detail::BinaryOpExpression< Operand1, Operand2, BinaryFunction, N > >::Value
Reference Value
Definition:
ExpressionTraits.h:94
ndarray::ExpressionTraits< detail::BinaryOpExpression< Operand1, Operand2, BinaryFunction, N > >::IsScalar
boost::mpl::false_ IsScalar
Definition:
ExpressionTraits.h:95
ndarray::ExpressionTraits< detail::UnaryOpExpression< Operand, UnaryFunction, N > >::Iterator
detail::UnaryOpIterator< Operand, UnaryFunction > Iterator
Definition:
ExpressionTraits.h:57
ndarray::ExpressionTraits< detail::UnaryOpExpression< Operand, UnaryFunction, 1 > >::Value
boost::remove_const< Element >::type Value
Definition:
ExpressionTraits.h:75
ndarray::ExpressionTraits< detail::UnaryOpExpression< Operand, UnaryFunction, N > >::IsScalar
boost::mpl::false_ IsScalar
Definition:
ExpressionTraits.h:62
ndarray::ExpressionTraits< detail::UnaryOpExpression< Operand, UnaryFunction, N > >::Reference
Value Reference
Definition:
ExpressionTraits.h:61
ndarray::ExpressionTraits< detail::BinaryOpExpression< Operand1, Operand2, BinaryFunction, N > >::Iterator
detail::BinaryOpIterator< Operand1, Operand2, BinaryFunction > Iterator
Definition:
ExpressionTraits.h:89
ndarray::ExpressionTraits< detail::UnaryOpExpression< Operand, UnaryFunction, 1 > >::ND
ExpressionTraits< Operand >::ND ND
Definition:
ExpressionTraits.h:73
ndarray_fwd.h
Forward declarations and default template parameters for ndarray.
ndarray::ExpressionTraits< detail::BinaryOpExpression< Operand1, Operand2, BinaryFunction, 1 > >::IsScalar
boost::mpl::false_ IsScalar
Definition:
ExpressionTraits.h:111
ndarray::ExpressionTraits
Traits for expressions.
Definition:
ExpressionTraits.h:42
ndarray::ExpressionTraits< detail::UnaryOpExpression< Operand, UnaryFunction, N > >::Element
UnaryFunction::result_type Element
Definition:
ExpressionTraits.h:55
ndarray::ExpressionTraits< detail::BinaryOpExpression< Operand1, Operand2, BinaryFunction, 1 > >::Element
BinaryFunction::result_type Element
Definition:
ExpressionTraits.h:106
ndarray::ExpressionTraits< detail::UnaryOpExpression< Operand, UnaryFunction, 1 > >::Reference
Value const Reference
Definition:
ExpressionTraits.h:76
ndarray::ExpressionTraits< detail::BinaryOpExpression< Operand1, Operand2, BinaryFunction, N > >::Element
BinaryFunction::result_type Element
Definition:
ExpressionTraits.h:87
ndarray::ExpressionTraits< detail::UnaryOpExpression< Operand, UnaryFunction, N > >::Value
detail::UnaryOpExpression< typename ExpressionTraits< Operand >::Reference, UnaryFunction, N-1 > Value
Definition:
ExpressionTraits.h:60
ndarray::detail::BinaryOpExpression
Definition:
BinaryOp.h:103
ndarray::detail::BinaryOpIterator
Definition:
BinaryOp.h:49
ndarray::ExpressionTraits< detail::UnaryOpExpression< Operand, UnaryFunction, 1 > >::IsScalar
boost::mpl::false_ IsScalar
Definition:
ExpressionTraits.h:77
ndarray::ExpressionTraits< detail::BinaryOpExpression< Operand1, Operand2, BinaryFunction, 1 > >::Iterator
detail::BinaryOpIterator< Operand1, Operand2, BinaryFunction > Iterator
Definition:
ExpressionTraits.h:108
ndarray::ExpressionTraits< detail::BinaryOpExpression< Operand1, Operand2, BinaryFunction, 1 > >::Reference
Value const Reference
Definition:
ExpressionTraits.h:110
ndarray::ExpressionTraits< detail::BinaryOpExpression< Operand1, Operand2, BinaryFunction, 1 > >::ND
ExpressionTraits< Operand1 >::ND ND
Definition:
ExpressionTraits.h:107
ndarray::ExpressionTraits< detail::BinaryOpExpression< Operand1, Operand2, BinaryFunction, 1 > >::Value
boost::remove_const< Element >::type Value
Definition:
ExpressionTraits.h:109
ndarray::ExpressionTraits::IsScalar
boost::mpl::true_ IsScalar
Definition:
ExpressionTraits.h:43
ndarray::ExpressionTraits< detail::UnaryOpExpression< Operand, UnaryFunction, 1 > >::Iterator
detail::UnaryOpIterator< Operand, UnaryFunction > Iterator
Definition:
ExpressionTraits.h:74
Generated on Thu Sep 24 2015 02:29:23 for LSSTApplications by
1.8.5