Changeset 2218 in Sophya for trunk/SophyaPI/PIext/piacmd.cc


Ignore:
Timestamp:
Oct 21, 2002, 5:38:02 PM (23 years ago)
Author:
ansari
Message:

Suite amelioration interpreteur PIACmd , variables de type $#varname
et $varname[indexvar] - Reza 21/10/2002

File:
1 edited

Legend:

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

    r2215 r2218  
    889889      q3 = s.find_first_of("]",q2+1);
    890890      string sia = s.substr(q2+1, q3-q2-1);
     891      if (sia.length() < 1) {
     892        cerr << " Syntax error - in $varname[index] : $" 
     893             << vn << "[" << sia <<"]" << endl;
     894        return(4);
     895      }
     896      if (isalpha(sia[0])) {
     897        string sia2;
     898        if (!GetVar(sia, sia2) || (sia2.length() < 1)) {
     899          cerr << " Syntax error - in $varname[index] : $" 
     900               << vn << "[" << sia <<"]" << endl;
     901        return(4);       
     902        }
     903        sia = sia2;
     904      }
    891905      int rcdia = ctoi(sia.c_str(), &iarr);
    892906      if (rcdia < 0) {
     
    936950    cerr << " PIACmd::SubstituteVar/Error: ArgsStack empty ! "
    937951         << " ($" << vn << ")" << endl;
    938     vv = ""; return(false);
     952    vv = "";  return(false);
    939953  }
    940954  char buff[32];
    941955  long an = ArgsStack.top().size();
    942956  sprintf(buff,"%ld", an);
    943   vv = buff;
     957  vv = buff;  return(true);
    944958}
    945959else if (ctoi(vn.c_str(), &ka) > 0) {  // $0 $1 $2 ...
     
    954968    vv = ""; return(false);
    955969  }
    956   vv = ArgsStack.top()[ka];
    957 }
     970  vv = ArgsStack.top()[ka];  return(true);
     971}
     972else if (vn[0] == '#') {  // Variable de type $#vname --> size(vname)
     973  vn = vn.substr(1);
     974  if (!omg.HasVar(vn) ) {
     975    cerr << " PIACmd::SubstituteVarError: Undefined variable "
     976         << vn << " ! " << endl;
     977    vv = "";  return(false);
     978  }
     979  vn = omg.GetVar(vn);
     980  vector<string> vs;
     981  FillVStringFrString(vn, vs);
     982  char buff[32];
     983  sprintf(buff,"%d", (int)vs.size());
     984  vv = buff; return(true);
     985  }
    958986else {  // variable ordinaire geree par NamedObjMgr
    959987  if ( (!omg.HasVar(vn)) )  {
    960988    cerr << " PIACmd::SubstituteVarError: Undefined variable "
    961989         << vn << " ! " << endl;
    962     vv = ""; return(false);
    963   }
    964   vv = omg.GetVar(vn);
    965 }
    966 
    967 return(true);
     990    vv = "";  return(false);
     991  }
     992  vv = omg.GetVar(vn);  return(true);
     993}
     994
     995return(false);
    968996}
    969997
Note: See TracChangeset for help on using the changeset viewer.