Changeset 249 in Sophya for trunk/SophyaLib/BaseTools/ndatablock.cc
- Timestamp:
- Apr 23, 1999, 10:03:30 AM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/BaseTools/ndatablock.cc
r245 r249 104 104 if(!a.mSRef) {mSz=0; mSRef=NULL;} // cas ou "a" est cree par defaut 105 105 else if(a.IsTemp()) Share(a); 106 else {Alloc(a.mSz); memcpy(D tata(),a.Dtata(),mSz*sizeof(T));}106 else {Alloc(a.mSz); memcpy(Data(),a.Data(),mSz*sizeof(T));} 107 107 } 108 108 … … 132 132 cout<<"NDataBlock::Delete() mSRef="<<mSRef; 133 133 if(mSRef) cout<<" mSRef->nref"<<mSRef->nref<<" mSRef->data"<<mSRef->data; 134 cou r<<endl;134 cout<<endl; 135 135 #endif 136 136 if(mSRef==NULL) return; // cas du createur par defaut … … 172 172 if(mSRef) {nr = mSRef->nref; p = mSRef->data;} 173 173 cout<<"NDataBlock::Print nel=%ld nref=%d (%p)\n",mSz,nr,p; 174 if(i1 <0 || i1>=mSz || n<=0 || !p) return;174 if(i1>=mSz || n<=0 || !p) return; 175 175 size_t i2 = i1+n; if(i2>mSz) i2=mSz; 176 176 size_t im = 1; … … 184 184 185 185 template <class T> 186 NDataBlock<T>& NDataBlock<T>::operator = ( constNDataBlock<T>& a)186 NDataBlock<T>& NDataBlock<T>::operator = (NDataBlock<T>& a) 187 187 // surcharge avec partage des donnees 188 188 // Ecriture: NDataBlock a; a = b; … … 196 196 197 197 template <class T> 198 NDataBlock<T>& NDataBlock<T>::operator = ( constT v)198 NDataBlock<T>& NDataBlock<T>::operator = (T v) 199 199 // surcharge avec copie des donnees (pas de partage) 200 200 // "this" est sur-ecrit, attention au partage de reference! … … 202 202 { 203 203 if(mSz==0) throw(SzMismatchError("NDataBlock::operator=v null size\n")); 204 T * p=Begin(),pe=End();204 T *p=Begin(), *pe=End(); 205 205 while (p<pe) *p++ = v; 206 206 return *this; … … 213 213 { 214 214 if(mSz==0) throw(SzMismatchError("NDataBlock::operator+=v null size\n")); 215 T * p=Begin(),pe=End();215 T *p=Begin(), *pe=End(); 216 216 while (p<pe) *p++ += b; 217 217 return *this; … … 222 222 { 223 223 if(mSz==0) throw(SzMismatchError("NDataBlock::operator-=v null size\n")); 224 T * p=Begin(),pe=End();224 T *p=Begin(), *pe=End(); 225 225 while (p<pe) *p++ -= b; 226 226 return *this; … … 231 231 { 232 232 if(mSz==0) throw(SzMismatchError("NDataBlock::operator*=v null size\n")); 233 T * p=Begin(),pe=End();233 T *p=Begin(), *pe=End(); 234 234 while (p<pe) *p++ *= b; 235 235 return *this; … … 239 239 NDataBlock<T>& NDataBlock<T>::operator /= (T b) 240 240 { 241 if(b==( <T>) 0) throw(ParmError("NDataBlock::operator/=v divide by zero\n"));241 if(b==(T) 0) throw(ParmError("NDataBlock::operator/=v divide by zero\n")); 242 242 if(mSz==0) throw(SzMismatchError("NDataBlock::operator/=v null size\n")); 243 T * p=Begin(),pe=End();243 T *p=Begin(), *pe=End(); 244 244 while (p<pe) *p++ /= b; 245 245 return *this; … … 249 249 250 250 template <class T> 251 NDataBlock<T>& NDataBlock<T>::operator += ( constNDataBlock<T>& a)251 NDataBlock<T>& NDataBlock<T>::operator += (NDataBlock<T>& a) 252 252 { 253 253 if(mSz==0 || mSz!=a.mSz) throw(SzMismatchError("NDataBlock::operator+=A size mismatch/null")); 254 T * p=Begin(), pe=End(),pa=a.Begin();254 T *p=Begin(), *pe=End(), *pa=a.Begin(); 255 255 while (p<pe) *p++ += *pa++; // ca marche meme si *this=a 256 256 return *this; … … 258 258 259 259 template <class T> 260 NDataBlock<T>& NDataBlock<T>::operator -= ( constNDataBlock<T>& a)260 NDataBlock<T>& NDataBlock<T>::operator -= (NDataBlock<T>& a) 261 261 { 262 262 if(mSz==0 || mSz!=a.mSz) throw(SzMismatchError("NDataBlock::operator-=A size mismatch/null")); 263 T * p=Begin(), pe=End(),pa=a.Begin();263 T *p=Begin(), *pe=End(), *pa=a.Begin(); 264 264 while (p<pe) *p++ -= *pa++; // ca marche meme si *this=a 265 265 return *this; … … 267 267 268 268 template <class T> 269 NDataBlock<T>& NDataBlock<T>::operator *= ( constNDataBlock<T>& a)269 NDataBlock<T>& NDataBlock<T>::operator *= (NDataBlock<T>& a) 270 270 { 271 271 if(mSz==0 || mSz!=a.mSz) throw(SzMismatchError("NDataBlock::operator*=A size mismatch/null")); 272 T * p=Begin(), pe=End(),pa=a.Begin();272 T *p=Begin(), *pe=End(), *pa=a.Begin(); 273 273 while (p<pe) *p++ *= *pa++; // ca marche meme si *this=a 274 274 return *this; … … 276 276 277 277 template <class T> 278 NDataBlock<T>& NDataBlock<T>::operator /= ( constNDataBlock<T>& a)278 NDataBlock<T>& NDataBlock<T>::operator /= (NDataBlock<T>& a) 279 279 { 280 280 if(mSz==0 || mSz!=a.mSz) throw(SzMismatchError("NDataBlock::operator/=A size mismatch/null")); 281 T * p=Begin(), pe=End(),pa=a.Begin();281 T *p=Begin(), *pe=End(), *pa=a.Begin(); 282 282 while (p<pe) *p++ /= *pa++; 283 283 return *this; … … 314 314 { 315 315 NDataBlock<T> result(a,false); result.SetTemp(true); 316 T * p=result.Begin(), pe=result.End(),pa=a.Begin();316 T *p=result.Begin(), *pe=result.End(), *pa=a.Begin(); 317 317 while(p<pe) {*p++ = b - *pa++;} 318 318 return result; … … 344 344 { 345 345 NDataBlock<T> result(a,false); result.SetTemp(true); 346 T * p=result.Begin(), pe=result.End(),pa=a.Begin();346 T *p=result.Begin(), *pe=result.End(), *pa=a.Begin(); 347 347 while(p<pe) {*p++ = b / *pa++;} 348 348 return result; … … 383 383 if(b.IsTemp()) { 384 384 NDataBlock<T> result(b,true); result.SetTemp(true); 385 T * p=result.Begin(), pe=result.End(),pa=a.Begin();385 T *p=result.Begin(), *pe=result.End(), *pa=a.Begin(); 386 386 while(p<pe) {*p = *pa++ - *p; p++;} 387 387 return result; … … 398 398 if(b.IsTemp()) { 399 399 NDataBlock<T> result(b,true); result.SetTemp(true); 400 T * p=result.Begin(), pe=result.End(),pa=a.Begin();400 T *p=result.Begin(), *pe=result.End(), *pa=a.Begin(); 401 401 while(p<pe) {*p = *pa++ / *p; p++;} 402 402 return result; … … 421 421 #pragma define_template NDataBlock<r_4> 422 422 #pragma define_template NDataBlock<r_8> 423 #pragma define_template NDataBlock< complex<float>>424 #pragma define_template NDataBlock< complex<double>>423 #pragma define_template NDataBlock< complex<float> > 424 #pragma define_template NDataBlock< complex<double> > 425 425 #endif 426 426 … … 436 436 template class NDataBlock<r_4>; 437 437 template class NDataBlock<r_8>; 438 template class NDataBlock< complex<float>>;439 template class NDataBlock< complex<double>>;438 template class NDataBlock< complex<float> >; 439 template class NDataBlock< complex<double> >; 440 440 #endif 441 441 … … 451 451 template class NDataBlock<r_4>; 452 452 template class NDataBlock<r_8>; 453 template class NDataBlock< complex<float>>;454 template class NDataBlock< complex<double>>;453 template class NDataBlock< complex<float> >; 454 template class NDataBlock< complex<double> >; 455 455 #endif 456 456 457 457 #ifdef __CXX_PRAGMA_TEMPLATES__ 458 #pragma define_template template<class uint_1> NDataBlock<uint_1> operator + (const NDataBlock<uint_1>& a, uint_1 b);458 #pragma define_template (operator+) <float,float> mais comment on fait ca! CMV_A_FAIRE 459 459 #endif 460 460 461 461 #ifdef __GNU_TEMPLATES__ 462 template NDataBlock<T> operator + (const NDataBlock<T>&, const NDataBlock<T>&); mais comment on fait ca! CMV_A_FAIRE 462 463 #endif 463 464
Note:
See TracChangeset
for help on using the changeset viewer.