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_FAD_DMFAD_HPP
00033 #define SACADO_FAD_DMFAD_HPP
00034
00035 #include "Sacado_Fad_GeneralFadExpr.hpp"
00036 #include "Sacado_Fad_MemPoolStorage.hpp"
00037 #include "Sacado_Fad_DMFadTraits.hpp"
00038
00039 namespace Sacado {
00040
00041 namespace Fad {
00042
00063 template <typename ValueT,
00064 typename ScalarT = typename ScalarValueType<ValueT>::type >
00065 class DMFad : public Expr< GeneralFad<ValueT,MemPoolStorage<ValueT> > > {
00066
00067 public:
00068
00073
00075
00078 DMFad() :
00079 Expr< GeneralFad< ValueT,MemPoolStorage<ValueT> > >() {}
00080
00082
00085 DMFad(const ValueT& x) :
00086 Expr< GeneralFad< ValueT,MemPoolStorage<ValueT> > >(x) {}
00087
00089
00092 DMFad(const ScalarT& x) :
00093 Expr< GeneralFad< ValueT,MemPoolStorage<ValueT> > >(ValueT(x)) {}
00094
00096
00099 DMFad(const int sz, const ValueT& x) :
00100 Expr< GeneralFad< ValueT,MemPoolStorage<ValueT> > >(sz,x) {}
00101
00103
00108 DMFad(const int sz, const int i, const ValueT & x) :
00109 Expr< GeneralFad< ValueT,MemPoolStorage<ValueT> > >(sz,i,x) {}
00110
00112 DMFad(const DMFad& x) :
00113 Expr< GeneralFad< ValueT,MemPoolStorage<ValueT> > >(x) {}
00114
00116 template <typename S> DMFad(const Expr<S>& x) :
00117 Expr< GeneralFad< ValueT,MemPoolStorage<ValueT> > >(x) {}
00118
00120
00122 ~DMFad() {}
00123
00125 DMFad& operator=(const ValueT& val) {
00126 GeneralFad< ValueT,MemPoolStorage<ValueT> >::operator=(val);
00127 return *this;
00128 }
00129
00131 DMFad& operator=(const ScalarT& val) {
00132 GeneralFad< ValueT,MemPoolStorage<ValueT> >::operator=(ValueT(val));
00133 return *this;
00134 }
00135
00137 DMFad& operator=(const DMFad& x) {
00138 GeneralFad< ValueT,MemPoolStorage<ValueT> >::operator=(static_cast<const GeneralFad< ValueT,MemPoolStorage<ValueT> >&>(x));
00139 return *this;
00140 }
00141
00143 template <typename S> DMFad& operator=(const Expr<S>& x)
00144 {
00145 GeneralFad< ValueT,MemPoolStorage<ValueT> >::operator=(x);
00146 return *this;
00147 }
00148
00150 static void setDefaultPool(MemPool* pool) {
00151 MemPoolStorage<ValueT>::defaultPool_ = pool;
00152 }
00153
00154 };
00155
00165 template <typename ValueT>
00166 class DMFad<ValueT,ValueT> :
00167 public Expr< GeneralFad<ValueT,MemPoolStorage<ValueT> > > {
00168
00169 public:
00170
00175
00177
00180 DMFad() :
00181 Expr< GeneralFad< ValueT,MemPoolStorage<ValueT> > >() {}
00182
00184
00187 DMFad(const ValueT& x) :
00188 Expr< GeneralFad< ValueT,MemPoolStorage<ValueT> > >(x) {}
00189
00191
00194 DMFad(const int sz, const ValueT& x) :
00195 Expr< GeneralFad< ValueT,MemPoolStorage<ValueT> > >(sz,x) {}
00196
00198
00203 DMFad(const int sz, const int i, const ValueT& x) :
00204 Expr< GeneralFad< ValueT,MemPoolStorage<ValueT> > >(sz,i,x) {}
00205
00207 DMFad(const DMFad& x) :
00208 Expr< GeneralFad< ValueT,MemPoolStorage<ValueT> > >(x) {}
00209
00211 template <typename S> DMFad(const Expr<S>& x) :
00212 Expr< GeneralFad< ValueT,MemPoolStorage<ValueT> > >(x) {}
00213
00215
00217 ~DMFad() {}
00218
00220 DMFad& operator=(const ValueT& val) {
00221 GeneralFad< ValueT,MemPoolStorage<ValueT> >::operator=(val);
00222 return *this;
00223 }
00224
00226 DMFad& operator=(const DMFad& x) {
00227 GeneralFad< ValueT,MemPoolStorage<ValueT> >::operator=(static_cast<const GeneralFad< ValueT,MemPoolStorage<ValueT> >&>(x));
00228 return *this;
00229 }
00230
00232 template <typename S> DMFad& operator=(const Expr<S>& x)
00233 {
00234 GeneralFad< ValueT,MemPoolStorage<ValueT> >::operator=(x);
00235 return *this;
00236 }
00237
00239 static void setDefaultPool(MemPool* pool) {
00240 MemPoolStorage<ValueT>::defaultPool_ = pool;
00241 }
00242
00243 };
00244
00245 }
00246
00247 }
00248
00249 #endif // SACADO_FAD_DMFAD_HPP