Changeset 730


Ignore:
Timestamp:
May 16, 2003, 11:37:44 AM (18 years ago)
Author:
luba
Message:
  • term type word processing is added to the function
File:
1 edited

Legend:

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

    r723 r730  
    55
    66#include <rf_core.hh>
    7 #include <rf_short_int.hh>
    87
    98namespace refal
     
    2322
    2423  if (t->get_type() == type_char) {
    25     if (((Char*)t)->to_wchar_t() == '-')
    26       flag = -1;
    27 
    28     if (((Char*)t)->to_wchar_t() == '+')
    29       flag = 1;
     24    if (((Char*)t)->to_wchar_t() == '-') {
     25      flag = -1; t++;
     26    }
     27    else
     28      if (((Char*)t)->to_wchar_t() == '+') {
     29        flag = 1; t++;
     30      }
    3031  };
    3132
    32   //добавить для Word проверку первого символа
     33  if ((t->get_type() == type_word) )
     34    if (((Word*)t)->is_number() == -1)
     35       flag = -1;
     36    else
     37    if(((Word*)t)->is_number() == 1)
     38      flag = 1;
     39    else
     40    retfail;
    3341
    34   if (flag || t->get_type() == type_short_int)
     42
     43  if (t->get_type() == type_short_int)
    3544    t++;
    3645
     
    5362        }
    5463      }
    55 #if 0
    5664    else
    57     if (t->get_type() == type_word && ((Word*)t)->is_number())
    58       if (len > UINTPTR_MAX - длина слова ))
    59         RF_LIB_ERROR("Argument too large for conversion");
    60       else
    61         len += ((Word*)t)->get_len();
    62 #endif
     65      if (t->get_type() == type_word){
     66        size_t word_len = ((Word*)t)->get_len();
     67        if (len > UINTPTR_MAX - word_len)
     68          RF_LIB_ERROR("Argument too large for conversion");
     69        else
     70          len += word_len;
     71      }
    6372    else
    6473      retfail;
     
    6978
    7079  s_Int = ShortInt::create_expr(e_Exp, flag);
    71 
     80 
    7281RF_END
    7382}
Note: See TracChangeset for help on using the changeset viewer.