You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by zo...@apache.org on 2002/10/22 16:50:41 UTC

cvs commit: xml-xalan/java/src/org/apache/xml/dtm/ref DTMDefaultBaseIterators.java

zongaro     2002/10/22 07:50:40

  Modified:    java/src/org/apache/xml/dtm/ref Tag: XSLTC_DTM
                        DTMDefaultBaseIterators.java
  Log:
  Override setMark() and gotoMark() in PrecedingIterator and AncestorIterator
  classes so that they operate correctly when called by the getLast() method.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.12.2.6  +32 -0     xml-xalan/java/src/org/apache/xml/dtm/ref/DTMDefaultBaseIterators.java
  
  Index: DTMDefaultBaseIterators.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xml/dtm/ref/DTMDefaultBaseIterators.java,v
  retrieving revision 1.12.2.5
  retrieving revision 1.12.2.6
  diff -u -r1.12.2.5 -r1.12.2.6
  --- DTMDefaultBaseIterators.java	17 Sep 2002 21:10:14 -0000	1.12.2.5
  +++ DTMDefaultBaseIterators.java	22 Oct 2002 14:50:40 -0000	1.12.2.6
  @@ -1157,6 +1157,8 @@
       /** (not sure yet... -sb) */
       protected int _sp, _oldsp;
   
  +    protected int _markedsp, _markedNode, _markedDescendant;
  +
       /* _currentNode precedes candidates.  This is the identity, not the handle! */
   
       /**
  @@ -1288,6 +1290,24 @@
   
         return resetPosition();
       }
  +
  +    public void setMark() {
  +        _markedsp = _sp;
  +        _markedNode = _currentNode;
  +        _markedDescendant = _stack[0];
  +    }
  +
  +    public void gotoMark() {
  +        _sp = _markedsp;
  +        _currentNode = _markedNode;
  +        _stack[0] = _markedDescendant;
  +        int parent = _parent(_currentNode);
  +        for (int index = 1; index < _sp-1; index++) {
  +             _stack[index] = parent;
  +             parent = _parent(parent);
  +        }
  +       _stack[_sp] = _currentNode;
  +    }
     }  // end of PrecedingIterator
   
     /**
  @@ -1454,6 +1474,8 @@
            new org.apache.xml.utils.NodeVector();
            
       int m_ancestorsPos;
  +
  +    int m_markedPos;
       
       /** The real start node for this axes, since _startNode will be adjusted. */
       int m_realStartNode;
  @@ -1576,6 +1598,16 @@
                                   : DTM.NULL;
         
         return returnNode(next);
  +    }
  +
  +    public void setMark() {
  +        m_markedPos = m_ancestorsPos;
  +    }
  +
  +    public void gotoMark() {
  +        m_ancestorsPos = m_markedPos;
  +        _currentNode = m_ancestorsPos>=0 ? m_ancestors.elementAt(m_ancestorsPos)
  +                                         : DTM.NULL;
       }
     }  // end of AncestorIterator
   
  
  
  

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