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

version intermediaire cmv 23/4/99

File:
1 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{
Note: See TracChangeset for help on using the changeset viewer.