Ejemplo n.º 1
0
  public void addOp(T o) {
    TraceElement<T> op = new TraceElement<T>(o);

    if (lastElement == null) {
      lastElement = op;
    } else {
      assert lastElement.stateId == 0;

      op.prevElement = lastElement;
      lastElement = op;
    }
  }
Ejemplo n.º 2
0
  @Override
  public Trace clone() {
    TraceElement<T> e0 = null, eLast = null;

    for (TraceElement<T> e = lastElement; e != null; e = e.prevElement) {
      TraceElement<T> ec = e.clone();

      if (eLast != null) {
        eLast.prevElement = ec;
        eLast = ec;
      } else {
        e0 = eLast = ec;
      }
    }

    Trace<T> t = new Trace<T>();
    t.lastElement = e0;

    return t;
  }