Changeset 2564 in Sophya for trunk/SophyaLib/TArray/tarray.h
- Timestamp:
- Jul 26, 2004, 7:30:40 PM (21 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/TArray/tarray.h
r2322 r2564 29 29 // Creation / destruction 30 30 TArray(); 31 TArray(int_4 ndim, const sa_size_t * siz, sa_size_t step =1 );32 TArray(sa_size_t nx, sa_size_t ny=0, sa_size_t nz=0, sa_size_t nt=0, sa_size_t nu=0 );31 TArray(int_4 ndim, const sa_size_t * siz, sa_size_t step =1, bool fzero=true); 32 TArray(sa_size_t nx, sa_size_t ny=0, sa_size_t nz=0, sa_size_t nt=0, sa_size_t nu=0, bool fzero=true); 33 33 TArray(int_4 ndim, const sa_size_t * siz, NDataBlock<T> & db, bool share=false, sa_size_t step=1, sa_size_t offset=0); 34 34 TArray(int_4 ndim, const sa_size_t * siz, T* values, sa_size_t step=1, sa_size_t offset=0, Bridge* br=NULL); … … 57 57 void Share(const TArray<T>& a); 58 58 59 void ReSize(int_4 ndim, sa_size_t * siz, sa_size_t step=1 );60 void ReSize(const BaseArray& a );59 void ReSize(int_4 ndim, sa_size_t * siz, sa_size_t step=1, bool fzero=true); 60 void ReSize(const BaseArray& a, bool pack=true, bool fzero=true); 61 61 //! a synonym (alias) for method ReSize(int_4, ...) 62 inline void SetSize(int_4 ndim, sa_size_t * siz, sa_size_t step=1 )63 { ReSize(ndim, siz, step ); }62 inline void SetSize(int_4 ndim, sa_size_t * siz, sa_size_t step=1, bool fzero=true) 63 { ReSize(ndim, siz, step, fzero); } 64 64 //! a synonym (alias) for method ReSize(const BaseArray&) 65 inline void SetSize(const BaseArray& a )66 { ReSize(a ); }65 inline void SetSize(const BaseArray& a, bool pack=true, bool fzero=true) 66 { ReSize(a, pack, fzero); } 67 67 void Realloc(int_4 ndim, sa_size_t * siz, sa_size_t step=1, bool force=false); 68 68 … … 129 129 //! Fill TArray with all elements equal to \b x 130 130 inline TArray<T>& operator = (T x) { return SetT(x); } 131 132 // addition et soustraction de constante 133 virtual TArray<T>& AddCst(T x, TArray<T>& res) const ; 134 virtual TArray<T>& SubCst(T x, TArray<T>& res, bool fginv=false) const ; 135 // Multiplication et division par une constante 136 virtual TArray<T>& MulCst(T x, TArray<T>& res) const ; 137 virtual TArray<T>& DivCst(T x, TArray<T>& res, bool fginv=false) const ; 138 131 139 // A += -= *= /= x (ajoute, soustrait, ... x a tous les elements) 132 virtual TArray<T>& Add(T x); 140 inline TArray<T>& Add(T x) { return AddCst(x, *this); } 141 inline TArray<T>& Sub(T x, bool fginv=false) { return SubCst(x, *this, fginv); } 142 inline TArray<T>& Mul(T x) { return MulCst(x, *this); } 143 inline TArray<T>& Div(T x, bool fginv=false) { return DivCst(x, *this, fginv); } 144 133 145 //! Add \b x to all elements 134 inline TArray<T>& operator += (T x) { return Add(x); } 135 virtual TArray<T>& Sub(T x, bool fginv=false); 146 inline TArray<T>& operator += (T x) { return AddCst(x, *this); } 136 147 //! Substract \b x to all elements 137 inline TArray<T>& operator -= (T x) { return Sub(x); } 138 virtual TArray<T>& Mul(T x); 148 inline TArray<T>& operator -= (T x) { return SubCst(x, *this); } 139 149 //! Multiply all elements by \b x 140 inline TArray<T>& operator *= (T x) { return Mul(x); } 141 virtual TArray<T>& Div(T x, bool fginv=false); 150 inline TArray<T>& operator *= (T x) { return MulCst(x, *this); } 142 151 //! Divide all elements by \b x 143 inline TArray<T>& operator /= (T x) { return Div (x); }152 inline TArray<T>& operator /= (T x) { return DivCst(x, *this); } 144 153 145 154 // applique le signe moins a tous les elements 146 virtual TArray<T>& NegateElt(); 147 155 virtual TArray<T>& NegateElt(TArray<T>& res) const ; 156 //! Replace array elements values by their opposite ( (*this)(i) -> -(*this)(i) ) 157 inline TArray<T>& NegateElt() { return NegateElt(*this); } 158 148 159 // A += -= (ajoute, soustrait element par element les deux tableaux ) 149 160 virtual TArray<T>& AddElt(const TArray<T>& a); … … 209 220 \brief Operator TArray = TArray + constant */ 210 221 template <class T> inline TArray<T> operator + (const TArray<T>& a, T b) 211 {TArray<T> result; result. CloneOrShare(a); result.SetTemp(true);212 result.Add(b); return result;}222 {TArray<T> result; result.SetTemp(true); 223 a.Add(b, result); return result;} 213 224 214 225 /*! \ingroup TArray \fn operator+(T,const TArray<T>&) 215 226 \brief Operator TArray = constant + TArray */ 216 227 template <class T> inline TArray<T> operator + (T b,const TArray<T>& a) 217 {TArray<T> result; result. CloneOrShare(a); result.SetTemp(true);218 result.Add(b); return result;}228 {TArray<T> result; result.SetTemp(true); 229 a.Add(b, result); return result;} 219 230 220 231 /*! \ingroup TArray \fn operator-(const TArray<T>&,T) 221 232 \brief Operator TArray = TArray - constant */ 222 233 template <class T> inline TArray<T> operator - (const TArray<T>& a, T b) 223 {TArray<T> result; result. CloneOrShare(a); result.SetTemp(true);224 result.Sub(b); return result;}234 {TArray<T> result; result.SetTemp(true); 235 a.Sub(b,result); return result;} 225 236 226 237 /*! \ingroup TArray \fn operator-(T,const TArray<T>&) 227 238 \brief Operator TArray = constant - TArray */ 228 239 template <class T> inline TArray<T> operator - (T b,const TArray<T>& a) 229 {TArray<T> result; result. CloneOrShare(a); result.SetTemp(true);230 result.Sub(b,true); return result;}240 {TArray<T> result; result.SetTemp(true); 241 a.Sub(b,result,true); return result;} 231 242 232 243 /*! \ingroup TArray \fn operator*(const TArray<T>&,T) 233 244 \brief Operator TArray = TArray * constant */ 234 245 template <class T> inline TArray<T> operator * (const TArray<T>& a, T b) 235 {TArray<T> result; result. CloneOrShare(a); result.SetTemp(true);236 result.Mul(b); return result;}246 {TArray<T> result; result.SetTemp(true); 247 a.MulCst(b, result); return result;} 237 248 238 249 /*! \ingroup TArray \fn operator*(T,const TArray<T>&) 239 250 \brief Operator TArray = constant * TArray */ 240 251 template <class T> inline TArray<T> operator * (T b,const TArray<T>& a) 241 {TArray<T> result; result. CloneOrShare(a); result.SetTemp(true);242 result.Mul(b); return result;}252 {TArray<T> result; result.SetTemp(true); 253 a.MulCst(b,result); return result;} 243 254 244 255 /*! \ingroup TArray \fn operator/(const TArray<T>&,T) 245 256 \brief Operator TArray = TArray / constant */ 246 257 template <class T> inline TArray<T> operator / (const TArray<T>& a, T b) 247 {TArray<T> result; result. CloneOrShare(a); result.SetTemp(true);248 result.Div(b); return result;}258 {TArray<T> result; result.SetTemp(true); 259 a.Div(b,result); return result;} 249 260 250 261 /*! \ingroup TArray \fn operator/(T,const TArray<T>&) 251 262 \brief Operator TArray = constant / TArray */ 252 263 template <class T> inline TArray<T> operator / (T b, const TArray<T>& a) 253 {TArray<T> result; result. CloneOrShare(a); result.SetTemp(true);254 result.Div(b, true); return result;}264 {TArray<T> result; result.SetTemp(true); 265 a.Div(b, result, true); return result;} 255 266 256 267 ////////////////////////////////////////////////////////////////
Note:
See TracChangeset
for help on using the changeset viewer.