Changeset 2564 in Sophya for trunk/SophyaLib/TArray/tarray.h


Ignore:
Timestamp:
Jul 26, 2004, 7:30:40 PM (21 years ago)
Author:
ansari
Message:

Remplacement methodes Add/Mul/Sub/Div(T x) par AddCst/MulCst/SubCst/DivCst(T x, TArray<T> res) ds TArray - Reza 26 Juillet 2004

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/TArray/tarray.h

    r2322 r2564  
    2929  // Creation / destruction
    3030  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);
    3333  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);
    3434  TArray(int_4 ndim, const sa_size_t * siz, T* values, sa_size_t step=1, sa_size_t offset=0, Bridge* br=NULL);
     
    5757  void Share(const TArray<T>& a);
    5858
    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);
    6161  //! 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); }
    6464  //! 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); }
    6767  void Realloc(int_4 ndim, sa_size_t * siz, sa_size_t step=1, bool force=false);
    6868
     
    129129  //! Fill TArray with all elements equal to \b x
    130130  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
    131139// 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
    133145  //! 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); }
    136147  //! 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); }
    139149  //! 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); }
    142151  //! 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); }
    144153
    145154// 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
    148159// A += -=  (ajoute, soustrait element par element les deux tableaux )
    149160  virtual TArray<T>&  AddElt(const TArray<T>& a);
     
    209220  \brief Operator TArray = TArray + constant */
    210221template <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;}
    213224
    214225/*! \ingroup TArray \fn operator+(T,const TArray<T>&)
    215226  \brief Operator TArray = constant + TArray */
    216227template <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;}
    219230
    220231/*! \ingroup TArray \fn operator-(const TArray<T>&,T)
    221232  \brief Operator TArray = TArray - constant */
    222233template <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;}
    225236
    226237/*! \ingroup TArray \fn operator-(T,const TArray<T>&)
    227238  \brief Operator TArray = constant - TArray */
    228239template <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;}
    231242
    232243/*! \ingroup TArray \fn operator*(const TArray<T>&,T)
    233244  \brief Operator TArray = TArray * constant */
    234245template <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;}
    237248
    238249/*! \ingroup TArray \fn operator*(T,const TArray<T>&)
    239250  \brief Operator TArray = constant * TArray */
    240251template <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;}
    243254
    244255/*! \ingroup TArray \fn operator/(const TArray<T>&,T)
    245256  \brief Operator TArray = TArray / constant */
    246257template <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;}
    249260
    250261/*! \ingroup TArray \fn operator/(T,const TArray<T>&)
    251262  \brief Operator TArray = constant / TArray  */
    252263template <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;}
    255266
    256267////////////////////////////////////////////////////////////////
Note: See TracChangeset for help on using the changeset viewer.