Changeset 1132


Ignore:
Timestamp:
Aug 8, 2003, 6:04:12 PM (17 years ago)
Author:
luba
Message:
  • processing of Interger args is added
File:
1 edited

Legend:

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

    r1110 r1132  
    1818
    1919RF_FUNC (Bytes_m_To_m_Chars, (RF_ARG e_Int), (RF_RES e_Res))
    20 #if 0
    21   e_Res = Expr(e_Int.get_len(), 0);
    22  
    23   Term *p = e_Int.get_first();
    24   Term *r = e_Res.get_first();
    25  
    26   for (; p < e_Int.get_last(); p++, r++) {
    27     if (p->get_type() == type_int) {
    28       RF_LIB_ERROR("Invalid argument");
    29     }
    30     else
    31     if (p->get_type() == type_short_int) {
    32       intptr_t t = ((ShortInt*)p)->to_int();
    33       if (t < 0 || t > WCHAR_MAX)
    34         RF_LIB_ERROR("Invalid argument");
    35       else
    36       *r = Char::to_chars(t);
    37     }
    38     else                       
    39        RF_LIB_ERROR("Invalid argument");
    40   }
    41 #endif
    4220
    4321  Term* p = e_Int.get_first();
    4422  for (; p < e_Int.get_last(); p++) {
    4523    if (p->get_type() == type_int32) {
    46       intptr_t t = ((Int32*)p)->to_int();
     24      intptr_t t = static_cast<Int32*>(p)->to_int();
    4725      if (t < 0 || t > WCHAR_MAX)
    4826        RF_LIB_ERROR("Invalid argument");
    4927      }
     28    else
     29    if (p->get_type() == type_int) {
     30      Integer* P = static_cast<Integer*>(p);
     31      intptr_t l = P->to_int();
     32      if (P->cmp(0) < 0 || uintptr_t(l) > SIZE_MAX)
     33        RF_LIB_ERROR("Invalid argument");
     34    }
    5035    else
    5136      RF_LIB_ERROR("Invalid argument");
    5237 
    5338  }
    54 
    5539  e_Res = Char::bytes_to_chars(e_Int);
    5640
Note: See TracChangeset for help on using the changeset viewer.