Changeset 753


Ignore:
Timestamp:
May 25, 2003, 8:52:55 PM (18 years ago)
Author:
luba
Message:
  • processing of spaces before and after Char terms is added
File:
1 edited

Legend:

Unmodified
Added
Removed
  • to-imperative/trunk/library/Convert/to_int.cc

    r738 r753  
    2020
    2121  Term* t = e_Exp.get_first();
    22 
     22  if (t->get_type() == type_char) {
     23    for (; ;)
     24      if (((Char*)t)->to_wchar_t() != ' ') {
     25        break;
     26      }
     27      else t++;
     28  }
    2329  if (t->get_type() == type_char) {
    2430    if (((Char*)t)->to_wchar_t() == '-') {
     
    2632    }
    2733    else
    28       if (((Char*)t)->to_wchar_t() == '+') {
    29         flag = 1; t++;
    30       }
     34    if (((Char*)t)->to_wchar_t() == '+') {
     35      flag = 1; t++;
     36    }
    3137  };
    32 
    3338  if ((t->get_type() == type_word) )
    3439    if (((Word*)t)->is_number() == -1)
     
    4045    if(((Word*)t)->is_number() == 2)
    4146      flag = 0;
    42     else
    43     retfail;
    44 
     47    else 
     48      retfail;
     49   
    4550  if (t->get_type() == type_short_int ||t->get_type() == type_word ) {
    4651    t++;
    4752  }
     53 
     54  for (; t < e_Exp.get_last(); t++) {
     55    if (t->get_type() == type_char) {
    4856
    49   for (; t < e_Exp.get_last(); t++) {
    50     if (t->get_type() == type_char && ((Char*)t)->is_digit())
    51       if (len > UINTPTR_MAX - 1)
    52         RF_LIB_ERROR("Argument too large for conversion");
    53       else
    54         len += 1;
     57      if (((Char*)t)->is_not_space()) {
     58
     59        if (((Char*)t)->is_digit()) {
     60
     61          if (len > UINTPTR_MAX - 1)
     62            RF_LIB_ERROR("Argument too large for conversion");
     63          else {
     64            len += 1;
     65          }
     66        }
     67        else {
     68          if (((Char*)t)->is_not_space())
     69            retfail;
     70          else
     71            continue;   
     72        }
     73      }
     74                 
     75      else {
     76        Term* temp = t;
     77        while (temp->get_type()==type_char){
     78          if (((Char*)temp)->is_not_space() == false){
     79            temp++; t = temp;
     80          }
     81          else {
     82            retfail;
     83          }
     84        }
     85      }
     86    }
    5587    else
    5688      if (t->get_type() == type_short_int) {
Note: See TracChangeset for help on using the changeset viewer.