00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef SACADO_ELRFAD_SLFAD_HPP
00033 #define SACADO_ELRFAD_SLFAD_HPP
00034
00035 #include "Sacado_ELRFad_GeneralFadExpr.hpp"
00036 #include "Sacado_Fad_StaticStorage.hpp"
00037 #include "Sacado_ELRFad_SLFadTraits.hpp"
00038
00039 namespace Sacado {
00040
00041 namespace ELRFad {
00042
00066 template <typename ValueT, int Num,
00067 typename ScalarT = typename ScalarValueType<ValueT>::type >
00068 class SLFad :
00069 public Expr< GeneralFad<ValueT,Fad::StaticStorage<ValueT,Num> > > {
00070
00071 public:
00072
00077
00079
00082 SLFad() :
00083 Expr< GeneralFad< ValueT,Fad::StaticStorage<ValueT,Num> > >() {}
00084
00086
00089 SLFad(const ValueT & x) :
00090 Expr< GeneralFad< ValueT,Fad::StaticStorage<ValueT,Num> > >(x) {}
00091
00093
00096 SLFad(const ScalarT& x) :
00097 Expr< GeneralFad< ValueT,Fad::StaticStorage<ValueT,Num> > >(ValueT(x)) {}
00098
00100
00103 SLFad(const int sz, const ValueT & x) :
00104 Expr< GeneralFad< ValueT,Fad::StaticStorage<ValueT,Num> > >(sz,x) {}
00105
00107
00112 SLFad(const int sz, const int i, const ValueT & x) :
00113 Expr< GeneralFad< ValueT,Fad::StaticStorage<ValueT,Num> > >(sz,i,x) {}
00114
00116 SLFad(const SLFad& x) :
00117 Expr< GeneralFad< ValueT,Fad::StaticStorage<ValueT,Num> > >(x) {}
00118
00120 template <typename S> SLFad(const Expr<S>& x) :
00121 Expr< GeneralFad< ValueT,Fad::StaticStorage<ValueT,Num> > >(x) {}
00122
00124
00126 ~SLFad() {}
00127
00129 SLFad& operator=(const ValueT& val) {
00130 GeneralFad< ValueT,Fad::StaticStorage<ValueT,Num> >::operator=(val);
00131 return *this;
00132 }
00133
00135 SLFad& operator=(const ScalarT& val) {
00136 GeneralFad< ValueT,Fad::StaticStorage<ValueT,Num> >::operator=(ValueT(val));
00137 return *this;
00138 }
00139
00141 SLFad& operator=(const SLFad& x) {
00142 GeneralFad< ValueT,Fad::StaticStorage<ValueT,Num> >::operator=(static_cast<const GeneralFad< ValueT,Fad::StaticStorage<ValueT,Num> >&>(x));
00143 return *this;
00144 }
00145
00147 template <typename S> SLFad& operator=(const Expr<S>& x)
00148 {
00149 GeneralFad< ValueT,Fad::StaticStorage<ValueT,Num> >::operator=(x);
00150 return *this;
00151 }
00152
00153 };
00154
00156
00161 template <typename ValueT, int Num>
00162 class SLFad<ValueT,Num,ValueT> :
00163 public Expr< GeneralFad<ValueT,Fad::StaticStorage<ValueT,Num> > >{
00164
00165 public:
00166
00171
00173
00176 SLFad() : Expr< GeneralFad< ValueT,Fad::StaticStorage<ValueT,Num> > >() {}
00177
00179
00182 SLFad(const ValueT & x) :
00183 Expr< GeneralFad< ValueT,Fad::StaticStorage<ValueT,Num> > >(x) {}
00184
00186
00189 SLFad(const int sz, const ValueT & x) :
00190 Expr< GeneralFad< ValueT,Fad::StaticStorage<ValueT,Num> > >(sz,x) {}
00191
00193
00198 SLFad(const int sz, const int i, const ValueT & x) :
00199 Expr< GeneralFad< ValueT,Fad::StaticStorage<ValueT,Num> > >(sz,i,x) {}
00200
00202 SLFad(const SLFad& x) :
00203 Expr< GeneralFad< ValueT,Fad::StaticStorage<ValueT,Num> > >(x) {}
00204
00206 template <typename S> SLFad(const Expr<S>& x) :
00207 Expr< GeneralFad< ValueT,Fad::StaticStorage<ValueT,Num> > >(x) {}
00208
00210
00212 ~SLFad() {}
00213
00215 SLFad& operator=(const ValueT& val) {
00216 GeneralFad< ValueT,Fad::StaticStorage<ValueT,Num> >::operator=(val);
00217 return *this;
00218 }
00219
00221 SLFad& operator=(const SLFad& x) {
00222 GeneralFad< ValueT,Fad::StaticStorage<ValueT,Num> >::operator=(static_cast<const GeneralFad< ValueT,Fad::StaticStorage<ValueT,Num> >&>(x));
00223 return *this;
00224 }
00225
00227 template <typename S> SLFad& operator=(const Expr<S>& x)
00228 {
00229 GeneralFad< ValueT,Fad::StaticStorage<ValueT,Num> >::operator=(x);
00230 return *this;
00231 }
00232
00233 };
00234
00235 }
00236
00237 }
00238
00239 #endif // SACADO_ELRFAD_SLFAD_HPP