Sacado Package Browser (Single Doxygen Collection) Version of the Day
Loading...
Searching...
No Matches
Sacado_Fad_ExpressionTraits.hpp
Go to the documentation of this file.
1// @HEADER
2// ***********************************************************************
3//
4// Sacado Package
5// Copyright (2006) Sandia Corporation
6//
7// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
8// the U.S. Government retains certain rights in this software.
9//
10// This library is free software; you can redistribute it and/or modify
11// it under the terms of the GNU Lesser General Public License as
12// published by the Free Software Foundation; either version 2.1 of the
13// License, or (at your option) any later version.
14//
15// This library is distributed in the hope that it will be useful, but
16// WITHOUT ANY WARRANTY; without even the implied warranty of
17// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18// Lesser General Public License for more details.
19//
20// You should have received a copy of the GNU Lesser General Public
21// License along with this library; if not, write to the Free Software
22// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
23// USA
24// Questions? Contact David M. Gay (dmgay@sandia.gov) or Eric T. Phipps
25// (etphipp@sandia.gov).
26//
27// ***********************************************************************
28// @HEADER
29
30#ifndef SACADO_FAD_EXPRESSIONTRAITS_HPP
31#define SACADO_FAD_EXPRESSIONTRAITS_HPP
32
33#include "Sacado_ConfigDefs.h"
34
35#ifdef SACADO_NEW_FAD_DESIGN_IS_DEFAULT
36
38
39#else
40
41#include "Sacado_Traits.hpp"
42
44
45namespace Sacado {
46
49
50
51 template <typename T>
52 struct ScalarType< Fad::Expr<T> > {
54 };
55
57 template <typename T>
58 struct ValueType< Fad::Expr<T> > {
60 };
61
63 template <typename T>
64 struct IsADType< Fad::Expr<T> > {
65 static const bool value = true;
66 };
67
69 template <typename T>
70 struct IsScalarType< Fad::Expr<T> > {
71 static const bool value = false;
72 };
73
75 template <typename T>
76 struct IsSimdType< Fad::Expr<T> > {
78 };
79
81 template <typename T>
82 struct Value< Fad::Expr<T> > {
83 typedef typename ValueType< Fad::Expr<T> >::type value_type;
85 static const value_type& eval(const Fad::Expr<T>& x) {
86 return x.val(); }
87 };
88
90 template <typename T>
91 struct ScalarValue< Fad::Expr<T> > {
92 typedef typename ValueType< Fad::Expr<T> >::type value_type;
93 typedef typename ScalarType< Fad::Expr<T> >::type scalar_type;
95 static const scalar_type& eval(const Fad::Expr<T>& x) {
96 return ScalarValue<value_type>::eval(x.val()); }
97 };
98
99} // namespace Sacado
100
101#endif // SACADO_NEW_FAD_DESIGN_IS_DEFAULT
102
103#endif // SACADO_FAD_EXPRESSIONTRAITS_HPP
#define SACADO_INLINE_FUNCTION
#define SACADO_EXPR_PROMOTE_SPEC(NS)
Wrapper for a generic expression template.
Base template specification for IsADType.
static const bool value
Base template specification for IsScalarType.
static const bool value
Base template specification for IsSimdType.
static const bool value
ScalarType< typenameFad::Expr< T >::value_type >::type type
Base template specification for ScalarType.
ValueType< Fad::Expr< T > >::type value_type
ScalarType< Fad::Expr< T > >::type scalar_type
static SACADO_INLINE_FUNCTION const scalar_type & eval(const Fad::Expr< T > &x)
Base template specification for ScalarValue.
static SACADO_INLINE_FUNCTION const T & eval(const T &x)
Base template specification for ValueType.
ValueType< Fad::Expr< T > >::type value_type
static SACADO_INLINE_FUNCTION const value_type & eval(const Fad::Expr< T > &x)
Base template specification for Value.