1 /*
   2  * reserved comment block
   3  * DO NOT REMOVE OR ALTER!
   4  */
   5 /*
   6  * Copyright 2001-2004 The Apache Software Foundation.
   7  *
   8  * Licensed under the Apache License, Version 2.0 (the "License");
   9  * you may not use this file except in compliance with the License.
  10  * You may obtain a copy of the License at
  11  *
  12  *     http://www.apache.org/licenses/LICENSE-2.0
  13  *
  14  * Unless required by applicable law or agreed to in writing, software
  15  * distributed under the License is distributed on an "AS IS" BASIS,
  16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  17  * See the License for the specific language governing permissions and
  18  * limitations under the License.
  19  */
  20 /*
  21  * $Id: ClonedNodeListIterator.java,v 1.2.4.1 2005/09/06 06:02:12 pvedula Exp $
  22  */
  23 
  24 package com.sun.org.apache.xalan.internal.xsltc.dom;
  25 
  26 import com.sun.org.apache.xml.internal.dtm.DTMAxisIterator;
  27 import com.sun.org.apache.xml.internal.dtm.ref.DTMAxisIteratorBase;
  28 
  29 /**
  30  * A ClonedNodeListIterator is returned by the cloneIterator() method
  31  * of a CachedNodeListIterator. Its next() method retrieves the nodes from
  32  * the cache of the CachedNodeListIterator.
  33  */
  34 public final class ClonedNodeListIterator extends DTMAxisIteratorBase {
  35 
  36     /**
  37      * Source for this iterator.
  38      */
  39     private CachedNodeListIterator _source;
  40     private int _index = 0;
  41 
  42     public ClonedNodeListIterator(CachedNodeListIterator source) {
  43         _source = source;
  44     }
  45 
  46     public void setRestartable(boolean isRestartable) {
  47         //_isRestartable = isRestartable;
  48         //_source.setRestartable(isRestartable);
  49     }
  50 
  51     public DTMAxisIterator setStartNode(int node) {
  52         return this;
  53     }
  54 
  55     public int next() {
  56         return _source.getNode(_index++);
  57     }
  58 
  59     public int getPosition() {
  60         return _index == 0 ? 1 : _index;
  61     }
  62 
  63     public int getNodeByPosition(int pos) {
  64         return _source.getNode(pos);
  65     }
  66 
  67     public DTMAxisIterator cloneIterator() {
  68         return _source.cloneIterator();
  69     }
  70 
  71     public DTMAxisIterator reset() {
  72         _index = 0;
  73         return this;
  74     }
  75 
  76     public void setMark() {
  77         _source.setMark();
  78     }
  79 
  80     public void gotoMark() {
  81         _source.gotoMark();
  82     }
  83 }