Changeset 259 in Sophya for trunk/SophyaLib


Ignore:
Timestamp:
Apr 23, 1999, 5:21:57 PM (26 years ago)
Author:
ansari
Message:

version intermediaire cmv 23/4/99

Location:
trunk/SophyaLib/BaseTools
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/BaseTools/ndatablock.cc

    r257 r259  
    101101if(!data) NallocData++; NallocSRef++;
    102102cout<<"DEBUG_NDataBlock::Alloc("<<n<<") mSRef="<<mSRef
    103     <<" mSRef->nref"<<mSRef->nref<<" mSRef->data "<< mSRef->data
     103    <<" mSRef->nref="<<mSRef->nref<<" mSRef->data="<< mSRef->data
    104104    <<" Total("<<NallocData<<","<<NallocSRef<<")"<<endl;
    105105#endif
     
    132132#ifdef DEBUG_NDATABLOCK
    133133cout<<"DEBUG_...NDataBlock::Share("<<&a<<") mSRef="<<mSRef
    134     <<" mSRef->nref"<<mSRef->nref<<" mSRef->data "<< mSRef->data<<endl;
     134    <<" mSRef->nref="<<mSRef->nref<<" mSRef->data="<< mSRef->data<<endl;
    135135#endif
    136136}
     
    140140// Pour detruire les pointeurs en tenant compte des references
    141141{
    142     #ifdef DEBUG_NDATABLOCK
    143     cout<<"DEBUG_NDataBlock::Delete() mSRef="<<mSRef;
    144     if(mSRef) cout<<" mSRef->nref"<<mSRef->nref<<" mSRef->data "<<mSRef->data;
    145     cout<<endl;
    146     #endif
     142#ifdef DEBUG_NDATABLOCK
     143cout<<"DEBUG_NDataBlock::Delete() mSRef="<<mSRef;
     144if(mSRef) cout<<" mSRef->nref="<<mSRef->nref<<" mSRef->data="<<mSRef->data;
     145cout<<endl;
     146#endif
    147147if(mSRef==NULL) return; // cas du createur par defaut
    148148mSRef->nref--;
     
    167167
    168168template <class T>
     169void NDataBlock<T>::Reset(T v)
     170{
     171if(mSRef==NULL) return;
     172if(mSRef->data==NULL) return;
     173if(mSz==0) return;
     174T *p=Begin(), *pe=End();
     175while(p<pe) *p++ = v;
     176}
     177
     178template <class T>
    169179void NDataBlock<T>::ReSize(size_t n)
    170180// Re-dimension, dans ce cas re-allocation de la place
     
    195205T* p = NULL;
    196206if(mSRef) {nr = mSRef->nref; p = mSRef->data;}
    197 cout<<"NDataBlock::Print nel=%ld nref=%d (%p)\n",mSz,nr,p;
     207cout<<"NDataBlock::Print nel="<<mSz<<" nref="<<nr<<" ("<<p<<")"<<endl;
    198208if(i1>=mSz || n<=0 || !p) return;
    199209size_t i2 = i1+n; if(i2>mSz) i2=mSz;
     
    314324
    315325template <class T>
    316 NDataBlock<T>& Add(T b)
     326NDataBlock<T> Add(T b)
    317327// Pour A+b
    318328{
    319329NDataBlock<T>& a = *this;
    320330NDataBlock<T> result(a,false); result.SetTemp(true);
    321 return (result += b);
    322 }
    323 
    324 template <class T>
    325 NDataBlock<T>& Sub(T b)
     331return result += b;
     332}
     333
     334template <class T>
     335NDataBlock<T> Sub(T b)
    326336// Pour A-b
    327337{
    328338NDataBlock<T>& a = *this;
    329339NDataBlock<T> result(a,false); result.SetTemp(true);
    330 return (result -= b);
    331 }
    332 
    333 template <class T>
    334 NDataBlock<T>& SubInv(T b)
     340return result -= b;
     341}
     342
     343template <class T>
     344NDataBlock<T> SubInv(T b)
    335345// Pour b-A
    336346{
     
    343353
    344354template <class T>
    345 NDataBlock<T>& Mult(T b)
     355NDataBlock<T> Mult(T b)
    346356// Pour A*b
    347357{
    348358NDataBlock<T>& a = *this;
    349359NDataBlock<T> result(a,false); result.SetTemp(true);
    350 return (result *= b);
    351 }
    352 
    353 template <class T>
    354 NDataBlock<T>& Div(T b)
     360return result *= b;
     361}
     362
     363template <class T>
     364NDataBlock<T> Div(T b)
    355365// Pour A/b
    356366{
    357367NDataBlock<T>& a = *this;
    358368NDataBlock<T> result(a,false); result.SetTemp(true);
    359 return (result /= b);
    360 }
    361 
    362 template <class T>
    363 NDataBlock<T>& DivInv(T b)
     369return result /= b;
     370}
     371
     372template <class T>
     373NDataBlock<T> DivInv(T b)
    364374// Pour b/A
    365375{
     
    374384
    375385template <class T>
    376 NDataBlock<T>& Add(const NDataBlock<T>& b)
     386NDataBlock<T> Add(NDataBlock<T>& b)
    377387// Pour A+B
    378388{
     
    389399
    390400template <class T>
    391 NDataBlock<T>& Mul(const NDataBlock<T>& b)
     401NDataBlock<T> Mul(NDataBlock<T>& b)
    392402// Pour A*B
    393403{
     
    404414
    405415template <class T>
    406 NDataBlock<T>& Sub(const NDataBlock<T>& b)
     416NDataBlock<T> Sub(NDataBlock<T>& b)
    407417// Pour A-B
    408418{
     
    421431
    422432template <class T>
    423 NDataBlock<T>& Div(const NDataBlock<T>& b)
     433NDataBlock<T> Div(NDataBlock<T>& b)
    424434// Pour A/B
    425435{
  • trunk/SophyaLib/BaseTools/ndatablock.h

    r257 r259  
    3232  // Gestion taille/Remplissage
    3333  void Clone(NDataBlock<T>& a);
     34  void Reset(T v=0);
    3435  void ReSize(size_t n);
    3536  void FillFrom(size_t n,T* data);
     
    6364  NDataBlock<T>& operator /= (NDataBlock<T>& a);
    6465
    65   NDataBlock<T>& Add(T b);
    66   NDataBlock<T>& Sub(T b);
    67   NDataBlock<T>& SubInv(T b);
    68   NDataBlock<T>& Mul(T b);
    69   NDataBlock<T>& Div(T b);
    70   NDataBlock<T>& DivInv(T b);
     66  NDataBlock<T> Add(T b);
     67  NDataBlock<T> Sub(T b);
     68  NDataBlock<T> SubInv(T b);
     69  NDataBlock<T> Mul(T b);
     70  NDataBlock<T> Div(T b);
     71  NDataBlock<T> DivInv(T b);
    7172
    72   NDataBlock<T>& Add(const NDataBlock<T>& b);
    73   NDataBlock<T>& Sub(const NDataBlock<T>& b);
    74   NDataBlock<T>& SubInv(const NDataBlock<T>& b);
    75   NDataBlock<T>& Mul(const NDataBlock<T>& b);
    76   NDataBlock<T>& Div(const NDataBlock<T>& b);
    77   NDataBlock<T>& DivInv(const NDataBlock<T>& b);
     73  NDataBlock<T> Add(NDataBlock<T>& b);
     74  NDataBlock<T> Sub(NDataBlock<T>& b);
     75  NDataBlock<T> SubInv(NDataBlock<T>& b);
     76  NDataBlock<T> Mul(NDataBlock<T>& b);
     77  NDataBlock<T> Div(NDataBlock<T>& b);
     78  NDataBlock<T> DivInv(NDataBlock<T>& b);
    7879
    7980protected:
     
    9192
    9293
    93 template<class T> inline NDataBlock<T> operator + (const NDataBlock<T>& a,T b)
    94                                                   {return a.Add(b);}
    95 template<class T> inline NDataBlock<T> operator + (T b,const NDataBlock<T>& a)
    96                                                   {return a.Add(b);}
    97 template<class T> inline NDataBlock<T> operator - (const NDataBlock<T>& a,T b)
    98                                                   {return a.Sub(b);}
    99 template<class T> inline NDataBlock<T> operator - (T b,const NDataBlock<T>& a)
    100                                                   {return a.SubInv(b);}
    101 template<class T> inline NDataBlock<T> operator * (const NDataBlock<T>& a,T b)
    102                                                   {return a.Mul(b);}
    103 template<class T> inline NDataBlock<T> operator * (T b,const NDataBlock<T>& a)
    104                                                   {return a.Mul(b);}
    105 template<class T> inline NDataBlock<T> operator / (const NDataBlock<T>& a,T b)
    106                                                   {return a.Div(b);}
    107 template<class T> inline NDataBlock<T> operator / (T b,const NDataBlock<T>& a)
    108                                                   {return a.DivInv(b);}
     94template<class T>
     95inline NDataBlock<T> operator + (NDataBlock<T>& a,T b)
     96                      {return a.Add(b);}
     97template<class T>
     98inline NDataBlock<T> operator + (T b,NDataBlock<T>& a)
     99                      {return a.Add(b);}
     100template<class T>
     101inline NDataBlock<T> operator - (NDataBlock<T>& a,T b)
     102                      {return a.Sub(b);}
     103template<class T>
     104inline NDataBlock<T> operator - (T b,NDataBlock<T>& a)
     105                      {return a.SubInv(b);}
     106template<class T>
     107inline NDataBlock<T> operator * (NDataBlock<T>& a,T b)
     108                      {return a.Mul(b);}
     109template<class T>
     110inline NDataBlock<T> operator * (T b,NDataBlock<T>& a)
     111                      {return a.Mul(b);}
     112template<class T>
     113inline NDataBlock<T> operator / (NDataBlock<T>& a,T b)
     114                      {return a.Div(b);}
     115template<class T>
     116inline NDataBlock<T> operator / (T b,NDataBlock<T>& a)
     117                      {return a.DivInv(b);}
    109118
    110 template<class T> inline NDataBlock<T> operator + (const NDataBlock<T>& a,const NDataBlock<T>& b)
    111                                                   {return a.Add(b);}
    112 template<class T> inline NDataBlock<T> operator - (const NDataBlock<T>& a,const NDataBlock<T>& b)
    113                                                   {return a.Sub(b);}
    114 template<class T> inline NDataBlock<T> operator * (const NDataBlock<T>& a,const NDataBlock<T>& b)
    115                                                   {return a.Mul(b);}
    116 template<class T> inline NDataBlock<T> operator / (const NDataBlock<T>& a,const NDataBlock<T>& b)
    117                                                   {return a.Div(b);}
     119template<class T>
     120inline NDataBlock<T> operator + (NDataBlock<T>& a,NDataBlock<T>& b)
     121                     {return a.Add(b);}
     122template<class T>
     123inline NDataBlock<T> operator - (NDataBlock<T>& a,NDataBlock<T>& b)
     124                      {return a.Sub(b);}
     125template<class T>
     126inline NDataBlock<T> operator * (NDataBlock<T>& a,NDataBlock<T>& b)
     127                      {return a.Mul(b);}
     128template<class T>
     129inline NDataBlock<T> operator / (NDataBlock<T>& a,NDataBlock<T>& b)
     130                      {return a.Div(b);}
    118131
    119132
Note: See TracChangeset for help on using the changeset viewer.