You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by mo...@apache.org on 2001/09/12 17:16:48 UTC

cvs commit: xml-xalan/java/src/org/apache/xalan/xsltc/dom NodeIteratorBase.java UnionIterator.java

morten      01/09/12 08:16:48

  Modified:    java/src/org/apache/xalan/xsltc/dom NodeIteratorBase.java
                        UnionIterator.java
  Log:
  Fix for the count() function and union iterators. Union iterators would not
  reset all the iterators it contained, and it needed a reset() method.
  PR:		bugzilla 3504
  Obtained from:	n/a
  Submitted by:	morten@xml.apache.org
  Reviewed by:	morten@xml.apache.org
  
  Revision  Changes    Path
  1.2       +2 -1      xml-xalan/java/src/org/apache/xalan/xsltc/dom/NodeIteratorBase.java
  
  Index: NodeIteratorBase.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/dom/NodeIteratorBase.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- NodeIteratorBase.java	2001/04/17 18:52:33	1.1
  +++ NodeIteratorBase.java	2001/09/12 15:16:48	1.2
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: NodeIteratorBase.java,v 1.1 2001/04/17 18:52:33 sboag Exp $
  + * @(#)$Id: NodeIteratorBase.java,v 1.2 2001/09/12 15:16:48 morten Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -99,6 +99,7 @@
   	    gotoMark();
   	    _position = temp;
   	}
  +	System.err.println("getLast() returning "+_last);
   	return _last;
       }
   
  
  
  
  1.6       +14 -5     xml-xalan/java/src/org/apache/xalan/xsltc/dom/UnionIterator.java
  
  Index: UnionIterator.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/dom/UnionIterator.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- UnionIterator.java	2001/08/16 12:06:45	1.5
  +++ UnionIterator.java	2001/09/12 15:16:48	1.6
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: UnionIterator.java,v 1.5 2001/08/16 12:06:45 morten Exp $
  + * @(#)$Id: UnionIterator.java,v 1.6 2001/09/12 15:16:48 morten Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -113,7 +113,7 @@
     
       // last node returned by this UnionIterator to the caller of next
       // used to prune duplicates
  -    private int _last;
  +    private int _returnedLast;
   
       public UnionIterator(DOM dom) {
   	_dom = dom;
  @@ -158,13 +158,13 @@
   		    return END;
   		}
   	    }
  -	    else if (smallest == _last) {	// duplicate
  +	    else if (smallest == _returnedLast) {	// duplicate
   		_heap[0].step(); // value consumed
   	    }
   	    else {
   		_heap[0].step(); // value consumed
   		heapify(0);
  -		return returnNode(_last = smallest);
  +		return returnNode(_returnedLast = smallest);
   	    }
   	    // fallthrough if not returned above
   	    heapify(0);
  @@ -183,7 +183,7 @@
   	    for (int i = (_heapSize = _free)/2; i >= 0; i--) {
   		heapify(i);
   	    }
  -	    _last = END;
  +	    _returnedLast = END;
   	    return resetPosition();
   	}
   	return this;
  @@ -220,4 +220,13 @@
   	    _heap[i].gotoMark();
   	}
       }
  +
  +    public NodeIterator reset() {
  +	super.reset();
  +	for (int i = 0; i < _free; i++) {
  +	    _heap[i].iterator.reset();
  +	}
  +	return(this);
  +    }
  +
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org