Changeset 475 in Sophya for trunk/SophyaLib/NTools/ntuple.cc
- Timestamp:
- Oct 19, 1999, 12:07:16 PM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/NTools/ntuple.cc
r297 r475 35 35 //++ 36 36 NTuple::NTuple(int nvar, char** noms, int blk) 37 // 38 // Createur d'un ntuple de `nvar' variables dont les 39 // noms sont dans le tableau de cahines de caracteres `noms' 40 // avec `blk' d'evenements par blocks. 41 //-- 42 { 43 mNVar = mNEnt = mBlk = mNBlk = 0; 44 mVar = NULL; 45 mVarD = NULL; 46 mNames = NULL; 47 mInfo = NULL; 48 if (nvar <= 0) THROW(sizeMismatchErr); 49 mNVar = nvar; 50 mVar = new r_4[nvar]; 51 mVarD = new r_8[nvar]; 52 if (blk < 10) blk = 10; 53 mBlk = blk; 54 // On prend des noms de LENNAME char pour le moment 55 mNames = new char[nvar*LENNAME1]; 56 r_4* pt = new r_4[nvar*blk]; 57 mNBlk = 1; 58 mPtr.push_back(pt); 59 int i; 60 for(i=0; i<nvar; i++) 61 { strncpy(mNames+i*LENNAME1, noms[i], LENNAME); 62 mNames[i*LENNAME1+LENNAME] = '\0'; } 63 return; 37 // 38 // Createur d'un ntuple de `nvar' variables dont les 39 // noms sont dans le tableau de cahines de caracteres `noms' 40 // avec `blk' d'evenements par blocks. 41 //-- 42 { 43 mNVar = mNEnt = mBlk = mNBlk = 0; 44 mVar = NULL; 45 mVarD = NULL; 46 mNames = NULL; 47 mInfo = NULL; 48 if (nvar <= 0) THROW(sizeMismatchErr); 49 mNVar = nvar; 50 mVar = new r_4[nvar]; 51 mVarD = new r_8[nvar]; 52 if (blk < 10) blk = 10; 53 mBlk = blk; 54 // On prend des noms de LENNAME char pour le moment 55 mNames = new char[nvar*LENNAME1]; 56 r_4* pt = new r_4[nvar*blk]; 57 mNBlk = 1; 58 mPtr.push_back(pt); 59 int i; 60 for(i=0; i<nvar; i++) 61 { 62 strncpy(mNames+i*LENNAME1, noms[i], LENNAME); 63 mNames[i*LENNAME1+LENNAME] = '\0'; 64 } 65 return; 64 66 } 65 67 … … 194 196 return(rets); 195 197 } 196 197 198 198 199 199 /* --Methode-- */ … … 347 347 { 348 348 349 Clean(); 350 351 char strg[256]; 352 s.GetLine(strg, 255); 353 // Pour savoir s'il y avait un DVList Info associe 354 bool hadinfo = false; 355 if (strncmp(strg+strlen(strg)-7, "HasInfo", 7) == 0) hadinfo = true; 356 357 s.GetI4(mNVar); 358 mNames = new char[mNVar*LENNAME1]; 359 mVar = new r_4[mNVar]; 360 mVarD = new r_8[mNVar]; 361 s.GetBytes(mNames, mNVar*LENNAME1); 362 s.GetI4(mNEnt); 363 s.GetI4(mBlk); 364 s.GetI4(mNBlk); 365 366 if (hadinfo) { // Lecture eventuelle du DVList Info 367 if (mInfo == NULL) mInfo = new DVList; 368 s >> (*mInfo); 369 } 370 371 int jb; 372 for(jb=0; jb<mNBlk; jb++) { 373 r_4* pt = new r_4[mNVar*mBlk]; 374 mPtr.push_back(pt); 375 s.GetR4s(mPtr[jb], mNVar*mBlk); 376 } 377 378 } 349 Clean(); 350 351 char strg[256]; 352 s.GetLine(strg, 255); 353 // Pour savoir s'il y avait un DVList Info associe 354 bool hadinfo = false; 355 if (strncmp(strg+strlen(strg)-7, "HasInfo", 7) == 0) hadinfo = true; 356 357 s.GetI4(mNVar); 358 mNames = new char[mNVar*LENNAME1]; 359 mVar = new r_4[mNVar]; 360 mVarD = new r_8[mNVar]; 361 s.GetBytes(mNames, mNVar*LENNAME1); 362 s.GetI4(mNEnt); 363 s.GetI4(mBlk); 364 s.GetI4(mNBlk); 365 366 if (hadinfo) { // Lecture eventuelle du DVList Info 367 if (mInfo == NULL) mInfo = new DVList; 368 s >> (*mInfo); 369 } 370 371 int jb; 372 for(jb=0; jb<mNBlk; jb++) { 373 r_4* pt = new r_4[mNVar*mBlk]; 374 mPtr.push_back(pt); 375 s.GetR4s(mPtr[jb], mNVar*mBlk); 376 } 377 } 378 379 NTuple& NTuple::operator=(const NTuple &ntpl) 380 { 381 mNVar= ntpl.mNVar; 382 mNEnt= ntpl.mNEnt; 383 mBlk = ntpl.mBlk; 384 mNBlk= ntpl.mNBlk; 385 386 mVar= new r_4[mNVar]; 387 for(int k = 0; k < mNVar; k++) 388 mVar[k]= ntpl.mVar[k]; 389 390 mVarD= new r_8[mNVar]; 391 for(int k = 0; k < mNVar; k++) 392 mVarD[k]= ntpl.mVarD[k]; 393 394 mNames = new char[mNVar*LENNAME1]; 395 for(int i = 0; i < mNVar; i++) 396 { 397 strncpy(mNames+i*LENNAME1,(ntpl.mNames)+i*LENNAME1, LENNAME); 398 mNames[i*LENNAME1+LENNAME] = '\0'; 399 } 400 401 for(int k = 0; k < mNBlk; k++) 402 { 403 r_4 *ptr= new r_4[mNVar*mBlk]; 404 for(int i = 0; i < mNVar*mBlk; i++) 405 { 406 *(ptr+i)= *(ntpl.mPtr[k]+i); 407 } 408 mPtr.push_back(ptr); 409 } 410 411 mInfo = new DVList; 412 if(ntpl.mInfo) 413 { 414 *mInfo= *(ntpl.mInfo); 415 } 416 else 417 { 418 mInfo = NULL; 419 } 420 421 return *this; 422 }
Note:
See TracChangeset
for help on using the changeset viewer.