Changeset 357 in Sophya


Ignore:
Timestamp:
Aug 5, 1999, 8:08:07 PM (26 years ago)
Author:
ercodmgr
Message:

Ajout de parametres de Loop (plot2d, ...), Ajout de fonction de
remplissage de matrices et vecteurs a partir de NTuples,
Rationalisation des commandes (arguments par defauts ...) Reza 6/8/99

Location:
trunk/SophyaPI/PIext
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaPI/PIext/basexecut.cc

    r349 r357  
    255255  double xmin, xmax;
    256256  xmin = 0.;  xmax = n;
    257   if (tokens.size() < 3)  tokens.push_back("0.");
    258   if (tokens.size() < 4)  tokens.push_back("n");
    259   mObjMgr->GetServiceObj()->PlotFunc(tokens[2], tokens[0], xmin, xmax, n, tokens[3]);
     257  if (tokens.size() < 3)  {
     258    Vector* v = new Vector(n);
     259    mObjMgr->AddObj(v, tokens[0]);
     260    }
     261  else {
     262    if (tokens.size() < 4)  tokens.push_back("");
     263    mObjMgr->GetServiceObj()->PlotFunc(tokens[2], tokens[0], xmin, xmax, n, tokens[3]);
     264    }
    260265  }
    261266else if (kw == "newmtx") {
    262267  if (tokens.size() < 3) {
    263     cout << "Usage: newvec name sizeX sizeY [f(i,j) dopt] " << endl; return(0);
     268    cout << "Usage: newvec name sizeX(Col) sizeY(Lines) [f(i,j) dopt] " << endl; return(0);
    264269    }
    265270  int nx = atoi(tokens[1].c_str());
     
    268273  xmin = 0.;  xmax = nx;
    269274  ymin = 0.;  ymax = ny;
    270   if (tokens.size() < 4)  tokens.push_back("0.");
    271   if (tokens.size() < 5)  tokens.push_back("n");
    272   mObjMgr->GetServiceObj()->PlotFunc2D(tokens[3], tokens[0], xmin, xmax, ymin, ymax,
    273                                        nx, ny, tokens[4]);
     275  if (tokens.size() < 4)  {
     276    Matrix* mtx = new Matrix(ny,nx);
     277    mObjMgr->AddObj(mtx, tokens[0]);
     278    }
     279  else {
     280    if (tokens.size() < 5)  tokens.push_back("n");
     281    mObjMgr->GetServiceObj()->PlotFunc2D(tokens[3], tokens[0], xmin, xmax, ymin, ymax,
     282                                         nx, ny, tokens[4]);
     283    }
    274284  }
    275285
     
    333343else if ( (kw == "func") ) {
    334344  if (tokens.size() < 4) { cout << "Usage: func f(x) xmin xmax npt [opt]" << endl; return(0); }
    335   string opt = "n";
     345  string opt = "";
    336346  if (tokens.size() > 4)  opt = tokens[4];
    337347  int np;
     
    346356else if ( (kw == "funcff") ) {
    347357  if (tokens.size() < 5) { cout << "Usage: funcff C-filename f(x)-name xmin xmax npt [opt]" << endl; return(0); }
    348   string opt = "n";
     358  string opt = "";
    349359  if (tokens.size() > 5)  opt = tokens[5];
    350360  int np;
     
    359369else if ( (kw == "func2d") ) {
    360370  if (tokens.size() < 7) {
    361     cout << "Usage: func2d f(x,y) xmin xmax nptx ymin ymax npty opt" << endl;
     371    cout << "Usage: func2d f(x,y) xmin xmax nptx ymin ymax npty [opt]" << endl;
    362372    return(0);
    363373    }
     
    372382  xmin = atof(tokens[1].c_str());   xmax = atof(tokens[2].c_str());
    373383  ymin = atof(tokens[4].c_str());   ymax = atof(tokens[5].c_str());
    374   string opt = "n";
     384  string opt = "";
    375385  if (tokens.size() > 7)  opt = tokens[7];
    376386  string nom = "";
     
    379389else if ( (kw == "func2dff") ) {
    380390  if (tokens.size() < 8) {
    381     cout << "Usage: func2d C-filename F(x,y)-name xmax nptx ymin ymax npty opt" << endl;
     391    cout << "Usage: func2d C-filename F(x,y)-name xmax nptx ymin ymax npty [opt]" << endl;
    382392    return(0);
    383393    }
     
    392402  xmin = atof(tokens[2].c_str());   xmax = atof(tokens[3].c_str());
    393403  ymin = atof(tokens[5].c_str());   ymax = atof(tokens[6].c_str());
    394   string opt = "n";
     404  string opt = "";
    395405  if (tokens.size() > 8)  opt = tokens[8];
    396406  string nom = "";
     
    400410// >>>>>>>>>>>  Trace d'expressions de N_Tuple, StarList, etc ...
    401411else if (kw == "plot2d" ) {
    402   if (tokens.size() < 4) {
    403     cout << "Usage: plot2d nameobj expx expy [experrx experry] expcut [opt]" << endl;
     412  if (tokens.size() < 3) {
     413    cout << "Usage: plot2d nameobj expx expy [expcut opt loop_par]" << endl;
    404414    return(0);
    405415    }
    406   string errx = ""; string erry = ""; string ecut = "1";
    407   string opt = "n";
    408   if (tokens.size() < 6) { // Plot sans les erreurs
    409     ecut = tokens[3];
    410     if (tokens.size() > 4)  opt = tokens[4];
    411     }
    412   else {                 // Plot avec les erreurs
    413     errx = tokens[3]; erry = tokens[4]; ecut = tokens[5];
    414     if (tokens.size() > 6)  opt = tokens[6];
    415     }
    416   srvo->DisplayPoints2D(tokens[0],tokens[1],tokens[2],errx,erry,ecut,opt);
    417   }
    418 
    419 else if (kw == "plot2dw" ) {
     416  string errx = ""; string erry = "";
     417  if (tokens.size() < 4) tokens.push_back("1");
     418  while (tokens.size() < 6) tokens.push_back("");
     419  srvo->DisplayPoints2D(tokens[0],tokens[1],tokens[2],errx,erry,tokens[3],tokens[4],tokens[5]);
     420  }
     421
     422else if (kw == "plot2de" ) {  // Plot2D avec les erreurs
     423  if (tokens.size() < 5) {
     424    cout << "Usage: plot2de nameobj expx expy experrx experry [expcut opt loop_par]" << endl;
     425    return(0);
     426    }
     427  if (tokens.size() < 6) tokens.push_back("1");
     428  while (tokens.size() < 8) tokens.push_back("");
     429  srvo->DisplayPoints2D(tokens[0],tokens[1],tokens[2],tokens[3],tokens[4],
     430                        tokens[5],tokens[6],tokens[7]);
     431  }
     432
     433else if (kw == "plot2dw" ) {   // Plot2d avec poids
     434  if (tokens.size() < 4) {
     435    cout << "Usage: plot2dw nomobj expx expy expwt [expcut opt loop_par]" << endl;
     436    return(0);
     437    }
     438  if (tokens.size() < 5) tokens.push_back("1");
     439  while (tokens.size() < 7) tokens.push_back("");
     440  srvo->DisplayPoints2DW(tokens[0],tokens[1],tokens[2],tokens[3], tokens[4], tokens[5], tokens[6]);
     441  }
     442else if (kw == "plot3d" ) { 
     443  if (tokens.size() < 4) {
     444    cout << "Usage: plot3d nomobj expx expy expz [expcut opt loop_par]" << endl;
     445    return(0);
     446    }
     447  if (tokens.size() < 5) tokens.push_back("1");
     448  while (tokens.size() < 7) tokens.push_back("");
     449  srvo->DisplayPoints3D(tokens[0],tokens[1],tokens[2],tokens[3], tokens[4], tokens[5], tokens[6]);
     450  }
     451
     452else if (kw == "projh1d" ) {
     453  if (tokens.size() < 3) {
     454    cout << "Usage: projh1d nomh1 nomobj expx [expwt expcut opt loop_par]" << endl;
     455    return(0);
     456    }
     457  if (tokens.size() < 4) tokens.push_back("1.");
     458  if (tokens.size() < 5) tokens.push_back("1");
     459  while (tokens.size() < 7) tokens.push_back("");
     460  srvo->ProjectH1(tokens[1], tokens[2], tokens[3], tokens[4], tokens[0], tokens[5], tokens[6] );
     461  }
     462
     463
     464// Projection dans histogrammes
     465else if (kw == "projh2d" ) {
     466  if (tokens.size() < 4) {
     467    cout << "Usage: projh2d nomh2 nomobj expx expy [expwt expcut opt loop_par]" << endl;
     468    return(0);
     469    }
     470  if (tokens.size() < 5) tokens.push_back("1.");
     471  if (tokens.size() < 6) tokens.push_back("1");
     472  while (tokens.size() < 8) tokens.push_back("");
     473  srvo->ProjectH2(tokens[1], tokens[2], tokens[3], tokens[4], tokens[5], tokens[0],
     474                  tokens[6], tokens[7] );
     475  }
     476
     477else if (kw == "projprof" ) {
     478  if (tokens.size() < 4) {
     479    cout << "Usage: projprof nomprof nomobj expx expy [expwt expcut opt loop_par]" << endl;
     480    return(0);
     481    }
     482  if (tokens.size() < 5) tokens.push_back("1.");
     483  if (tokens.size() < 6) tokens.push_back("1");
     484  while (tokens.size() < 8) tokens.push_back("");
     485  srvo->ProjectHProf(tokens[1], tokens[2], tokens[3], tokens[4], tokens[5], tokens[0],
     486                    tokens[6], tokens[7] );
     487  }
     488
     489// Projection dans vector/matrix
     490else if (kw == "fillvec" ) {
     491  if (tokens.size() < 4) {
     492    cout << "Usage: fillvec nomvec nomobj expx expv [expcut opt loop_par]" << endl;
     493    return(0);
     494    }
     495  if (tokens.size() < 5) tokens.push_back("1");
     496  while (tokens.size() < 7) tokens.push_back("");
     497  srvo->FillVect(tokens[1], tokens[2], tokens[3], tokens[4], tokens[0], tokens[5], tokens[6] );
     498  }
     499
     500else if (kw == "fillmtx" ) {
    420501  if (tokens.size() < 5) {
    421     cout << "Usage: plot2dw nomobj expx expy expwt expcut opt" << endl;
    422     return(0);
    423     }
    424   string opt = "n";
    425   if (tokens.size() > 5)  opt = tokens[5];
    426   srvo->DisplayPoints2DW(tokens[0],tokens[1],tokens[2],tokens[3], tokens[4], opt);
    427   }
    428 else if (kw == "plot3d" ) {
     502    cout << "Usage: fillmtx nommtx nomobj expx expy expv [expcut opt loop_par]" << endl;
     503    return(0);
     504    }
     505  if (tokens.size() < 6) tokens.push_back("1");
     506  while (tokens.size() < 8) tokens.push_back("");
     507  srvo->FillMatx(tokens[1], tokens[2], tokens[3], tokens[4], tokens[5], tokens[0],
     508                    tokens[6], tokens[7] );
     509  }
     510
     511// Remplissage NTuple,Vecteurs, ... , boucle de NTuple
     512else if (kw == "fillnt" ) {
    429513  if (tokens.size() < 5) {
    430     cout << "Usage: plot3d nomobj expx expy expz expcut opt" << endl;
    431     return(0);
    432     }
    433   string opt = "n";
    434   if (tokens.size() > 5)  opt = tokens[5];
    435   srvo->DisplayPoints3D(tokens[0],tokens[1],tokens[2],tokens[3], tokens[4], opt);
    436   }
    437 
    438 else if (kw == "projh1d" ) {
    439   if (tokens.size() < 5) {
    440     cout << "Usage: projh1d nomobj expx expwt expcut nomh1 opt" << endl;
    441     return(0);
    442     }
    443   string opt = "n";
    444   if (tokens.size() > 5)  opt = tokens[5];
    445   srvo->ProjectH1(tokens[0],tokens[1],tokens[2], tokens[3], tokens[4], opt);
    446   }
    447 
    448 else if (kw == "projh2d" ) {
    449   if (tokens.size() < 6) {
    450     cout << "Usage: projh2 nomobj expx expy expwt expcut nomh2 opt" << endl;
    451     return(0);
    452     }
    453   string opt = "n";
    454   if (tokens.size() > 6)  opt = tokens[6];
    455 
    456   srvo->ProjectH2(tokens[0],tokens[1],tokens[2], tokens[3], tokens[4], tokens[5], opt);
    457   }
    458 
    459 else if (kw == "projprof" ) {
    460   if (tokens.size() < 6) {
    461     cout << "Usage: projprof nomobj expx expy expwt expcut nomprof opt" << endl;
    462     return(0);
    463     }
    464   string opt = "n";
    465   if (tokens.size() > 6)  opt = tokens[6];
    466 
    467   srvo->ProjectHProf(tokens[0],tokens[1],tokens[2], tokens[3], tokens[4], tokens[5], opt);
    468   }
    469 
    470 else if (kw == "fillnt" ) {
    471   if (tokens.size() < 6) {
    472     cout << "Usage: fillnt nameobj expx expy expz expt expcut [ntname]" << endl;
    473     return(0);
    474     }
    475   if (tokens.size() < 7)  tokens.push_back("");
    476   srvo->FillNT(tokens[0],tokens[1],tokens[2], tokens[3], tokens[4], tokens[5], tokens[6] );
     514    cout << "Usage: fillnt nameobj expx expy expz expt [expcut ntname loop_par]" << endl;
     515    return(0);
     516    }
     517  while (tokens.size() < 8) tokens.push_back("");
     518  srvo->FillNT(tokens[0],tokens[1],tokens[2], tokens[3], tokens[4], tokens[5], tokens[6], tokens[7] );
    477519  }
    478520
    479521else if (kw == "ntloop" ) {
    480522  if (tokens.size() < 3) {
    481     cout << "Usage: ntloop nameobj fname funcname [ntname [N1 N2] ]" << endl;
    482     return(0);
    483     }
    484   if (tokens.size() < 4)  tokens.push_back("");
    485   if (tokens[3] == "!") tokens[3] = "";
    486   int nl1 = -1;
    487   int nl2 = -1;
    488   if (tokens.size() > 5) {
    489     nl1 = atoi(tokens[4].c_str());
    490     nl2 = atoi(tokens[5].c_str());
    491     }
    492   srvo->FillNTFrCFile(tokens[0],tokens[1], tokens[2], tokens[3], nl1, nl2);
     523    cout << "Usage: ntloop nameobj fname funcname [ntname loop_par ]" << endl;
     524    return(0);
     525    }
     526  while (tokens.size() < 5) tokens.push_back("");
     527  srvo->FillNTFrCFile(tokens[0],tokens[1], tokens[2], tokens[3], tokens[4]);
    493528  }
    494529
     
    501536  }
    502537
    503 else if (kw == "fillvec" ) {
    504   if (tokens.size() < 4) {
    505     cout << "Usage: fillvec nameobj expx expcut nomvec opt" << endl;
    506     return(0);
    507     }
    508   string opt = "n";
    509   if (tokens.size() > 4)  opt = tokens[4];
    510   srvo->FillVect(tokens[0],tokens[1],tokens[2], tokens[3], opt);
     538else if (kw == "exptovec" ) {
     539  if (tokens.size() < 3) {
     540    cout << "Usage: exptovec nomvec nameobj expx [expcut opt loop_par]" << endl;
     541    return(0);
     542    }
     543  while (tokens.size() < 6) tokens.push_back("");
     544  srvo->ExpressionToVector(tokens[1],tokens[2],tokens[3],tokens[0],tokens[4],tokens[5]);
    511545  }
    512546
    513547else if (kw == "fillgd1" ) {
    514548  if (tokens.size() < 5) {
    515     cout << "Usage: fillgd1 nomobj expx expy experry expcut nomgfd" << endl;
    516     return(0);
    517     }
    518   string nomgfd = "";
    519   if (tokens.size() > 5) nomgfd = tokens[5];
     549    cout << "Usage: fillgd1 nomgfd nomobj expx expy experry [expcut loop_par] " << endl;
     550    return(0);
     551    }
     552  if (tokens.size() < 6) tokens.push_back("1");
     553  if (tokens.size() < 7) tokens.push_back("");
    520554  string expy = "";
    521   srvo->FillGFD(tokens[0],tokens[1], expy, tokens[2], tokens[3], tokens[4],nomgfd);
     555  srvo->FillGFD(tokens[1],tokens[2], expy, tokens[3], tokens[4], tokens[5], tokens[0]);
    522556  }
    523557
    524558else if (kw == "fillgd2" ) {
    525559  if (tokens.size() < 6) {
    526     cout << "Usage: fillgd2 nomobj expx expy expz experrz expcut nomgfd" << endl;
    527     return(0);
    528     }
    529   string nomgfd = "";
    530   if (tokens.size() > 6) nomgfd = tokens[6];
    531   srvo->FillGFD(tokens[0],tokens[1],tokens[2], tokens[3], tokens[4], tokens[5],nomgfd);
     560    cout << "Usage: fillgd2 nomgfd nomobj expx expy expz experrz [expcut loop_par]" << endl;
     561    return(0);
     562    }
     563  if (tokens.size() < 7) tokens.push_back("1");
     564  if (tokens.size() < 8) tokens.push_back("");
     565  srvo->FillGFD(tokens[1],tokens[2],tokens[3], tokens[4], tokens[5], tokens[6], tokens[0], tokens[7]);
    532566  }
    533567
     
    713747mpiac->RegisterCommand(kw, usage, this, "Objects");
    714748kw = "newvec";
    715 usage = "Creates (and fills) a vector \n Usage: newvec name size [f(i) [dopt] ] ";
     749usage = "Creates (and optionaly fills) a vector \n Usage: newvec name size [f(i) [dopt] ] ";
    716750usage += "\n  Related commands: newmtx"; 
    717 mpiac->RegisterCommand(kw, usage, this, "Objets");
     751mpiac->RegisterCommand(kw, usage, this, "Objects");
    718752kw = "newmtx";
    719 usage = "Creates (and fills) a matrix \n Usage: newvec name sizeX sizeY [f(i,j) [dopt] ] ";
     753usage = "Creates (and optionaly fills) a matrix \n";
     754usage +="  Usage: newvec name sizeX(Col) sizeY(Lines) [f(i,j) [dopt] ] ";
    720755usage += "\n  Related commands: newvec"; 
    721 mpiac->RegisterCommand(kw, usage, this, "Objets");
     756mpiac->RegisterCommand(kw, usage, this, "Objects");
    722757
    723758kw = "disp";
     
    785820mpiac->RegisterCommand(kw, usage, this, "Func Plot");
    786821
     822kw = "ObjectExpressions";
     823usage = "Any mathematical expression (math.h) with object variables can be used";
     824usage += "\n  ------ Object Variable names (double) -------- ";
     825usage += "\nNTuple varnames - Histo1D/HProf: i,x,val,err - Histo2D: i,j,x,y,val,err";
     826usage += "\nVector: i,val - Matrix: i,j,val - Image: x=i,y=j, pix=val";
     827usage += "\nLoop parameters can be specified as I1[:I2[:DI]] for(int i=I1; i<I2; i+=DI)";
     828usage += "\nThe default Cut() expression in true (=1) for all";
     829usage += "\n  Related commands: plot2d plot2de plot2dw plot3d ";
     830usage += "\n        projh1d projh2d  projprof fillvec fillmtx ";
     831usage += "\n        fillnt fillgd1 fillgd2 ntloop exptovec ... ";
     832mpiac->RegisterCommand(kw, usage, NULL, "Expr. Plotting");
    787833kw = "plot2d";
    788834usage = "Plots (2D) Y=g(Object) vs. X=f(Object) --- Object Variable names (double) :";
    789 usage += "\nNTuple varnames - Histo1D/HProf: i,x,val,err - Histo2D: i,j,x,y,val,err";
    790 usage += "\nVector: i,val - Matrix: i,j,val - Image: x=i,y=j, pix=val";
    791 usage += "\n Usage: plot2d nameobj f_X() g_Y() [ f_ErrX() f_ErrY() ] f_Cut() [graphic_attributes]";
    792 usage += "\n  Related commands: plot2dw plot3d  projh1d  projh2d  projprof  fillnt fillvec fillgd1 ";
     835usage += "\n Usage: plot2d nameobj f_X() g_Y() [f_Cut() graphic_attributes loop_param]";
     836usage += "\n  Related commands: plot2de plot2dw plot3d ObjectExpressions ...";
     837mpiac->RegisterCommand(kw, usage, this, "Expr. Plotting");
     838kw = "plot2de";
     839usage = "Plots (2D) Y=g(Object) vs. X=f(Object) with error bars eX/Y=f_ErrX/Y(Object) ";
     840usage += "\n Usage: plot2de nameobj f_X() g_Y() f_ErrX() f_ErrY() [f_Cut() graphic_attributes loop_param]";
     841usage += "\n  Related commands: plot2d plot2dw plot3d ObjectExpressions ...";
    793842mpiac->RegisterCommand(kw, usage, this, "Expr. Plotting");
    794843kw = "plot2dw";
    795844usage = "Plots (2D) Y=g(Object) vs. X=f(Object) with Weight W=h(Object) ";
    796 usage += "\n Usage: plot2dw nameobj f_X() g_Y() h_Wt() Cut() [graphic_attributes]";
    797 usage += "\n  Related commands: plot2d  projh1d  projh2d  projprof  fillnt fillvec ";
     845usage += "\n Usage: plot2dw nameobj f_X() g_Y() h_Wt() [Cut() graphic_attributes loop_param]";
     846usage += "\n  Related commands: plot2d plot2dw plot3d ObjectExpressions ...";
    798847mpiac->RegisterCommand(kw, usage, this, "Expr. Plotting");
    799848kw = "plot3d";
    800849usage = "Plots (3D) Z=h(Object) vs. Y=g(Object) vs. X=f(Object) vs ";
    801 usage += "\n Usage: plot3d nameobj f_X() g_Y() h_Z() Cut() [graphic_attributes]";
    802 usage += "\n  Related commands: plot2d plot2dw projh1d  projh2d  projprof  fillnt fillvec ";
     850usage += "\n Usage: plot3d nameobj f_X() g_Y() h_Z() [Cut() graphic_attributes loop_param]";
     851usage += "\n  Related commands: plot2d plot2dw plot2de plot3d ObjectExpressions ...";
    803852mpiac->RegisterCommand(kw, usage, this, "Expr. Plotting");
    804853
    805854kw = "projh1d";
    806855usage = "Projects X=f(Object) with weight WT=h(Object) into a 1D histogram ";
    807 usage += "\n Usage: projh1d nameobj f_X() h_WT() Cut() nameh1d [graphic_attributes]";
     856usage += "\n Usage: projh1d nameh1d nameobj f_X() [h_WT()=1. Cut() graphic_attributes loop_param]";
    808857usage += "\n   Histo1D nameh1d is created if necessary ";
    809 usage += "\n  Related commands: plot2d  projh2d  projprof fillnt  fillvec ";
     858usage += "\n  Related commands: projh2d projprof ObjectExpressions ...";
    810859mpiac->RegisterCommand(kw, usage, this, "Expr. Plotting");
    811860kw = "projh2d";
    812861usage = "Projects (X=f(Object),Y=g(Object)) with weight WT=h(Object) into a 2D histogram ";
    813 usage += "\n Usage: projh2d nameobj f_X() g_Y() h_WT() Cut() nameh2d [graphic_attributes]";
     862usage += "\n Usage: projh2d nameh2d nameobj f_X() g_Y() [h_WT()=1. Cut() graphic_attributes loop_param]";
    814863usage += "\n   Histo2D nameh2d is created if necessary ";
    815 usage += "\n  Related commands: plot2d  projh1d projprof ";
     864usage += "\n  Related commands: projh1d projprof ObjectExpressions ...";
    816865mpiac->RegisterCommand(kw, usage, this, "Expr. Plotting");
    817866kw = "projprof";
    818867usage = "Projects (X=f(Object),Y=g(Object)) with weight WT=h(Object) into a profile histogram ";
    819 usage += "\n Usage: projh2d nameobj f_X() g_Y() h_WT() Cut() nameprof [graphic_attributes]";
     868usage += "\n Usage: projh2d nameprof nameobj f_X() g_Y() [h_WT()=1. Cut() graphic_attributes loop_param]";
    820869usage += "\n   HProf nameprof is created if necessary ";
    821 usage += "\n  Related commands: plot2d  projh2d  ";
     870usage += "\n  Related commands: projh1d projh2d ObjectExpressions ...";
     871mpiac->RegisterCommand(kw, usage, this, "Expr. Plotting");
     872kw = "fillvec";
     873usage = "Fills a Vector V((int)(f_X(Object)+0.5)) =  h_V(Object) ";
     874usage += "\n Usage: fillvec namevec nameobj f_X() h_V() [Cut() graphic_attributes loop_param]";
     875usage += "\n  Related commands: fillmtx fillnt ObjectExpressions ...";
     876mpiac->RegisterCommand(kw, usage, this, "Expr. Plotting");
     877kw = "fillmtx";
     878usage = "Fills a Matrix M(Line=g_Y(Object)+0.5, Col=f_X(Object)+0.5)) =  h_V(Object) ";
     879usage += "\n Usage: fillvec namevec nameobj f_X() g_Y() h_V() [Cut() graphic_attributes loop_param]";
     880usage += "\n  Related commands: fillvec fillnt ObjectExpressions ...";
    822881mpiac->RegisterCommand(kw, usage, this, "Expr. Plotting");
    823882
    824883kw = "fillnt";
    825884usage = "Creates and Fills an NTuple(x,y,z,t) with (X=f(Object),Y=g(...),Z=h(...),T=k(...))";
    826 usage += "\n Usage: fillnt nameobj f_X() g_Y() h_Z() k_T() Cut() nameNt";
     885usage += "\n Usage: fillnt nameobj f_X() g_Y() h_Z() k_T() [Cut() nameNt loop_param]";
    827886usage += "\n  Related commands: ntloop plot2d projh1d projh2d projprof ";
    828 mpiac->RegisterCommand(kw, usage, this, "Expr. Plotting");
     887usage += "\n  Related commands: fillvec fillmtx ntloop exptovec fillgd1 fillgd2 ObjectExpressions ...";
     888mpiac->RegisterCommand(kw, usage, this, "Expr. Plotting");
     889
    829890kw = "ntloop";
    830891usage = "Loops over an Object NTupleInterface calling a function from a C-file \n";
    831892usage += "and optionaly fills an NTuple(x,y,z,t) with (X=f(Object),Y=g(...),Z=h(...),T=k(...))";
    832 usage += "\n Usage: ntloop nameobj CFileName FuncName [NtupleName [N1 N2] ]";
    833 usage += "\n Or:    ntloop nameobj CFileName FuncName ! N1 N2 ";
     893usage += "\n Usage: ntloop nameobj CFileName FuncName [NtupleName loop_param]";
     894usage += "\n  Related commands: fillvec fillmtx fillnt fillgd1 fillgd2 exptovec ObjectExpressions ...";
    834895usage += "\n  Related commands: ntexpcfile fillnt";
    835896mpiac->RegisterCommand(kw, usage, this, "Expr. Plotting");
     897
    836898kw = "ntexpcfile";
    837899usage = "Creates a C-File with declarations suitable to be used for ntloop";
     
    840902mpiac->RegisterCommand(kw, usage, this, "Expr. Plotting");
    841903
    842 kw = "fillvec";
     904kw = "exptovec";
    843905usage = "Creates and Fills a Vector with X=f(Object)";
    844 usage += "\n Usage: fillvec nameobj f_X() Cut() nameVec [graphic_attributes]";
    845 usage += "\n  Related commands: plot2d  projh1d  fillnt ";
     906usage += "\n Usage: exptovec namevec nameobj f_X() [Cut() graphic_attributes loop_param]";
     907usage += "\n  Related commands: ntloop fillnt ObjectExpressions ...";
    846908mpiac->RegisterCommand(kw, usage, this, "Expr. Plotting");
    847909kw = "fillgd1";
    848910usage = "Creates and Fills a GeneralFitData with (X=f(Object), Y=g(...), ErrY=h(...))";
    849 usage += "\n Usage: fillgd1 nameobj f_X() g_Y() h_ErrY() Cut() nameGfd";
    850 usage += "\n  Related commands: plot2d  fillnt ";
     911usage += "\n Usage: fillgd1 namegfd nameobj f_X() g_Y() h_ErrY() [Cut() loop_param]";
     912usage += "\n  Related commands: ntloop fillnt ObjectExpressions ...";
    851913mpiac->RegisterCommand(kw, usage, this, "Expr. Plotting");
    852914kw = "fillgd2";
    853915usage = "Creates and Fills a GeneralFitData with (X=f(Object), Y=g(...), Z=h(...)) ErrZ=k(...)";
    854 usage += "\n Usage: fillgd1 nameobj f_X() g_Y() h_Z() k_ErrZ() Cut() nameGfd";
    855 usage += "\n  Related commands: plot2d  fillgd2 ";
     916usage += "\n Usage: fillgd1 namegfd nameobj f_X() g_Y() h_Z() k_ErrZ() [Cut() loop_param]";
     917usage += "\n  Related commands: ntloop fillnt ObjectExpressions ...";
    856918mpiac->RegisterCommand(kw, usage, this, "Expr. Plotting");
    857919
  • trunk/SophyaPI/PIext/piacmd.cc

    r353 r357  
    435435typedef vector<string> cmdtok;
    436436
     437/* Fonction */
     438static string GetStringFrStdin()
     439{
     440#ifndef __mac__
     441/* On vide le buffer X-Window */
     442XFlush(PIXDisplay());
     443#endif
     444char buff[128];
     445fgets(buff, 128, stdin);
     446buff[127] = '\0';
     447return((string)buff);
     448}
     449
    437450/* --Methode-- */
    438451int PIACmd::Interpret(string& s)
     
    683696    return(0);
    684697    }
    685   char buff[128];
    686   fgets(buff, 128, stdin);
    687   buff[127] = '\0';
    688   mVars[tokens[0]] = buff;
     698  mImgApp->GetConsole()->AddStr(">>> Reading From StdIn \n", PIVA_Magenta);
     699  cout << tokens[0] << " ? " << endl;
     700  mVars[tokens[0]] = GetStringFrStdin();
    689701  }
    690702
     
    833845  Interpret(line);
    834846  }
    835 histon = false;
     847histon = true;
    836848
    837849// hist << "### End of Exec( " << file << " ) " << endl;
     
    870882helpwin->Show();
    871883}
     884
     885
  • trunk/SophyaPI/PIext/servnobjm.cc

    r349 r357  
    203203  if (nom.length() < 1) {
    204204     titre = "Function f(x)";
    205      nom = "/tmp/func";
     205     nom = "/home/func";
    206206    }
    207207  else titre = nom;
     
    265265  if (nom.length() < 1) {
    266266     titre = "Function f(x,y)";
    267      nom = "/tmp/func2d";
     267     nom = "/home/func2d";
    268268    }
    269269  else titre = nom;
     
    287287void Services2NObjMgr::DisplayPoints2D(string& nom,  string& expx, string& expy,
    288288                                       string& experrx, string& experry,
    289                                        string& expcut, string dopt)
     289                                       string& expcut, string dopt, string loop)
    290290{
    291291NObjMgrAdapter* obja=NULL;
     
    305305else {  haserr = false;  experrx = experry = "0."; nt = new NTuple(2, ntn); }
    306306
    307 ComputeExpressions(obja, expx, expy, experrx, experry, expcut, nt, NULL, NULL);
     307ComputeExpressions(obja, expx, expy, experrx, experry, expcut, loop, nt, NULL, NULL);
    308308
    309309if (nt->NEntry() < 1) {
     
    330330/* --Methode-- */
    331331void Services2NObjMgr::DisplayPoints3D(string& nom,  string& expx, string& expy,
    332                                        string& expz, string& expcut, string dopt)
     332                                       string& expz, string& expcut, string dopt, string loop)
    333333{
    334334NObjMgrAdapter* obja=NULL;
     
    344344
    345345string expwt = "1.";
    346 ComputeExpressions(obja, expx, expy, expz, expwt, expcut, nt, NULL, NULL);
     346ComputeExpressions(obja, expx, expy, expz, expwt, expcut, loop, nt, NULL, NULL);
    347347
    348348if (nt->NEntry() < 1) {
     
    372372/* --Methode-- */
    373373void Services2NObjMgr::DisplayPoints2DW(string& nom, string& expx, string& expy,
    374                                         string& expwt, string& expcut, string dopt)
     374                                        string& expwt, string& expcut, string dopt, string loop)
    375375{
    376376NObjMgrAdapter* obja=NULL;
     
    386386
    387387string exp = "1.";
    388 ComputeExpressions(obja, expx, expy, expwt, exp, expcut, nt, NULL, NULL);
     388ComputeExpressions(obja, expx, expy, expwt, exp, expcut, loop, nt, NULL, NULL);
    389389
    390390if (nt->NEntry() < 1) {
     
    408408/* --Methode-- */
    409409void Services2NObjMgr::ProjectH1(string& nom, string& expx, string& expwt,
    410                                  string& expcut, string& nomh1, string dopt)
     410                                 string& expcut, string& nomh1, string dopt, string loop)
    411411{
    412412NObjMgrAdapter* obja=NULL;
     
    429429  }
    430430string expz = "0.";   
    431 ComputeExpressions(obja, expx, expwt, expz, expwt, expcut, nt, h1, NULL);
     431ComputeExpressions(obja, expx, expwt, expz, expwt, expcut, loop, nt, h1, NULL);
    432432
    433433if ((!h1) && (!nt)) return;
     
    457457/* --Methode-- */
    458458void Services2NObjMgr::ProjectH2(string& nom, string& expx, string& expy, string& expwt,
    459                                  string& expcut, string& nomh2, string dopt)
     459                                 string& expcut, string& nomh2, string dopt, string loop)
    460460{
    461461NObjMgrAdapter* obja=NULL;
     
    478478  }
    479479string expz = "0.";   
    480 ComputeExpressions(obja, expx, expy, expwt, expwt, expcut, nt, NULL, h2);
     480ComputeExpressions(obja, expx, expy, expwt, expwt, expcut, loop, nt, NULL, h2);
    481481
    482482if ((!h2) && (!nt)) return;
     
    508508/* --Methode-- cmv 13/10/98 */
    509509void Services2NObjMgr::ProjectHProf(string& nom, string& expx, string& expy, string& expwt,
    510                                     string& expcut, string& nomprof, string dopt)
    511 //      Pour remplir un ``GeneralFitData'' a partir de divers objets:
     510                                    string& expcut, string& nomprof, string dopt, string loop)
     511//      Pour remplir un ``GeneralFitData'' a partir de divers objets: 
    512512//| nom = nom de l'objet a projeter dans un HProf.
    513513//| expx = expression X de definition du bin.
     
    539539}
    540540string expz = "0.";
    541 ComputeExpressions(obja, expx, expy, expwt, expwt, expcut, nt, NULL, NULL, hprof);
     541ComputeExpressions(obja, expx, expy, expwt, expwt, expcut, loop, nt, NULL, NULL, hprof);
    542542
    543543if((!hprof) && (!nt)) return;
     
    566566}
    567567
    568 /* --Methode-- */
    569 void Services2NObjMgr::FillVect(string& nom, string& expx, string& expcut,
    570                                 string& nomvec, string dopt)
     568
     569/* --Methode-- */
     570void Services2NObjMgr::FillVect(string& nom, string& expx, string& expv,
     571                                   string& expcut, string& nomvec, string dopt, string loop)
    571572{
    572573NObjMgrAdapter* obja=NULL;
    573574obja = mOmg->GetObjAdapter(nom);
    574575if (obja == NULL) {
    575   cout << "Services2NObjMgr::FillVect() Error , Pas d'objet de nom " << nom << endl;
     576  cout << "Services2NObjMgr::FillVect() Error , No such object: " << nom << endl;
    576577  return;
    577578  }
    578579if (!mImgapp)  return;
    579580
     581Vector* v1 = NULL;
     582AnyDataObj* ov = NULL;
     583ov=mOmg->GetObj(nomvec);
     584if (ov != NULL) v1 = dynamic_cast<Vector *>(ov);
     585if (v1 == NULL) {
     586  cout << "Services2NObjMgr::FillVect() Error , No such object or not a vector: " << nomvec << endl;
     587  return;
     588  }
     589
     590char* ntn[2]= {"vi", "vv"};
     591NTuple* nt = new NTuple(2,ntn);  // Creation NTuple
     592
     593string expz = "0.";   
     594ComputeExpressions(obja, expx, expv, expz, expz, expcut, loop, nt);
     595
     596if (!nt) return;
     597if (nt->NEntry() < 1) {
     598  cout << "Services2NObjMgr::FillVect() Warning  Zero points satisfy cut !" << endl;
     599  delete nt;
     600  return;
     601  }
     602
     603  int i,k;
     604  double* xn;
     605  for(k=0; k<nt->NEntry(); k++)    {
     606    xn = nt->GetLineD(k);
     607    i = xn[0]+0.5;
     608    if ( (i < 0) || i >= v1->NElts() ) continue;
     609    (*v1)(i) = xn[1];
     610    }
     611  delete nt;
     612 
     613
     614mOmg->DisplayObj(nomvec, dopt);
     615return; 
     616}
     617
     618/* --Methode-- */
     619void Services2NObjMgr::FillMatx(string& nom, string& expx, string& expy, string& expv,
     620                                string& expcut, string& nommtx, string dopt, string loop)
     621{
     622NObjMgrAdapter* obja=NULL;
     623obja = mOmg->GetObjAdapter(nom);
     624if (obja == NULL) {
     625  cout << "Services2NObjMgr::FillMatx() Error , No such objet " << nom << endl;
     626  return;
     627  }
     628if (!mImgapp)  return;
     629
     630Matrix* mtx = NULL;
     631AnyDataObj* om = NULL;
     632om=mOmg->GetObj(nommtx);
     633if (om != NULL) mtx = dynamic_cast<Matrix *>(om);
     634if (mtx == NULL) {
     635  cout << "Services2NObjMgr::FillMatx() Error , No such object or not a matrix " << nommtx << endl;
     636  return;
     637  }
     638
     639char* ntn[3]= {"mi", "mj", "mv"};
     640NTuple* nt = new NTuple(3,ntn);  // Creation NTuple
     641
     642string expz = "0.";   
     643ComputeExpressions(obja, expx, expy, expv, expz, expcut, loop, nt);
     644
     645if (!nt) return;
     646if (nt->NEntry() < 1) {
     647  cout << "Services2NObjMgr::FillMatx() Warning  Zero points satisfy cut !" << endl;
     648  delete nt;
     649  return;
     650  }
     651
     652  int ic, jl, k;
     653  double* xn;
     654  for(k=0; k<nt->NEntry(); k++)    {
     655    xn = nt->GetLineD(k);
     656    ic = xn[0]+0.5;
     657    jl = xn[1]+0.5;
     658    if ( (ic < 0) || ic >= mtx->NCol() ) continue;
     659    if ( (jl < 0) || jl >= mtx->NRows() ) continue;
     660    (*mtx)(jl, ic) = xn[2];
     661    }
     662  delete nt;
     663 
     664
     665mOmg->DisplayObj(nommtx, dopt);
     666return; 
     667
     668}
     669
     670/* --Methode-- */
     671void Services2NObjMgr::ExpressionToVector(string& nom, string& expx, string& expcut,
     672                                          string& nomvec, string dopt, string loop)
     673{
     674NObjMgrAdapter* obja=NULL;
     675obja = mOmg->GetObjAdapter(nom);
     676if (obja == NULL) {
     677  cout << "Services2NObjMgr::ExpressionToVector() Error , Pas d'objet de nom " << nom << endl;
     678  return;
     679  }
     680if (!mImgapp)  return;
     681
    580682NTuple* nt = NULL;
    581 if (nomvec.length() < 1) nomvec = "/tmp/fillvec";
     683if (nomvec.length() < 1) nomvec = "/tmp/expvec";
    582684
    583685char* ntn[2]= {"vecval", "vecwt"};
     
    586688string expwt = "1.";
    587689string expz = "0.";   
    588 ComputeExpressions(obja, expx, expz, expz, expwt, expcut, nt, NULL, NULL);
     690ComputeExpressions(obja, expx, expz, expz, expwt, expcut, loop, nt, NULL, NULL);
    589691
    590692if (!nt) return;
    591693if (nt->NEntry() < 1) {
    592   cout << "Services2NObjMgr::FillVect() Warning  Zero points satisfy cut !" << endl;
     694  cout << "Services2NObjMgr::ExpressionToVector() Warning  Zero points satisfy cut !" << endl;
    593695  delete nt;
    594696  return;
     
    610712/* --Methode-- */
    611713void Services2NObjMgr::FillNT(string& nom, string& expx, string& expy, string& expz,
    612                               string& expt, string& expcut, string& nomnt)
     714                              string& expt, string& expcut, string& nomnt, string loop)
    613715{
    614716NObjMgrAdapter* obja=NULL;
     
    638740  }
    639741
    640 ComputeExpressions(obja, expx, expy, expz, expt, expcut, nt, NULL, NULL);
     742ComputeExpressions(obja, expx, expy, expz, expt, expcut, loop, nt, NULL, NULL);
    641743
    642744if (fgnnt) mOmg->AddObj(nt, nomnt);
     
    647749/* --Methode-- */
    648750void Services2NObjMgr::FillNTFrCFile(string & nom, string const & fname,
    649                                      string const & funcname, string & nomnt,
    650                                      int nl1, int nl2)
     751                                     string const & funcname, string & nomnt, string loop)
    651752{
    652753if (!mImgapp)  return;
     
    703804mImgapp->RedirectStdOutErr(false);
    704805
     806int k1,k2,dk;
     807k1 = 0;  k2 = objnt->NbLines();  dk = 1;
     808DecodeLoopParameters(loop, k1, k2, dk);
     809if (k1 < 0) k1 = 0;
     810if (k2 < 0) k2 = objnt->NbLines();
     811if (k2 > objnt->NbLines()) k2 = objnt->NbLines();
     812if (dk <= 0) dk = 1;
     813
    705814TRY  {
    706815  double* xn;
    707   if (nl1 < 0) nl1 = 0;
    708   if (nl2 < 0) nl2 = objnt->NbLines();
    709   if (nl2 > objnt->NbLines()) nl2 = objnt->NbLines();
    710   int kmax = nl2;
    711   for(k=nl1; k<kmax; k++)    {
     816  int kmax = k2;
     817  for(k=k1; k<kmax; k+=dk)    {
    712818    xn = objnt->GetLineD(k);
    713819    if (f(xn, xnt, xnt+1, xnt+2, xnt+3, k, kmax) != 0) {
     
    804910/* --Methode-- cmv 13/10/98 */
    805911void Services2NObjMgr::FillGFD(string& nom, string& expx, string& expy, string& expz,
    806                                string& experr, string& expcut, string& nomgfd)
     912                               string& experr, string& expcut, string& nomgfd, string loop)
    807913//      Pour remplir un ``GeneralFitData'' a partir de divers objets:
    808914//| nom = nom de l'objet a transcrire selon 1D: Z=f(X) ou 2D: Z=f(X,Y) .
     
    832938
    833939// Remplissage NTuple buffer
    834 ComputeExpressions(obja, expx, expy, expz, experr, expcut, nt, NULL, NULL);
     940ComputeExpressions(obja, expx, expy, expz, experr, expcut, loop, nt, NULL, NULL);
    835941if(nt->NEntry() < 1)
    836942  {cout<<"Services2NObjMgr::FillGFD() Warning  Zero points satisfy cut !"<<endl;
     
    13391445/* --Methode-- */
    13401446void Services2NObjMgr::ComputeExpressions(NObjMgrAdapter* obja, string& expx,
    1341                           string& expy, string& expz, string& expt, string& expcut,
     1447                          string& expy, string& expz, string& expt, string& expcut, string& loop,
    13421448                          NTuple* nt, Histo* h1, Histo2D* h2, HProf* hp)
    13431449{
     
    13601466int i,k;
    13611467for(i=0; i<10; i++) xnt[i] = 0.;
    1362 
     1468int k1,k2,dk;
     1469k1 = 0;  k2 = objnt->NbLines();  dk = 1;
     1470DecodeLoopParameters(loop, k1, k2, dk);
     1471if (k1 < 0) k1 = 0;
     1472if (k2 < 0) k2 = objnt->NbLines();
     1473if (k2 > objnt->NbLines()) k2 = objnt->NbLines();
     1474if (dk <= 0) dk = 1;
    13631475TRY  {
    13641476  double* xn;
    1365   for(k=0; k<objnt->NbLines(); k++)    {
     1477  for(k=k1; k<k2; k += dk)    {
    13661478    xn = objnt->GetLineD(k);
    13671479    if (f(xn, xnt, xnt+1, xnt+2, xnt+3) != 0) {
     
    14711583}
    14721584
     1585// Fonction static
     1586/* --Methode-- */
     1587void Services2NObjMgr::DecodeLoopParameters(string& loop, int& i1, int& i2, int& di)
     1588{
     1589// Decode des paramatres de boucle for(int i=i1; i<i2; i+=di) specifies
     1590// sous forme i1[:i2[:di]]
     1591// cout << "LoopParam() " << loop << " I1=" << i1 << " I2=" << i2 << " DI=" << di;
     1592size_t l = loop.length();
     1593if (l < 1) return;
     1594size_t p = loop.find(':');
     1595if (p >= l) { i1 = atoi(loop.c_str()); return; }
     1596i1 = atoi(loop.substr(0, p).c_str());
     1597string aa = loop.substr(p+1);
     1598p = aa.find(':');
     1599if (p < aa.length() ) {
     1600  i2 = atoi(aa.substr(0,p).c_str());
     1601  di = atoi(aa.substr(p+1).c_str());
     1602  }
     1603else i2 = atoi(aa.c_str());
     1604// cout << "-> I1= " << i1 << " I2= " << i2 << " DI= " << di << endl;
     1605return;
     1606}
    14731607
    14741608/* --Methode-- */
  • trunk/SophyaPI/PIext/servnobjm.h

    r351 r357  
    6161  virtual void          DisplayPoints2D(string & nom, string& expx, string& expy,
    6262                                        string& experrx, string& experry,
    63                                         string& expcut, string dopt="");
     63                                        string& expcut, string dopt="", string loop="");
    6464  virtual void          DisplayPoints3D(string & nom, string& expx, string& expy, string& expz,
    65                                         string& expcut, string dopt="");
     65                                        string& expcut, string dopt="", string loop="");
    6666  virtual void          DisplayPoints2DW(string & nom, string& expx, string& expy,
    67                                          string& expwt, string& expcut, string dopt="");
    68 //  Projection d'expressions dans histogramme (et trace)
     67                                         string& expwt, string& expcut, string dopt="", string loop="");
     68//  Projection d'expressions dans histogramme, vecteur/matrices (et trace)
    6969  virtual void          ProjectH1(string & nom, string& expx, string& expwt, string& expcut,
    70                                   string& nomh1, string dopt="");
     70                                  string& nomh1, string dopt="", string loop="");
    7171  virtual void          ProjectH2(string & nom, string& expx, string& expy, string& expwt,
    72                                   string& expcut, string& nomh2, string dopt="");
     72                                  string& expcut, string& nomh2, string dopt="", string loop="");
    7373  virtual void          ProjectHProf(string & nom, string& expx, string& expy, string& expwt,
    74                                   string& expcut, string& nomprof, string dopt="");
    75 //  Projection d'expression dans vecteurs et dans n-tuple
    76   virtual void          FillVect(string & nom, string& expx, string& expcut,
    77                                  string& nomvec, string dopt="");
     74                                  string& expcut, string& nomprof, string dopt="", string loop="");
     75
     76//  Remplissage de vecteurs, ntuples, GFD
     77  virtual void          FillVect(string & nom, string& expx, string& expv, string& expcut,
     78                                  string& nomvec, string dopt="", string loop="");
     79  virtual void          FillMatx(string & nom, string& expx, string& expy, string& expv,
     80                                  string& expcut, string& nommtx, string dopt="", string loop="");
     81
     82  virtual void          ExpressionToVector(string & nom, string& expx, string& expcut,
     83                                           string& nomvec, string dopt="", string loop="");
    7884  virtual void          FillNT(string & nom, string& expx, string& expy, string& expz,
    79                                string& expt, string& expcut, string& nomnt);
     85                               string& expt, string& expcut, string& nomnt, string loop="");
    8086  virtual void          FillGFD(string & nom, string& expx, string& expy, string& expz,
    81                                string& experr, string& expcut, string& nomgfd);
     87                               string& experr, string& expcut, string& nomgfd, string loop="");
    8288  virtual void          FillNTFrCFile(string & nom, string const & fname,
    83                                       string const & funcname, string & nomnt,
    84                                       int nl1=-1, int nl2=-1);
     89                                      string const & funcname, string & nomnt, string loop="");
    8590  virtual void          PrepareNTExpressionCFile(string & nomobj, string const & fname,
    8691                                                 string const & funcname);
     
    9297// Calcul d'expressions d'interface NTuple pour les objets
    9398  void          ComputeExpressions(NObjMgrAdapter* obja, string& expx, string& expy,
    94                                    string& expz, string& expt, string& expcut,
     99                                   string& expz, string& expt, string& expcut, string& loop,
    95100                                   NTuple* nt=NULL, Histo* h1=NULL,
    96101                                   Histo2D* h2=NULL, HProf* hp=NULL);
     
    101106
    102107// Utilitaires divers
     108  static void   DecodeLoopParameters(string& loop, int& i1, int& i2, int& di);
     109  int           DecodeDispOption(string& dopt, bool& fgsrgr);
    103110  string        FileName2Name(string const & fn);
    104   int           DecodeDispOption(string& dopt, bool& fgsrgr);
    105111  char*         PClassIdToClassName(int cid);
    106112
Note: See TracChangeset for help on using the changeset viewer.