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/spherehealpix.h

    r1217 r1419  
    127127
    128128
     129
     130 
     131
     132
     133
     134// Operations diverses  = , +=, ...
     135
     136
     137SphereHEALPix<T>& Set(const SphereHEALPix<T>& a);
    129138inline  SphereHEALPix<T>& operator = (const SphereHEALPix<T>& a)
    130139                                                        {return Set(a);}
    131140
     141// A += -= *= /= x (ajoute, soustrait, ... x a tous les elements)
     142
     143  //! Fill SphereHEALPix with all elements equal to \b x
     144virtual SphereHEALPix<T>& SetT(T a);
     145inline  SphereHEALPix<T>& operator = (T a) {return SetT(a);}
     146
     147//! Add \b x to all elements
     148virtual SphereHEALPix<T>& Add(T a);
     149inline  SphereHEALPix<T>&  operator += (T x)  { return Add(x); }
     150//! Substract \b x to all elements
     151virtual SphereHEALPix<T>& Sub(T a);
     152inline   SphereHEALPix<T>&  operator -= (T x)  { return Sub(x); }
     153//! Multiply all elements by \b x
     154virtual SphereHEALPix<T>& Mul(T a);
     155inline  SphereHEALPix<T>&  operator *= (T x)  { return Mul(x); }
     156//! Divide all elements by \b x
     157virtual SphereHEALPix<T>& Div(T a);
     158inline  SphereHEALPix<T>&  operator /= (T x)  { return Div(x); }
     159
     160// A += -=  (ajoute, soustrait element par element les deux spheres )
     161  //! Operator SphereHEALPix += SphereHEALPix
     162  virtual SphereHEALPix<T>&  AddElt(const SphereHEALPix<T>& a);
     163  inline  SphereHEALPix<T>&  operator += (const SphereHEALPix<T>& a)  { return AddElt(a); }
     164
     165
     166
     167  virtual SphereHEALPix<T>&  SubElt(const SphereHEALPix<T>& a);
     168  //! Operator SphereHEALPix -= SphereHEALPix
     169  inline  SphereHEALPix<T>&  operator -= (const SphereHEALPix<T>& a)  { return SubElt(a); }
     170// Multiplication, division element par element les deux SphereHEALPix
     171  virtual SphereHEALPix<T>&  MulElt(const SphereHEALPix<T>& a);
     172  inline  SphereHEALPix<T>&  operator *= (const SphereHEALPix<T>& a)  { return MulElt(a); }
     173
     174
    132175 void CloneOrShare(const SphereHEALPix<T>& a);
    133  SphereHEALPix<T>& Set(const SphereHEALPix<T>& a);
     176 void Share(const SphereHEALPix<T>& a);
    134177 SphereHEALPix<T>& CopyElt(const SphereHEALPix<T>& a);
    135178
     
    164207};
    165208
    166 
     209////////////////////////////////////////////////////////////////
     210// Surcharge d'operateurs A (+,-,*,/) (T) x
     211/*! \ingroup SphereHEALPix \fn operator+(const SphereHEALPix<T>&,T)
     212  \brief Operator SphereHEALPix = SphereHEALPix + constant */
     213template <class T> inline SphereHEALPix<T> operator + (const SphereHEALPix<T>& a, T b)
     214    {SphereHEALPix<T> result; result.CloneOrShare(a); result.SetTemp(true);
     215    result.Add(b); return result;}
     216/*! \ingroup SphereHEALPix \fn operator+(T,const SphereHEALPix<T>&)
     217  \brief Operator SphereHEALPix = constant + SphereHEALPix */
     218template <class T> inline SphereHEALPix<T> operator + (T b,const SphereHEALPix<T>& a)
     219    {SphereHEALPix<T> result; result.CloneOrShare(a); result.SetTemp(true);
     220    result.Add(b); return result;}
     221
     222
     223/*! \ingroup SphereHEALPix\fn operator-(const SphereHEALPix<T>&,T)
     224  \brief Operator SphereHEALPix = SphereHEALPix - constant */
     225template <class T> inline SphereHEALPix<T> operator - (const SphereHEALPix<T>& a, T b)
     226    {SphereHEALPix<T> result; result.CloneOrShare(a); result.SetTemp(true);
     227    result.Sub(b); return result;}
     228
     229/*! \ingroup  \fn operator-(T,const SphereHEALPix<T>&)
     230  \brief Operator SphereHEALPix = constant - SphereHEALPix */
     231template <class T> inline SphereHEALPix<T> operator - (T b,const SphereHEALPix<T>& a)
     232    {SphereHEALPix<T> result; result.CloneOrShare(a); result.SetTemp(true);
     233    result.Sub(b,true); return result;}
     234
     235/*! \ingroup SphereHEALPix \fn operator*(const SphereHEALPix<T>&,T)
     236  \brief Operator SphereHEALPix = SphereHEALPix * constant */
     237template <class T> inline SphereHEALPix<T> operator * (const SphereHEALPix<T>& a, T b)
     238    {SphereHEALPix<T> result; result.CloneOrShare(a); result.SetTemp(true);
     239    result.Mul(b); return result;}
     240
     241/*! \ingroup SphereHEALPix \fn operator*(T,const SphereHEALPix<T>&)
     242  \brief Operator SphereHEALPix = constant * SphereHEALPix */
     243template <class T> inline SphereHEALPix<T> operator * (T b,const SphereHEALPix<T>& a)
     244    {SphereHEALPix<T> result; result.CloneOrShare(a); result.SetTemp(true);
     245    result.Mul(b); return result;}
     246
     247/*! \ingroup SphereHEALPix \fn operator/(const SphereHEALPix<T>&,T)
     248  \brief Operator SphereHEALPix = SphereHEALPix / constant */
     249template <class T> inline SphereHEALPix<T> operator / (const SphereHEALPix<T>& a, T b)
     250    {SphereHEALPix<T> result; result.CloneOrShare(a); result.SetTemp(true);
     251    result.Div(b); return result;}
     252
     253/*! \ingroup SphereHEALPix \fn operator/(T,const SphereHEALPix<T>&)
     254  \brief Operator SphereHEALPix = constant / SphereHEALPix  */
     255template <class T> inline SphereHEALPix<T> operator / (T b, const SphereHEALPix<T>& a)
     256    {SphereHEALPix<T> result; result.CloneOrShare(a); result.SetTemp(true);
     257    result.Div(b, true); return result;}
     258
     259////////////////////////////////////////////////////////////////
     260// Surcharge d'operateurs C = A (+,-) B
     261
     262/*! \ingroup SphereHEALPix \fn operator+(const SphereHEALPix<T>&,const SphereHEALPix<T>&)
     263  \brief Operator SphereHEALPix = SphereHEALPix + SphereHEALPix */
     264template <class T>
     265inline SphereHEALPix<T> operator + (const SphereHEALPix<T>& a,const SphereHEALPix<T>& b)
     266    { SphereHEALPix<T> result; result.SetTemp(true);
     267    if (b.IsTemp())  { result.Share(b); result.AddElt(a); }
     268    else { result.CloneOrShare(a); result.AddElt(b); }
     269    return result; }
     270
     271/*! \ingroup SphereHEALPix \fn operator-(const SphereHEALPix<T>&,const SphereHEALPix<T>&)
     272  \brief Operator SphereHEALPix = SphereHEALPix - SphereHEALPix */
     273template <class T>
     274inline SphereHEALPix<T> operator - (const SphereHEALPix<T>& a,const SphereHEALPix<T>& b)
     275    { SphereHEALPix<T> result; result.SetTemp(true);
     276    if (b.IsTemp())  { result.Share(b); result.SubElt(a, true); }
     277    else { result.CloneOrShare(a); result.SubElt(b); }
     278    return result; }
    167279
    168280} // Fin du namespace
Note: See TracChangeset for help on using the changeset viewer.