Changeset 1121


Ignore:
Timestamp:
Aug 7, 2003, 10:49:05 PM (17 years ago)
Author:
sveta
Message:
  • Method "=" for Vector is added and functions are changed.
Location:
to-imperative/trunk/library/Vector
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • to-imperative/trunk/library/Vector/subvector_fill.cc

    r1114 r1121  
    3131    if (ind + len > v->get_length())
    3232      RF_LIB_ERROR("Index out of range");
    33     v->subvector_fill(ind, len, _fill);
     33    for (size_t i = 0; i < len; i++)
     34      (*v)[ind + i] = _fill();
    3435  } else
    3536      RF_LIB_ERROR("Invalid argument");
  • to-imperative/trunk/library/Vector/vector.cc

    r1098 r1121  
    2121  for ( ; p < q; p++) {
    2222    if (p->is_ref()) {
     23      if (SIZE_MAX - length < 1)
     24        RF_LIB_ERROR("Size limit exceeded");
    2325      length++;
    2426    } else {
     
    2628      if (!v)
    2729        RF_LIB_ERROR ("Invalid argument");
    28       length += v->get_length();
     30      size_t v_length = v->get_length();
     31      if (SIZE_MAX - length < v_length)     
     32        RF_LIB_ERROR("Size limit exceeded");
     33      length += v_length;
    2934    }
    3035  }
  • to-imperative/trunk/library/Vector/vector_fill.cc

    r1040 r1121  
    2020      RF_LIB_ERROR("Invalid argument");
    2121    else
    22       v-> vector_fill(_fill);
     22      for (size_t i = 0; i < v->get_length(); i++)
     23        (*v)[i] = _fill();
    2324  } else
    2425      RF_LIB_ERROR("Invalid argument");
  • to-imperative/trunk/library/Vector/vector_init.cc

    r1114 r1121  
    1717  if (_vector.get_len() == 1) {
    1818    Term* p_vector = _vector.get_first();
     19    printf("init1 ");
    1920    rftype::Vector* v = p_vector->cast_to<rftype::Vector>(type_vector);
     21    printf("init2 ");
    2022    if (!v)
    2123      RF_LIB_ERROR("Invalid argument");
    2224    Term* p_length = _length.get_first();
     25    printf("init3 ");
    2326    rftype::Int32* len = p_length->cast_to<rftype::Int32>(type_int32);
    2427    if (!len)
    2528      RF_LIB_ERROR("Invalid argument");
    26     else {
    27       size_t l = len->to_int(); 
    28       v-> vector_init(l, _fill);
    29     }
     29    printf("init4 ");
     30    size_t l = len->to_int(); 
     31    rftype::Vector temp(l,_fill());
     32    (*v) = temp;
    3033  } else
    3134      RF_LIB_ERROR("Invalid argument");
  • to-imperative/trunk/library/Vector/vector_replace.cc

    r1098 r1121  
    2121      RF_LIB_ERROR("Invalid argument");
    2222    size_t length = 0;
    23     Expr expr_vector;
    2423    Term* p = _source.get_first();
    2524    Term* q = _source.get_last();
    2625    for ( ; p < q; p++) {
    2726      if (p->is_ref()) {
     27        if (SIZE_MAX - length < 1)
     28          RF_LIB_ERROR("Size limit exceeded");
    2829        length++;
    29         expr_vector = expr_vector + (Expr(p))();
    3030      } else {
    3131        rftype::Vector* v = p->cast_to<rftype::Vector> (type_vector);
     
    3333          RF_LIB_ERROR ("Invalid argument");
    3434        size_t v_length = v->get_length();
     35        if (SIZE_MAX - length < v_length)
     36          RF_LIB_ERROR("Size limit exceeded");
    3537        length += v_length;
    36         for (size_t i=0; i < v_length; i++)
    37           expr_vector = expr_vector + (*v)[i];
    3838      }
    3939    }
    40     p_vector->vector_replace(length, expr_vector);
     40    rftype::Vector temp(_source, length);
     41    (*p_vector) = temp;
    4142  } else
    4243    RF_LIB_ERROR("Invalid argument");
  • to-imperative/trunk/library/Vector/vector_to_exp.cc

    r1040 r1121  
    1919    if (!v)
    2020      RF_LIB_ERROR("Invalid argument");
    21     else {
    22       Expr result;
    23       v-> vector_to_exp(result);
    24     _exp = result;
    25     }
     21    Expr result;
     22    for (size_t i = 0; i < v->get_length(); i++)
     23      result = result + (*v)[i];
     24    _exp = result;     
    2625  } else
    2726      RF_LIB_ERROR("Invalid argument");
Note: See TracChangeset for help on using the changeset viewer.