Changeset 252


Ignore:
Timestamp:
Nov 27, 2002, 12:38:02 PM (18 years ago)
Author:
luba
Message:

* empty log message *

File:
1 edited

Legend:

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

    r251 r252  
    3838
    3939  if (expr.get_last() - q > 10)
    40     error ( Word2Expr(RF-INT) + "Size limit exceeded");
     40    error ( Word2Expr("RF-INT") + "Size limit exceeded");
    4141
    42   Term* p = expr.get_last();
     42  Term* p = expr.get_last() - 1;
    4343 
    4444  intptr_t k = 1; n = 0;
     
    5454    rf_char b = rf_char(INTPTR_MAX / 1000000000);
    5555    if (*(rf_char*)q > b)
    56       error ( Word2Expr(RF-INT) + "Size limit exceeded");
     56      error ( Word2Expr("RF-INT") + "Size limit exceeded");
    5757     
    5858    for (; p > q ; p--) {
     
    6565   
    6666      if ( n > INTPTR_MAX - INTPTR_MAX / 1000000000 * 1000000000 )
    67         error ( Word2Expr(RF-INT) + "Size limit exceeded");
     67        error ( Word2Expr("RF-INT") + "Size limit exceeded");
    6868
    69     n += (((rf_char*)p)->to_byte().n - ord('0'))*k;
     69    n += (((rf_char*)q)->to_byte().n - ord('0'))*k;
    7070  };
    7171
     
    8989
    9090inline Term* rf_int::to_rf_chars(Term* t) const {
    91   uintptr_t len = this->get_char_len();
    92   intptr_t k = len - 1;
    93   intptr_t m;
    94   rf_char temp;
    95   while ( k != -1 ) {
    96     m = (n / pow (10, k)) % 10;
    97     temp = rf_char(m);
    98     temp.to_rf_chars(t);
     91  /*
     92  if (n < 0)
     93    *t = rf_char("-");
     94
     95  uintptr_t k = 1;
     96  intptr_t num = n / 10;
     97 
     98  while (num) {
     99    num /= 10;
     100    k *= 10 ;
     101  };                   
     102
     103  while ( k ) {
     104    m = (n / k) % 10;
     105    *t = rf_char(m - ord("0"));
     106    k /= 10;
    99107    t++;
    100     k--;
    101108  };
    102109  return t++;
     110  */
     111  char str[11];
     112  sprintf(str, "%d", n);
     113  for (char *s = str; *s; s++)
     114    *t++ = rf_char(*s);
     115  return t;
    103116};
    104117
Note: See TracChangeset for help on using the changeset viewer.