Changeset 265 in Sophya for trunk/SophyaLib/BaseTools


Ignore:
Timestamp:
Apr 23, 1999, 7:09:52 PM (26 years ago)
Author:
ansari
Message:

version temp pour reza cmv 23/4/99

Location:
trunk/SophyaLib/BaseTools
Files:
2 edited

Legend:

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

    r261 r265  
    8888//   NDataBlock A(5); A.FillFrom(5,x);
    8989{
    90 #ifdef DEBUG_NDATABLOCK
    91 cout<<"DEBUG_NDataBlock::Alloc("<<n<<") mSRef="<<mSRef<<endl;
    92 #endif
     90    #ifdef DEBUG_NDATABLOCK
     91    cout<<"DEBUG_NDataBlock::Alloc("
     92        <<n<<","<<data<<","<<br<<") mSRef="<<mSRef<<endl;
     93    #endif
    9394if(n==0) throw(SzMismatchError("NDataBlock::Alloc n==0\n"));
    9495if(mSRef) Delete();
     
    9899if(data) mSRef->data = data; else mSRef->data = new T[n];
    99100mSRef->bridge = br;
    100 #ifdef DEBUG_NDATABLOCK
    101 if(!data) NallocData++; NallocSRef++;
    102 cout<<"DEBUG_NDataBlock::Alloc("<<n<<") mSRef="<<mSRef
    103     <<" mSRef->nref="<<mSRef->nref<<" mSRef->data="<< mSRef->data
    104     <<" Total("<<NallocData<<","<<NallocSRef<<")"<<endl;
    105 #endif
     101    #ifdef DEBUG_NDATABLOCK
     102    if(!data) NallocData++; NallocSRef++;
     103    cout<<"...DEBUG_NDataBlock::Alloc("<<n<<") mSRef="<<mSRef
     104        <<" mSRef->nref="<<mSRef->nref<<" mSRef->data="<< mSRef->data
     105        <<" Total("<<NallocData<<","<<NallocSRef<<")"<<endl;
     106    #endif
    106107}
    107108
     
    110111// Clone (copie de donnee) a partir de "a"
    111112{
    112 #ifdef DEBUG_NDATABLOCK
    113   cout<<"DEBUG_NDataBlock::Clone("<<&a<<")"<<endl;
    114 #endif
     113    #ifdef DEBUG_NDATABLOCK
     114    cout<<"DEBUG_NDataBlock::Clone("<<&a<<") a.mSz="
     115        <<a.mSz<<" a.mSRef="<<a.mSRef<<" a.IsTemp="<<a.IsTemp()<<endl;
     116    #endif
    115117if(!a.mSRef) {mSz=0; mSRef=NULL;} // cas ou "a" est cree par defaut
    116118else if(a.IsTemp()) Share(a);
     
    122124// Partage des donnees avec "a"
    123125{
    124 #ifdef DEBUG_NDATABLOCK
    125 cout<<"DEBUG_NDataBlock::Share("<<&a<<") a.mSRef="<<a.mSRef<<" mSRef="<<mSRef<<endl;
    126 #endif
     126    #ifdef DEBUG_NDATABLOCK
     127    cout<<"DEBUG_NDataBlock::Share("<<&a<<") a.mSRef="<<a.mSRef<<" mSRef="<<mSRef<<endl;
     128    #endif
    127129if(&a==NULL) throw(NullPtrError("NDataBlock::Share  &a==NULL\n"));
    128130// on ne peut partager si "a" pas alloue
     
    130132if(mSRef) Delete();
    131133mSz = a.mSz; mSRef = a.mSRef; mSRef->nref++;
    132 #ifdef DEBUG_NDATABLOCK
    133 cout<<"DEBUG_...NDataBlock::Share("<<&a<<") mSRef="<<mSRef
    134     <<" mSRef->nref="<<mSRef->nref<<" mSRef->data="<< mSRef->data<<endl;
    135 #endif
     134    #ifdef DEBUG_NDATABLOCK
     135    cout<<"...DEBUG_NDataBlock::Share("<<&a<<") mSRef="<<mSRef
     136        <<" mSRef->nref="<<mSRef->nref<<" mSRef->data="<< mSRef->data<<endl;
     137    #endif
    136138}
    137139
     
    140142// Pour detruire les pointeurs en tenant compte des references
    141143{
    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
     144    #ifdef DEBUG_NDATABLOCK
     145    cout<<"DEBUG_NDataBlock::Delete() mSRef="<<mSRef;
     146    if(mSRef) cout<<" mSRef->nref="<<mSRef->nref<<" mSRef->data="<<mSRef->data;
     147    cout<<endl;
     148    #endif
    147149if(mSRef==NULL) return; // cas du createur par defaut
    148150mSRef->nref--;
    149151if(mSRef->nref != 0) {
    150 #ifdef DEBUG_NDATABLOCK
    151   cout<<"DEBUG_...NDataBlock::Delete() pas de desallocation il reste nref="<<mSRef->nref<<endl;
    152 #endif
     152    #ifdef DEBUG_NDATABLOCK
     153      cout<<"...DEBUG_NDataBlock::Delete() pas de desallocation il reste nref="
     154          <<mSRef->nref<<endl;
     155    #endif
    153156  return;
    154157}
    155 #ifdef DEBUG_NDATABLOCK
    156 if(!mSRef->bridge) NallocData--; NallocSRef--;
    157 cout<<"DEBUG_...NNDataBlock::Delete() desallocation complete il reste nref="<<mSRef->nref
    158     <<" Total("<<NallocData<<","<<NallocSRef<<")"<<endl;
    159 #endif
     158    #ifdef DEBUG_NDATABLOCK
     159    if(!mSRef->bridge) NallocData--; NallocSRef--;
     160    cout<<"...DEBUG_NDataBlock::Delete() desallocation complete il reste nref="
     161        <<mSRef->nref<<" Total("<<NallocData<<","<<NallocSRef<<")"<<endl;
     162    #endif
    160163// Si il y a un Bridge les donnees ne n'appartiennent pas, on detruit le Bridge
    161164if(mSRef->bridge) delete mSRef->bridge;
     
    226229{
    227230if(this == &a) return *this;
    228 if(a.mSz!=mSz) throw(SzMismatchError("NDataBlock::operator=A size mismatch/null\n"));
     231if(a.mSz!=mSz)
     232  throw(SzMismatchError("NDataBlock::operator=A size mismatch/null\n"));
    229233Share(a);
    230234return *this;
     
    287291NDataBlock<T>& NDataBlock<T>::operator += (NDataBlock<T>& a)
    288292{
    289 if(mSz==0 || mSz!=a.mSz) throw(SzMismatchError("NDataBlock::operator+=A size mismatch/null"));
     293if(mSz==0 || mSz!=a.mSz)
     294  throw(SzMismatchError("NDataBlock::operator+=A size mismatch/null"));
    290295T *p=Begin(), *pe=End(), *pa=a.Begin();
    291296while (p<pe) *p++ += *pa++; // ca marche meme si *this=a
     
    296301NDataBlock<T>& NDataBlock<T>::operator -= (NDataBlock<T>& a)
    297302{
    298 if(mSz==0 || mSz!=a.mSz) throw(SzMismatchError("NDataBlock::operator-=A size mismatch/null"));
     303if(mSz==0 || mSz!=a.mSz)
     304  throw(SzMismatchError("NDataBlock::operator-=A size mismatch/null"));
    299305T *p=Begin(), *pe=End(), *pa=a.Begin();
    300306while (p<pe) *p++ -= *pa++; // ca marche meme si *this=a
     
    305311NDataBlock<T>& NDataBlock<T>::operator *= (NDataBlock<T>& a)
    306312{
    307 if(mSz==0 || mSz!=a.mSz) throw(SzMismatchError("NDataBlock::operator*=A size mismatch/null"));
     313if(mSz==0 || mSz!=a.mSz)
     314  throw(SzMismatchError("NDataBlock::operator*=A size mismatch/null"));
    308315T *p=Begin(), *pe=End(), *pa=a.Begin();
    309316while (p<pe) *p++ *= *pa++; // ca marche meme si *this=a
     
    314321NDataBlock<T>& NDataBlock<T>::operator /= (NDataBlock<T>& a)
    315322{
    316 if(mSz==0 || mSz!=a.mSz) throw(SzMismatchError("NDataBlock::operator/=A size mismatch/null"));
     323if(mSz==0 || mSz!=a.mSz)
     324  throw(SzMismatchError("NDataBlock::operator/=A size mismatch/null"));
    317325T *p=Begin(), *pe=End(), *pa=a.Begin();
    318326while (p<pe) *p++ /= *pa++;
     
    388396{
    389397NDataBlock<T>& a = *this;
    390 if(a.mSz!=b.mSz) throw(SzMismatchError("NDataBlock operator C=A+B size mismatch/null\n"));
     398if(a.mSz!=b.mSz)
     399  throw(SzMismatchError("NDataBlock operator C=A+B size mismatch/null\n"));
    391400if(b.IsTemp()) {
    392401  NDataBlock<T> result(b,true); result.SetTemp(true);
     
    403412{
    404413NDataBlock<T>& a = *this;
    405 if(a.mSz!=b.mSz) throw(SzMismatchError("NDataBlock operator C=A*B size mismatch/null\n"));
     414if(a.mSz!=b.mSz)
     415  throw(SzMismatchError("NDataBlock operator C=A*B size mismatch/null\n"));
    406416if(b.IsTemp()) {
    407417  NDataBlock<T> result(b,true); result.SetTemp(true);
     
    418428{
    419429NDataBlock<T>& a = *this;
    420 if(a.mSz!=b.mSz) throw(SzMismatchError("NDataBlock operator C=A-B size mismatch/null\n"));
     430if(a.mSz!=b.mSz)
     431  throw(SzMismatchError("NDataBlock operator C=A-B size mismatch/null\n"));
    421432if(b.IsTemp()) {
    422433  NDataBlock<T> result(b,true); result.SetTemp(true);
     
    435446{
    436447NDataBlock<T>& a = *this;
    437 if(a.mSz!=b.mSz) throw(SzMismatchError("NDataBlock operator C=A/B size mismatch/null\n"));
     448if(a.mSz!=b.mSz)
     449  throw(SzMismatchError("NDataBlock operator C=A/B size mismatch/null\n"));
    438450if(b.IsTemp()) {
    439451  NDataBlock<T> result(b,true); result.SetTemp(true);
  • trunk/SophyaLib/BaseTools/ndatablock.h

    r259 r265  
    119119template<class T>
    120120inline NDataBlock<T> operator + (NDataBlock<T>& a,NDataBlock<T>& b)
    121                      {return a.Add(b);}
     121                      {return a.Add(b);}
    122122template<class T>
    123123inline NDataBlock<T> operator - (NDataBlock<T>& a,NDataBlock<T>& b)
Note: See TracChangeset for help on using the changeset viewer.