Changeset 762


Ignore:
Timestamp:
May 26, 2003, 7:34:00 PM (18 years ago)
Author:
luba
Message:
  • constructor in NumIterator? class and is_number() method are modified for processing spaces in terms of type Word
Location:
to-imperative/trunk/runtime
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • to-imperative/trunk/runtime/rf_word.hh

    r754 r762  
    4545  inline int is_number () const;
    4646
    47   inline const wchar_t* get_content () const;
    48 
    4947  static Expr create_expr (wchar_t const* _wstr) ;
    5048
  • to-imperative/trunk/runtime/rf_word.ih

    r754 r762  
    9090}
    9191
    92 inline const wchar_t* Word:: get_content () const {
    93   Header* h = static_cast<Header*>(ptr_data2);
    94   return h->content;
    95 }
    96 
    97 
    9892
    9993//first symbol in word is '-' res == -1; '+' res == 1,
     
    107101  Header* h = static_cast<Header*>(ptr_data2);
    108102
     103  for (; ;)
     104    if ((h->content[i]) != ' ')
     105      break;
     106    else
     107      i++;
     108   
    109109  if ((h->content[i]) == '-') res = -1;
    110110  if ((h->content[i]) == '+') res = 1;
     
    113113  if (res)
    114114    i++;
    115     for (; i < h->length; i++)
    116       if (iswdigit(h->content[i])==0) {
     115
     116  bool prev = false;
     117
     118  for (; i < h->length; i++) {
     119    if (iswdigit(h->content[i]) == 0) { 
     120      if ((h->content[i]) == ' ') {
     121        prev = true;
     122        continue;
     123      }
     124
     125      else {
    117126        res = 0;
    118127        break;
    119128      }
     129    }
     130    else
     131      if (prev) {
     132        res = 0;
     133        break;
     134      }
     135      else continue;
     136     
     137
     138  }
    120139  return res;
    121140}
     
    128147{
    129148  Header* h = static_cast<Header*>(_word.ptr_data2);
     149
     150  for (size_t i = 0; i < h->length; i++){   
     151    if ( *(h->content + i) == ' ')
     152      continue;
     153    else {
     154      iter = h->content + i;
     155      break;
     156    }
     157  }
     158
    130159  if (*(h->content) == '+' || *(h->content) == '-')
    131160    iter = h->content + 1;
    132   else
    133     iter = h->content;
    134   bound = h->content + h->length;
    135 }
    136 
     161
     162  for (size_t i = h->length - 1; ; i--)
     163    if (h->content[i] == ' ')
     164      continue;
     165    else {
     166      bound = h->content + i;
     167      break;
     168    }
     169}
     170 
    137171inline Word::NumIterator& Word::NumIterator::operator ++(int)
    138172{
     
    160194inline const char Word::NumIterator::operator * () const
    161195{
    162   return *iter - 48;
     196    return *iter - 48;
    163197}
    164198
Note: See TracChangeset for help on using the changeset viewer.