Changeset 259 in Sophya for trunk/SophyaLib/BaseTools/ndatablock.cc
- Timestamp:
- Apr 23, 1999, 5:21:57 PM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/BaseTools/ndatablock.cc
r257 r259 101 101 if(!data) NallocData++; NallocSRef++; 102 102 cout<<"DEBUG_NDataBlock::Alloc("<<n<<") mSRef="<<mSRef 103 <<" mSRef->nref "<<mSRef->nref<<" mSRef->data"<< mSRef->data103 <<" mSRef->nref="<<mSRef->nref<<" mSRef->data="<< mSRef->data 104 104 <<" Total("<<NallocData<<","<<NallocSRef<<")"<<endl; 105 105 #endif … … 132 132 #ifdef DEBUG_NDATABLOCK 133 133 cout<<"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; 135 135 #endif 136 136 } … … 140 140 // Pour detruire les pointeurs en tenant compte des references 141 141 { 142 143 144 if(mSRef) cout<<" mSRef->nref"<<mSRef->nref<<" mSRef->data"<<mSRef->data;145 146 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 147 147 if(mSRef==NULL) return; // cas du createur par defaut 148 148 mSRef->nref--; … … 167 167 168 168 template <class T> 169 void NDataBlock<T>::Reset(T v) 170 { 171 if(mSRef==NULL) return; 172 if(mSRef->data==NULL) return; 173 if(mSz==0) return; 174 T *p=Begin(), *pe=End(); 175 while(p<pe) *p++ = v; 176 } 177 178 template <class T> 169 179 void NDataBlock<T>::ReSize(size_t n) 170 180 // Re-dimension, dans ce cas re-allocation de la place … … 195 205 T* p = NULL; 196 206 if(mSRef) {nr = mSRef->nref; p = mSRef->data;} 197 cout<<"NDataBlock::Print nel= %ld nref=%d (%p)\n",mSz,nr,p;207 cout<<"NDataBlock::Print nel="<<mSz<<" nref="<<nr<<" ("<<p<<")"<<endl; 198 208 if(i1>=mSz || n<=0 || !p) return; 199 209 size_t i2 = i1+n; if(i2>mSz) i2=mSz; … … 314 324 315 325 template <class T> 316 NDataBlock<T> &Add(T b)326 NDataBlock<T> Add(T b) 317 327 // Pour A+b 318 328 { 319 329 NDataBlock<T>& a = *this; 320 330 NDataBlock<T> result(a,false); result.SetTemp(true); 321 return (result += b);322 } 323 324 template <class T> 325 NDataBlock<T> &Sub(T b)331 return result += b; 332 } 333 334 template <class T> 335 NDataBlock<T> Sub(T b) 326 336 // Pour A-b 327 337 { 328 338 NDataBlock<T>& a = *this; 329 339 NDataBlock<T> result(a,false); result.SetTemp(true); 330 return (result -= b);331 } 332 333 template <class T> 334 NDataBlock<T> &SubInv(T b)340 return result -= b; 341 } 342 343 template <class T> 344 NDataBlock<T> SubInv(T b) 335 345 // Pour b-A 336 346 { … … 343 353 344 354 template <class T> 345 NDataBlock<T> &Mult(T b)355 NDataBlock<T> Mult(T b) 346 356 // Pour A*b 347 357 { 348 358 NDataBlock<T>& a = *this; 349 359 NDataBlock<T> result(a,false); result.SetTemp(true); 350 return (result *= b);351 } 352 353 template <class T> 354 NDataBlock<T> &Div(T b)360 return result *= b; 361 } 362 363 template <class T> 364 NDataBlock<T> Div(T b) 355 365 // Pour A/b 356 366 { 357 367 NDataBlock<T>& a = *this; 358 368 NDataBlock<T> result(a,false); result.SetTemp(true); 359 return (result /= b);360 } 361 362 template <class T> 363 NDataBlock<T> &DivInv(T b)369 return result /= b; 370 } 371 372 template <class T> 373 NDataBlock<T> DivInv(T b) 364 374 // Pour b/A 365 375 { … … 374 384 375 385 template <class T> 376 NDataBlock<T> & Add(constNDataBlock<T>& b)386 NDataBlock<T> Add(NDataBlock<T>& b) 377 387 // Pour A+B 378 388 { … … 389 399 390 400 template <class T> 391 NDataBlock<T> & Mul(constNDataBlock<T>& b)401 NDataBlock<T> Mul(NDataBlock<T>& b) 392 402 // Pour A*B 393 403 { … … 404 414 405 415 template <class T> 406 NDataBlock<T> & Sub(constNDataBlock<T>& b)416 NDataBlock<T> Sub(NDataBlock<T>& b) 407 417 // Pour A-B 408 418 { … … 421 431 422 432 template <class T> 423 NDataBlock<T> & Div(constNDataBlock<T>& b)433 NDataBlock<T> Div(NDataBlock<T>& b) 424 434 // Pour A/B 425 435 {
Note:
See TracChangeset
for help on using the changeset viewer.