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

    r1196 r1419  
    182182void print(ostream& os) const;
    183183
     184
     185
     186// Operations diverses  = , +=, ...
     187
     188
     189SphereThetaPhi<T>& Set(const SphereThetaPhi<T>& a);
     190inline  SphereThetaPhi<T>& operator = (const SphereThetaPhi<T>& a)
     191                                                        {return Set(a);}
     192
     193// A += -= *= /= x (ajoute, soustrait, ... x a tous les elements)
     194
     195  //! Fill SphereThetaPhi with all elements equal to \b x
     196virtual SphereThetaPhi<T>& SetT(T a);
     197inline  SphereThetaPhi<T>& operator = (T a) {return SetT(a);}
     198
     199//! Add \b x to all elements
     200virtual SphereThetaPhi<T>& Add(T a);
     201inline  SphereThetaPhi<T>&  operator += (T x)  { return Add(x); }
     202//! Substract \b x to all elements
     203virtual SphereThetaPhi<T>& Sub(T a);
     204inline   SphereThetaPhi<T>&  operator -= (T x)  { return Sub(x); }
     205//! Multiply all elements by \b x
     206virtual SphereThetaPhi<T>& Mul(T a);
     207inline  SphereThetaPhi<T>&  operator *= (T x)  { return Mul(x); }
     208//! Divide all elements by \b x
     209virtual SphereThetaPhi<T>& Div(T a);
     210inline  SphereThetaPhi<T>&  operator /= (T x)  { return Div(x); }
     211
     212// A += -=  (ajoute, soustrait element par element les deux spheres )
     213  //! Operator SphereThetaPhi += SphereThetaPhi
     214  virtual SphereThetaPhi<T>&  AddElt(const SphereThetaPhi<T>& a);
     215  inline  SphereThetaPhi<T>&  operator += (const SphereThetaPhi<T>& a)  { return AddElt(a); }
     216
     217
     218
     219  virtual SphereThetaPhi<T>&  SubElt(const SphereThetaPhi<T>& a);
     220  //! Operator SphereThetaPhi -= SphereThetaPhi
     221  inline  SphereThetaPhi<T>&  operator -= (const SphereThetaPhi<T>& a)  { return SubElt(a); }
     222// Multiplication, division element par element les deux SphereThetaPhi
     223  virtual SphereThetaPhi<T>&  MulElt(const SphereThetaPhi<T>& a);
     224  inline  SphereThetaPhi<T>&  operator *= (const SphereThetaPhi<T>& a)  { return MulElt(a); }
     225
     226
    184227  void CloneOrShare(const SphereThetaPhi<T>& a);
    185 
    186   SphereThetaPhi<T>& Set(const SphereThetaPhi<T>& a);
     228  void Share(const SphereThetaPhi<T>& a);
     229
    187230  SphereThetaPhi<T>& CopyElt(const SphereThetaPhi<T>& a);
    188231
    189   inline  SphereThetaPhi<T>& operator = (const SphereThetaPhi<T>& a)
    190                                                        {return Set(a);}
     232
     233
     234
     235
    191236
    192237 // friend declaration for classes which handle persistence and FITS IO
     
    216261};
    217262
     263////////////////////////////////////////////////////////////////
     264// Surcharge d'operateurs A (+,-,*,/) (T) x
     265/*! \ingroup SphereThetaPhi \fn operator+(const SphereThetaPhi<T>&,T)
     266  \brief Operator SphereThetaPhi = SphereThetaPhi + constant */
     267template <class T> inline SphereThetaPhi<T> operator + (const SphereThetaPhi<T>& a, T b)
     268    {SphereThetaPhi<T> result; result.CloneOrShare(a); result.SetTemp(true);
     269    result.Add(b); return result;}
     270/*! \ingroup SphereThetaPhi \fn operator+(T,const SphereThetaPhi<T>&)
     271  \brief Operator SphereThetaPhi = constant + SphereThetaPhi */
     272template <class T> inline SphereThetaPhi<T> operator + (T b,const SphereThetaPhi<T>& a)
     273    {SphereThetaPhi<T> result; result.CloneOrShare(a); result.SetTemp(true);
     274    result.Add(b); return result;}
     275
     276
     277/*! \ingroup SphereThetaPhi\fn operator-(const SphereThetaPhi<T>&,T)
     278  \brief Operator SphereThetaPhi = SphereThetaPhi - constant */
     279template <class T> inline SphereThetaPhi<T> operator - (const SphereThetaPhi<T>& a, T b)
     280    {SphereThetaPhi<T> result; result.CloneOrShare(a); result.SetTemp(true);
     281    result.Sub(b); return result;}
     282
     283/*! \ingroup  \fn operator-(T,const SphereThetaPhi<T>&)
     284  \brief Operator SphereThetaPhi = constant - SphereThetaPhi */
     285template <class T> inline SphereThetaPhi<T> operator - (T b,const SphereThetaPhi<T>& a)
     286    {SphereThetaPhi<T> result; result.CloneOrShare(a); result.SetTemp(true);
     287    result.Sub(b,true); return result;}
     288
     289/*! \ingroup SphereThetaPhi \fn operator*(const SphereThetaPhi<T>&,T)
     290  \brief Operator SphereThetaPhi = SphereThetaPhi * constant */
     291template <class T> inline SphereThetaPhi<T> operator * (const SphereThetaPhi<T>& a, T b)
     292    {SphereThetaPhi<T> result; result.CloneOrShare(a); result.SetTemp(true);
     293    result.Mul(b); return result;}
     294
     295/*! \ingroup SphereThetaPhi \fn operator*(T,const SphereThetaPhi<T>&)
     296  \brief Operator SphereThetaPhi = constant * SphereThetaPhi */
     297template <class T> inline SphereThetaPhi<T> operator * (T b,const SphereThetaPhi<T>& a)
     298    {SphereThetaPhi<T> result; result.CloneOrShare(a); result.SetTemp(true);
     299    result.Mul(b); return result;}
     300
     301/*! \ingroup SphereThetaPhi \fn operator/(const SphereThetaPhi<T>&,T)
     302  \brief Operator SphereThetaPhi = SphereThetaPhi / constant */
     303template <class T> inline SphereThetaPhi<T> operator / (const SphereThetaPhi<T>& a, T b)
     304    {SphereThetaPhi<T> result; result.CloneOrShare(a); result.SetTemp(true);
     305    result.Div(b); return result;}
     306
     307/*! \ingroup SphereThetaPhi \fn operator/(T,const SphereThetaPhi<T>&)
     308  \brief Operator SphereThetaPhi = constant / SphereThetaPhi  */
     309template <class T> inline SphereThetaPhi<T> operator / (T b, const SphereThetaPhi<T>& a)
     310    {SphereThetaPhi<T> result; result.CloneOrShare(a); result.SetTemp(true);
     311    result.Div(b, true); return result;}
     312
     313////////////////////////////////////////////////////////////////
     314// Surcharge d'operateurs C = A (+,-) B
     315
     316/*! \ingroup SphereThetaPhi \fn operator+(const SphereThetaPhi<T>&,const SphereThetaPhi<T>&)
     317  \brief Operator SphereThetaPhi = SphereThetaPhi + SphereThetaPhi */
     318template <class T>
     319inline SphereThetaPhi<T> operator + (const SphereThetaPhi<T>& a,const SphereThetaPhi<T>& b)
     320    { SphereThetaPhi<T> result; result.SetTemp(true);
     321    if (b.IsTemp())  { result.Share(b); result.AddElt(a); }
     322    else { result.CloneOrShare(a); result.AddElt(b); }
     323    return result; }
     324
     325/*! \ingroup SphereThetaPhi \fn operator-(const SphereThetaPhi<T>&,const SphereThetaPhi<T>&)
     326  \brief Operator SphereThetaPhi = SphereThetaPhi - SphereThetaPhi */
     327template <class T>
     328inline SphereThetaPhi<T> operator - (const SphereThetaPhi<T>& a,const SphereThetaPhi<T>& b)
     329    { SphereThetaPhi<T> result; result.SetTemp(true);
     330    if (b.IsTemp())  { result.Share(b); result.SubElt(a, true); }
     331    else { result.CloneOrShare(a); result.SubElt(b); }
     332    return result; }
    218333
    219334
Note: See TracChangeset for help on using the changeset viewer.