Changeset 969 in Sophya
- Timestamp:
- Apr 26, 2000, 7:54:27 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/BaseTools/ndatablock.cc
r946 r969 118 118 template <class T> 119 119 NDataBlock<T>::NDataBlock(const NDataBlock<T>& a) 120 // Createur par copie: partage les donnees si "a" temporaire, clone sinon.120 // Createur par copie: partage les donnees dans tous les cas 121 121 : mSz(0), mSRef(NULL), mIsTemp(false) 122 122 { … … 124 124 cout<<"?_NDataBlock::NDataBlock("<<this<<",&a="<<&a<<")"<<endl; 125 125 126 CloneOrShare(a);126 Share(a); 127 127 } 128 128 … … 486 486 if(this == &a) return *this; 487 487 if(a.mSz==0) 488 throw(SzMismatchError("NDataBlock::operator=A null size\n")); 489 CloneOrShare(a); 488 throw(SzMismatchError("NDataBlock::operator=A null size \n")); 489 if (mSz==0) { 490 CloneOrShare(a); 491 return *this; 492 } 493 if (a.mSz != mSz) 494 throw(SzMismatchError("NDataBlock::operator=A Unequal sizes \n")); 495 memcpy(Data(),a.Data(),mSz*sizeof(T)); 490 496 return *this; 491 497 } … … 615 621 // Pour A+b 616 622 { 617 NDataBlock<T> result(*this); result.SetTemp(true); 623 NDataBlock<T> result; 624 result.CloneOrShare(*this); result.SetTemp(true); 618 625 result += b; 619 626 return result; … … 625 632 // Pour A-b 626 633 { 627 NDataBlock<T> result(*this); result.SetTemp(true); 634 NDataBlock<T> result; 635 result.CloneOrShare(*this); result.SetTemp(true); 628 636 return result -= b; 629 637 } … … 634 642 // Pour b-A 635 643 { 636 NDataBlock<T> result(*this); result.SetTemp(true); 644 NDataBlock<T> result; 645 result.CloneOrShare(*this); result.SetTemp(true); 637 646 T *p=result.Begin(), *pe=result.End(); 638 647 T const *pa=this->Begin(); … … 646 655 // Pour A*b 647 656 { 648 NDataBlock<T> result(*this); result.SetTemp(true); 657 NDataBlock<T> result; 658 result.CloneOrShare(*this); result.SetTemp(true); 649 659 return result *= b; 650 660 } … … 655 665 // Pour A/b 656 666 { 657 NDataBlock<T> result(*this); result.SetTemp(true); 667 NDataBlock<T> result; 668 result.CloneOrShare(*this); result.SetTemp(true); 658 669 return result /= b; 659 670 } … … 664 675 // Pour b/A 665 676 { 666 NDataBlock<T> result(*this); result.SetTemp(true); 677 NDataBlock<T> result; 678 result.CloneOrShare(*this); result.SetTemp(true); 667 679 T *p=result.Begin(), *pe=result.End(); 668 680 T const *pa = this->Begin();
Note:
See TracChangeset
for help on using the changeset viewer.