Changeset 1833


Ignore:
Timestamp:
Jan 23, 2006, 2:34:20 AM (15 years ago)
Author:
orlov
Message:
  • concat() for array of expressions.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • to-imperative/trunk/java/org/refal/plus/Expr.java

    r1827 r1833  
    88 * TODO:
    99 *   - Insert assertions in all unsafe methods.
    10  *   - Add method for concatenating array of expressions.
    1110 *   - Add holes around exprs.
    1211 *   - Add clone() implementation.
     
    113112        if (length - e.length != 0)
    114113            return false;
    115         if (expr.hashCode() == e.expr.hashCode() && index == e.index)
     114        if (expr == e.expr && index == e.index)
    116115            return true;
    117116        for (int i = index, j = e.index; i < length + index; i++, j++) {
     
    141140     */
    142141    public boolean eq(Expr e, int i) {
    143         if (expr.hashCode() == e.expr.hashCode() && index == e.index + i)
     142        if (expr == e.expr && index == e.index + i)
    144143            return true;
    145144        for (int k = index, j = e.index + i; k < length + index; k++, j++) {
     
    237236    }
    238237
     238    public static Expr concat(Expr[] arr) {
     239        int length = 0;
     240        for (int i = 0; i < arr.length; i++)
     241            length += arr[i].length;
     242        if (length == 0)
     243            return empty;
     244        Expr e = new Expr(length);
     245        for (int i = 0, index = e.index; i < arr.length; index += arr[i].length, i++)
     246            System.arraycopy(arr[i].expr, arr[i].index, e.expr, index, arr[i].length);
     247        return e;
     248    }
     249
    239250    /**
    240251     * Creates expression from the Object
Note: See TracChangeset for help on using the changeset viewer.