Changeset 1419 in Sophya for trunk/SophyaLib/SkyMap/localmap.h


Ignore:
Timestamp:
Feb 23, 2001, 12:26:48 PM (25 years ago)
Author:
lemeur
Message:

surcharge d'operateurs =, +=, *= etc...

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/SkyMap/localmap.h

    r1217 r1419  
    104104void print(ostream& os) const;
    105105
     106// Operations diverses  = , +=, ...
     107
     108
     109virtual LocalMap<T>& Set(const LocalMap<T>& a);
    106110inline  LocalMap<T>& operator = (const LocalMap<T>& a) {return Set(a);}
    107111
     112// A += -= *= /= x (ajoute, soustrait, ... x a tous les elements)
     113
     114  //! Fill LocalMap with all elements equal to \b x
     115virtual LocalMap<T>& SetT(T a);
     116inline  LocalMap<T>& operator = (T a) {return SetT(a);}
     117
     118//! Add \b x to all elements
     119virtual LocalMap<T>& Add(T a);
     120inline  LocalMap<T>&  operator += (T x)  { return Add(x); }
     121//! Substract \b x to all elements
     122virtual LocalMap<T>& Sub(T a);
     123inline   LocalMap<T>&  operator -= (T x)  { return Sub(x); }
     124//! Multiply all elements by \b x
     125virtual LocalMap<T>& Mul(T a);
     126inline  LocalMap<T>&  operator *= (T x)  { return Mul(x); }
     127//! Divide all elements by \b x
     128virtual LocalMap<T>& Div(T a);
     129inline  LocalMap<T>&  operator /= (T x)  { return Div(x); }
     130
     131// A += -=  (ajoute, soustrait element par element les deux spheres )
     132  //! Operator LocalMap += LocalMap
     133  virtual LocalMap<T>&  AddElt(const LocalMap<T>& a);
     134  inline  LocalMap<T>&  operator += (const LocalMap<T>& a)  { return AddElt(a); }
     135
     136
     137
     138  virtual LocalMap<T>&  SubElt(const LocalMap<T>& a);
     139  //! Operator LocalMap -= LocalMap
     140  inline  LocalMap<T>&  operator -= (const LocalMap<T>& a)  { return SubElt(a); }
     141// Multiplication, division element par element les deux LocalMap
     142  virtual LocalMap<T>&  MulElt(const LocalMap<T>& a);
     143  inline  LocalMap<T>&  operator *= (const LocalMap<T>& a)  { return MulElt(a); }
     144
     145
     146void CloneOrShare(const LocalMap<T>& a);
     147void Share(const LocalMap<T>& a);
     148LocalMap<T>& CopyElt(const LocalMap<T>& a);
    108149
    109150
     
    120161
    121162void recopierVariablesSimples(const LocalMap<T>& lm);
    122 LocalMap<T>& Set(const LocalMap<T>& a);
    123 void CloneOrShare(const LocalMap<T>& a);
    124   LocalMap<T>& CopyElt(const LocalMap<T>& a);
    125163
    126164
     
    146184};
    147185
     186////////////////////////////////////////////////////////////////
     187// Surcharge d'operateurs A (+,-,*,/) (T) x
     188/*! \ingroup LocalMap \fn operator+(const LocalMap<T>&,T)
     189  \brief Operator LocalMap = LocalMap + constant */
     190template <class T> inline LocalMap<T> operator + (const LocalMap<T>& a, T b)
     191    {LocalMap<T> result; result.CloneOrShare(a); result.SetTemp(true);
     192    result.Add(b); return result;}
     193/*! \ingroup LocalMap \fn operator+(T,const LocalMap<T>&)
     194  \brief Operator LocalMap = constant + LocalMap */
     195template <class T> inline LocalMap<T> operator + (T b,const LocalMap<T>& a)
     196    {LocalMap<T> result; result.CloneOrShare(a); result.SetTemp(true);
     197    result.Add(b); return result;}
     198
     199
     200/*! \ingroup LocalMap\fn operator-(const LocalMap<T>&,T)
     201  \brief Operator LocalMap = LocalMap - constant */
     202template <class T> inline LocalMap<T> operator - (const LocalMap<T>& a, T b)
     203    {LocalMap<T> result; result.CloneOrShare(a); result.SetTemp(true);
     204    result.Sub(b); return result;}
     205
     206/*! \ingroup  \fn operator-(T,const LocalMap<T>&)
     207  \brief Operator LocalMap = constant - LocalMap */
     208template <class T> inline LocalMap<T> operator - (T b,const LocalMap<T>& a)
     209    {LocalMap<T> result; result.CloneOrShare(a); result.SetTemp(true);
     210    result.Sub(b,true); return result;}
     211
     212/*! \ingroup LocalMap \fn operator*(const LocalMap<T>&,T)
     213  \brief Operator LocalMap = LocalMap * constant */
     214template <class T> inline LocalMap<T> operator * (const LocalMap<T>& a, T b)
     215    {LocalMap<T> result; result.CloneOrShare(a); result.SetTemp(true);
     216    result.Mul(b); return result;}
     217
     218/*! \ingroup LocalMap \fn operator*(T,const LocalMap<T>&)
     219  \brief Operator LocalMap = constant * LocalMap */
     220template <class T> inline LocalMap<T> operator * (T b,const LocalMap<T>& a)
     221    {LocalMap<T> result; result.CloneOrShare(a); result.SetTemp(true);
     222    result.Mul(b); return result;}
     223
     224/*! \ingroup LocalMap \fn operator/(const LocalMap<T>&,T)
     225  \brief Operator LocalMap = LocalMap / constant */
     226template <class T> inline LocalMap<T> operator / (const LocalMap<T>& a, T b)
     227    {LocalMap<T> result; result.CloneOrShare(a); result.SetTemp(true);
     228    result.Div(b); return result;}
     229
     230/*! \ingroup LocalMap \fn operator/(T,const LocalMap<T>&)
     231  \brief Operator LocalMap = constant / LocalMap  */
     232template <class T> inline LocalMap<T> operator / (T b, const LocalMap<T>& a)
     233    {LocalMap<T> result; result.CloneOrShare(a); result.SetTemp(true);
     234    result.Div(b, true); return result;}
     235
     236////////////////////////////////////////////////////////////////
     237// Surcharge d'operateurs C = A (+,-) B
     238
     239/*! \ingroup LocalMap \fn operator+(const LocalMap<T>&,const LocalMap<T>&)
     240  \brief Operator LocalMap = LocalMap + LocalMap */
     241template <class T>
     242inline LocalMap<T> operator + (const LocalMap<T>& a,const LocalMap<T>& b)
     243    { LocalMap<T> result; result.SetTemp(true);
     244    if (b.IsTemp())  { result.Share(b); result.AddElt(a); }
     245    else { result.CloneOrShare(a); result.AddElt(b); }
     246    return result; }
     247
     248/*! \ingroup LocalMap \fn operator-(const LocalMap<T>&,const LocalMap<T>&)
     249  \brief Operator LocalMap = LocalMap - LocalMap */
     250template <class T>
     251inline LocalMap<T> operator - (const LocalMap<T>& a,const LocalMap<T>& b)
     252    { LocalMap<T> result; result.SetTemp(true);
     253    if (b.IsTemp())  { result.Share(b); result.SubElt(a, true); }
     254    else { result.CloneOrShare(a); result.SubElt(b); }
     255    return result; }
    148256
    149257
Note: See TracChangeset for help on using the changeset viewer.