Changeset 1157 in Sophya for trunk/SophyaLib/BaseTools/mutyv.cc


Ignore:
Timestamp:
Aug 29, 2000, 6:11:42 PM (25 years ago)
Author:
ansari
Message:

Declaration sa_size_t ds machdefs.h - Amelioration/correction DVList et MuTyV - Reza 29/8/2000

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/BaseTools/mutyv.cc

    r1080 r1157  
    3232
    3333
     34static void mutyv_decodestr(const char * si, double& r, double& im);
     35
    3436/* --Methode-- */
    3537MuTyV::MuTyV(MuTyV const & a)
     
    5153  typ = 'S';
    5254  strv = new string(s);
    53   dv = dv_im = 0.;
    54   sscanf(s, "%lg %lg", &dv, &dv_im);
     55  mutyv_decodestr(s, dv, dv_im);
    5556  iv = (int_8)dv;
    5657}
     
    6162  typ = 'S';
    6263  strv = new string(s);
    63   dv = dv_im = 0.;
    64   sscanf(s.c_str(), "%lg %lg", &dv, &dv_im);
     64  mutyv_decodestr(s.c_str(), dv, dv_im);
    6565  iv = (int_8)dv;
    6666}
     
    8080  typ = 'S';
    8181  strv = new string(s);
    82   dv = dv_im = 0.;
    83   sscanf(s, "%lg %lg", &dv, &dv_im);
     82  mutyv_decodestr(s, dv, dv_im);
    8483  iv = (int_8)dv;
    8584  return(s);
     
    9190  typ = 'S';
    9291  strv = new string(s);
    93   dv = dv_im = 0.;
    94   sscanf(s.c_str(), "%lg %lg", &dv, &dv_im);
     92  mutyv_decodestr(s.c_str(), dv, dv_im);
    9593  iv = (int_8)dv;
    9694  return(s);
     
    105103    if (typ == 'I')  sprintf(buff,"%ld", (long)iv);
    106104    else if (typ == 'D') sprintf(buff,"%.20g", dv);
    107     else if (typ == 'Z') sprintf(buff,"%.20g %.20g i", dv, dv_im);
     105    else if (typ == 'Z') sprintf(buff,"(%.20g , %.20g)", dv, dv_im);
    108106    else buff[0] = '\0';
    109107    return(string(buff));
     
    112110
    113111
     112static void mutyv_decodestr(const char * si, double& r, double& im)
     113  // decodage d'une chaine contenant une ou deux valeurs
     114{
     115  r = im = 0.;
     116  string s = si;
     117  size_t l = s.length();
     118  size_t p = s.find_first_not_of(" ()\t",0);
     119  if (p >= l) return;
     120  size_t q = s.find_first_of(" ()\t",p+1);
     121 
     122 
     123  if (!isdigit(s[p]) && !(s[p] == '+') && !(s[p] == '-') )
     124    return;
     125  r = atof(s.substr(p,q-p).c_str());
     126
     127  p = s.find_first_not_of(" ()\t",q+1);
     128  if (p >= l) return;
     129  q = s.find_first_of(" ()\t",p+1);
     130  if (!isdigit(s[p]) && !(s[p] == '+') && !(s[p] == '-') )
     131    return;
     132  im = atof(s.substr(p,q-p).c_str());
     133}
    114134
    115135
    116136
     137
Note: See TracChangeset for help on using the changeset viewer.