Changeset 1419 in Sophya for trunk/SophyaLib/SkyMap/spherethetaphi.h
- Timestamp:
- Feb 23, 2001, 12:26:48 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/SkyMap/spherethetaphi.h
r1196 r1419 182 182 void print(ostream& os) const; 183 183 184 185 186 // Operations diverses = , +=, ... 187 188 189 SphereThetaPhi<T>& Set(const SphereThetaPhi<T>& a); 190 inline 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 196 virtual SphereThetaPhi<T>& SetT(T a); 197 inline SphereThetaPhi<T>& operator = (T a) {return SetT(a);} 198 199 //! Add \b x to all elements 200 virtual SphereThetaPhi<T>& Add(T a); 201 inline SphereThetaPhi<T>& operator += (T x) { return Add(x); } 202 //! Substract \b x to all elements 203 virtual SphereThetaPhi<T>& Sub(T a); 204 inline SphereThetaPhi<T>& operator -= (T x) { return Sub(x); } 205 //! Multiply all elements by \b x 206 virtual SphereThetaPhi<T>& Mul(T a); 207 inline SphereThetaPhi<T>& operator *= (T x) { return Mul(x); } 208 //! Divide all elements by \b x 209 virtual SphereThetaPhi<T>& Div(T a); 210 inline 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 184 227 void CloneOrShare(const SphereThetaPhi<T>& a); 185 186 SphereThetaPhi<T>& Set(const SphereThetaPhi<T>& a); 228 void Share(const SphereThetaPhi<T>& a); 229 187 230 SphereThetaPhi<T>& CopyElt(const SphereThetaPhi<T>& a); 188 231 189 inline SphereThetaPhi<T>& operator = (const SphereThetaPhi<T>& a) 190 {return Set(a);} 232 233 234 235 191 236 192 237 // friend declaration for classes which handle persistence and FITS IO … … 216 261 }; 217 262 263 //////////////////////////////////////////////////////////////// 264 // Surcharge d'operateurs A (+,-,*,/) (T) x 265 /*! \ingroup SphereThetaPhi \fn operator+(const SphereThetaPhi<T>&,T) 266 \brief Operator SphereThetaPhi = SphereThetaPhi + constant */ 267 template <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 */ 272 template <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 */ 279 template <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 */ 285 template <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 */ 291 template <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 */ 297 template <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 */ 303 template <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 */ 309 template <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 */ 318 template <class T> 319 inline 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 */ 327 template <class T> 328 inline 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; } 218 333 219 334
Note:
See TracChangeset
for help on using the changeset viewer.