Changeset 2305 in Sophya for trunk/SophyaPI/PIext/basexecut.cc
- Timestamp:
- Jan 8, 2003, 6:18:56 PM (23 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaPI/PIext/basexecut.cc
r2296 r2305 14 14 #include "nobjmgr.h" 15 15 #include "servnobjm.h" 16 #include "nomgadapter.h" 16 17 #include "piyfxdrw.h" 17 18 … … 528 529 } 529 530 } 530 531 // ----- Vecteur/NTuple <> Lignes/variables interpreteur 532 // Creation de vecteur depuis le contenu de la ligne 533 else if (kw == "line2vec") { 534 if (tokens.size() < 2) { 535 cout << "Usage: line2vec vecname v0 v1 v2 ... " << endl; return(0); 536 } 537 int vsz = tokens.size()-1; 538 Vector* v = new Vector(vsz); 539 for(int kkv=0; kkv<vsz; kkv++) (*v)(kkv) = atof(tokens[kkv+1].c_str()); 540 mObjMgr->AddObj(v, tokens[0]); 541 } 542 // Remplissage de NTuple depuis la ligne 543 else if (kw == "line2nt") { 544 if (tokens.size() < 2) { 545 cout << "Usage: line2nt ntname col0 col1 ..." << endl; return(0); 546 } 547 AnyDataObj* obj; 548 obj = mObjMgr->GetObj(tokens[0]); 549 if(obj == NULL) { 550 cerr << "line2nt Error , No such object " << tokens[0] << endl; 551 return(0); 552 } 553 NTuple* nt = dynamic_cast<NTuple *>(obj); 554 if(nt == NULL) { 555 cerr << "line2nt Error " << tokens[0] << " not an NTuple ! " << endl; 556 return(0); 557 } 558 if (nt->NbColumns() < 1) { 559 cerr << "line2nt Error: NbColumns < 1" << endl; 560 return(0); 561 } 562 r_4* xnt = new r_4[ nt->NbColumns() ]; 563 int kkx; 564 for(kkx=0; kkx<nt->NbColumns(); kkx++) { 565 if (kkx < tokens.size()-1) xnt[kkx] = atof(tokens[kkx+1].c_str()); 566 else xnt[kkx] = 0.; 567 } 568 nt->Fill(xnt); 569 delete[] xnt; 570 } 571 // Contenu du vecteur vers variable interpreteur 572 #define MAXNWORDSO2V 32768 573 else if (kw == "vec2var") { 574 if (tokens.size() < 2) { 575 cout << "Usage: vec2var vecname varname [loop_param start:end:step] " << endl; return(0); 576 } 577 AnyDataObj* obj; 578 obj = mObjMgr->GetObj(tokens[0]); 579 if(obj == NULL) { 580 cerr << "vec2var Error , No such object " << tokens[0] << endl; 581 return(0); 582 } 583 Vector* v = dynamic_cast<Vector *>(obj); 584 if(v == NULL) { 585 cerr << "vec2var Error " << tokens[0] << " not a Vector ! " << endl; 586 return(0); 587 } 588 int kks = 0; 589 int kke = v->NElts(); 590 int kkp = 1; 591 if (tokens.size() > 2) Services2NObjMgr::DecodeLoopParameters(tokens[2], kks, kke, kkp); 592 if (kks < 0) kks = 0; 593 if (kke > v->NElts()) kke = v->NElts(); 594 if (kkp < 1) kkp = 1; 595 int nelt = (kke-kks-1)/kkp; 596 if (nelt > MAXNWORDSO2V) { 597 nelt = MAXNWORDSO2V; 598 cout << "vec2var Warning: Only " << nelt 599 << " elements will be converted to string" << endl; 600 kke = kks+nelt*kkp; 601 } 602 string v2str; 603 char buff[64]; 604 for(int kkv=kks; kkv<kke; kkv+=kkp) { 605 sprintf(buff, "%lg ", (*v)(kkv)); 606 v2str += buff; 607 } 608 609 mObjMgr->SetVar(tokens[1], v2str); 610 } 611 // Une ligne du NTuple/NTupleInterface -> variable interpreteur 612 else if ((kw == "ntline2var") || (kw == "ntcol2var")) { 613 if (tokens.size() < 3) { 614 cout << "Usage: ntline/col2var objname line_number varname" << endl; 615 return(0); 616 } 617 NObjMgrAdapter* oa = mObjMgr->GetObjAdapter(tokens[0]); 618 if(oa == NULL) { 619 cerr << "ntline/col2var Error , No such object " << tokens[0] << endl; 620 return(0); 621 } 622 bool adel = false; 623 NTupleInterface* nti = oa->GetNTupleInterface(adel); 624 if(nti == NULL) { 625 cerr << "ntline/col2var Error: objet" << tokens[0] << " has no NTupleInterface" << endl; 626 return(0); 627 } 628 629 if (nti->NbColumns() < 1 || nti->NbLines() < 1) { 630 cerr << "ntline/col2var Error: NbColumns or NbLines < 1" << endl; 631 return(0); 632 } 633 string v2str; 634 char buff[64]; 635 if (kw == "ntline2var") { 636 int numline = atoi(tokens[1].c_str()); 637 if ( (numline >= nti->NbLines()) || (numline < 0) ) { 638 cerr << "ntline2var Error: numline" << tokens[1] << " out of bounds" << endl; 639 return(0); 640 } 641 r_8* dline = nti->GetLineD(numline); 642 for(int kkv=0; kkv<nti->NbColumns(); kkv++) { 643 sprintf(buff, "%lg ", dline[kkv]); 644 v2str += buff; 645 } 646 } 647 else { 648 int numcol = atoi(tokens[1].c_str()); 649 if ( (numcol >= nti->NbColumns()) || (numcol < 0) ) { 650 cerr << "ntcol2var Error: numcol" << tokens[1] << " out of bounds" << endl; 651 return(0); 652 } 653 int kks = 0; 654 int kke = nti->NbLines(); 655 int kkp = 1; 656 if (tokens.size() > 3) Services2NObjMgr::DecodeLoopParameters(tokens[3], kks, kke, kkp); 657 if (kks < 0) kks = 0; 658 if (kke > nti->NbLines()) kke = nti->NbLines(); 659 if (kkp < 1) kkp = 1; 660 int nelt = (kke-kks-1)/kkp; 661 if (nelt > MAXNWORDSO2V) { 662 nelt = MAXNWORDSO2V; 663 cout << "ntcol2var Warning: Only " << nelt 664 << " lines " << " will be converted to string" << endl; 665 kke = kks+nelt*kkp; 666 } 667 r_8* dline; 668 for(int kkl=kks; kkl<kke; kkl+=kkp) { 669 dline = nti->GetLineD(kkl); 670 sprintf(buff, "%lg ", dline[numcol]); 671 v2str += buff; 672 } 673 } 674 mObjMgr->SetVar(tokens[2], v2str); 675 if (adel) delete nti; 676 } 677 678 // ------------------------------------------------------- 531 679 // Copie d'objets 532 680 else if ( (kw == "copy") || (kw == "cp") ) { … … 1378 1526 kw = "newvec"; 1379 1527 usage = "Creates (and optionaly fills) a vector \n Usage: newvec name size [f(i) [dopt] ] "; 1380 usage += "\n Related commands: newmtx ";1528 usage += "\n Related commands: newmtx line2vec"; 1381 1529 mpiac->RegisterCommand(kw, usage, this, "Objects"); 1382 1530 kw = "newmtx"; … … 1384 1532 usage +=" Usage: newmtx name sizeX(Col) sizeY(Lines) [f(i,j) [dopt] ] "; 1385 1533 usage += "\n Related commands: newvec"; 1534 mpiac->RegisterCommand(kw, usage, this, "Objects"); 1535 kw = "line2vec"; 1536 usage = "Creates a vector from the line \n"; 1537 usage += " Usage: line2vec vecname v0 v1 v2 ... \n"; 1538 usage += " Related commands: newvec line2nt"; 1539 mpiac->RegisterCommand(kw, usage, this, "Objects"); 1540 kw = "line2nt"; 1541 usage = "Fills (append) an NTuple from the line content \n"; 1542 usage += " Usage: line2nt ntname col0 col1 ... \n"; 1543 usage += " Related commands: newnt line2vec ntline2var ntcol2var"; 1544 mpiac->RegisterCommand(kw, usage, this, "Objects"); 1545 kw = "vec2var"; 1546 usage = "Vector content to an interpreter variable varname = 'v0 v1 v2 ...' \n"; 1547 usage += " Usage: line2vec vecname varname [LoopParam start:end[:step] ]\n"; 1548 usage += " Related commands: line2vec ntline2var"; 1549 mpiac->RegisterCommand(kw, usage, this, "Objects"); 1550 kw = "ntline2var"; 1551 usage = "Object NTupleInterface line to an interpreter variable \n"; 1552 usage += " Usage: ntline2var objname line_number varname \n"; 1553 usage += " Related commands: vec2var ntcol2var"; 1554 mpiac->RegisterCommand(kw, usage, this, "Objects"); 1555 kw = "ntcol2var"; 1556 usage = "Object NTupleInterface column to an interpreter variable \n"; 1557 usage += " Usage: ntline2var objname column_number varname [LoopParam start:end[:step] ] \n"; 1558 usage += " Related commands: vec2var ntline2var"; 1386 1559 mpiac->RegisterCommand(kw, usage, this, "Objects"); 1387 1560
Note:
See TracChangeset
for help on using the changeset viewer.