Changeset 286 in Sophya for trunk/SophyaLib/NTools/tmatrix.h


Ignore:
Timestamp:
Apr 30, 1999, 1:02:52 PM (26 years ago)
Author:
ansari
Message:

tmatrix suite et fin cmv 30/4/99

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/NTools/tmatrix.h

    r279 r286  
    2424  virtual ~TMatrix();
    2525
     26  // Temporaire?
     27  inline bool IsTemp(void) const {return mNDBlock.IsTemp();}
     28  inline void SetTemp(bool temp=false) const
     29                     {mNDBlock.SetTemp(temp);}
     30
    2631  // Gestion taille/Remplissage
    2732  void Clone(const TMatrix<T>& a);
     
    3338  inline int NCol()  const {return mNc;}
    3439  T const& operator()(uint_4 r,uint_4 c) const
    35                      {return *(mNDBlock->Begin()+r*mNc+c);}
     40                     {return *(mNDBlock.Begin()+r*mNc+c);}
    3641  T&       operator()(uint_4 r,uint_4 c)
    37                      {return *(mNDBlock->Begin()+r*mNc+c);}
    38   inline       T* Data()       {return mNDBlock->Begin();}
    39   inline const T* Data() const {return mNDBlock->Begin();}
    40   inline       NDataBlock<T>* DataBlock()       {return mNDBlock;}
    41   inline const NDataBlock<T>* DataBlock() const {return mNDBlock;}
     42                     {return *(mNDBlock.Begin()+r*mNc+c);}
     43  inline       T* Data()       {return mNDBlock.Begin();}
     44  inline const T* Data() const {return mNDBlock.Begin();}
     45  inline       NDataBlock<T>& DataBlock()       {return mNDBlock;}
     46  inline const NDataBlock<T>& DataBlock() const {return mNDBlock;}
    4247
    4348  // Operateur d'affectation
     
    5055              {Print(cout,lp,i0,ni,j0,nj);}
    5156
    52   // Surcharge d'operateurs
     57  // Surcharge d'operateurs INPLACE
    5358  TMatrix<T>& operator += (T b);
    5459  TMatrix<T>& operator -= (T b);
     
    6065  TMatrix<T>& operator *= (const TMatrix<T>& a);
    6166
     67  // Pour surcharge d'operateurs
     68  TMatrix<T> Add(const TMatrix<T>& b) const;
     69  TMatrix<T> Sub(const TMatrix<T>& b) const;
     70  TMatrix<T> Mul(const TMatrix<T>& b) const;
     71
    6272protected:
    63   void Delete(void);
    64 
    6573  uint_4 mNr,mNc;
    66   NDataBlock<T>* mNDBlock;
     74  NDataBlock<T> mNDBlock;
    6775};
    6876
     77/////////////////////////////////////////////////////////////////////////
    6978template<class T>
    7079inline ostream& operator << (ostream& os, const TMatrix<T>& a)
    7180                      {a.Print(os); return(os);}
    7281
     82/////////////////////////////////////////////////////////////////////////
     83template<class T>
     84inline TMatrix<T> operator + (const TMatrix<T>& a, double b) {
     85  TMatrix<T> result(a,false); result.DataBlock().SetTemp(true);
     86  result += b;
     87  return result;
     88}
     89
     90template<class T>
     91inline TMatrix<T> operator + (double b,const TMatrix<T>& a) {
     92  TMatrix<T> result(a,false); result.DataBlock().SetTemp(true);
     93  result += b;
     94  return result;
     95}
     96
     97template<class T>
     98inline TMatrix<T> operator - (const TMatrix<T>& a, double b) {
     99  TMatrix<T> result(a,false); result.DataBlock().SetTemp(true);
     100  result -= b;
     101  return result;
     102}
     103
     104template<class T>
     105inline TMatrix<T> operator - (double b,const TMatrix<T>& a) {
     106  TMatrix<T> result(a,false); result.DataBlock().SetTemp(true);
     107  result.DataBlock() = b - result.DataBlock();
     108  return result;
     109}
     110
     111template<class T>
     112inline TMatrix<T> operator * (const TMatrix<T>& a, double b) {
     113  TMatrix<T> result(a,false); result.DataBlock().SetTemp(true);
     114  result *= b;
     115  return result;
     116}
     117
     118template<class T>
     119inline TMatrix<T> operator * (double b,const TMatrix<T>& a) {
     120  TMatrix<T> result(a,false); result.DataBlock().SetTemp(true);
     121  result *= b;
     122  return result;
     123}
     124
     125template<class T>
     126inline TMatrix<T> operator / (const TMatrix<T>& a, double b) {
     127  TMatrix<T> result(a,false); result.DataBlock().SetTemp(true);
     128  result /= b;
     129  return result;
     130}
     131
     132/////////////////////////////////////////////////////////////////////////
     133template<class T>
     134inline TMatrix<T> operator + (const TMatrix<T>& a,const TMatrix<T>& b)
     135                             {return a.Add(b);}
     136
     137template<class T>
     138inline TMatrix<T> operator - (const TMatrix<T>& a,const TMatrix<T>& b)
     139                             {return a.Sub(b);}
     140
     141template<class T>
     142inline TMatrix<T> operator * (const TMatrix<T>& a,const TMatrix<T>& b)
     143                             {return a.Mul(b);}
     144
     145/////////////////////////////////////////////////////////////////////////
     146// Classe pour la gestion de persistance
     147template <class T>
     148class FIO_TMatrix : public  PPersist  {
     149
     150public:
     151            FIO_TMatrix();
     152            FIO_TMatrix(string const & filename);
     153            FIO_TMatrix(const TMatrix<T> & obj);
     154            FIO_TMatrix(TMatrix<T> * obj);
     155  virtual   ~FIO_TMatrix();
     156
     157  virtual   AnyDataObj* DataObj();
     158  inline operator TMatrix<T>() { return(*dobj); }
     159
     160protected :
     161  virtual void       ReadSelf(PInPersist&);           
     162  virtual void       WriteSelf(POutPersist&) const; 
     163  TMatrix<T> * dobj;
     164  bool ownobj;
     165};
     166
    73167} // Fin du namespace
    74168
Note: See TracChangeset for help on using the changeset viewer.