18 * limitations under the License.
19 */
20 /*
21 * $Id: MultiDOM.java,v 1.5 2005/09/28 13:48:36 pvedula Exp $
22 */
23
24 package com.sun.org.apache.xalan.internal.xsltc.dom;
25
26 import com.sun.org.apache.xalan.internal.xsltc.DOM;
27 import com.sun.org.apache.xalan.internal.xsltc.StripFilter;
28 import com.sun.org.apache.xml.internal.serializer.SerializationHandler;
29 import com.sun.org.apache.xalan.internal.xsltc.TransletException;
30 import com.sun.org.apache.xalan.internal.xsltc.runtime.BasisLibrary;
31 import com.sun.org.apache.xalan.internal.xsltc.runtime.Hashtable;
32 import com.sun.org.apache.xml.internal.dtm.DTM;
33 import com.sun.org.apache.xml.internal.dtm.Axis;
34 import com.sun.org.apache.xml.internal.dtm.DTMAxisIterator;
35 import com.sun.org.apache.xml.internal.dtm.DTMManager;
36 import com.sun.org.apache.xml.internal.dtm.ref.DTMAxisIteratorBase;
37 import com.sun.org.apache.xml.internal.dtm.ref.DTMDefaultBase;
38 import com.sun.org.apache.xml.internal.utils.SuballocatedIntVector;
39
40 import org.w3c.dom.Node;
41 import org.w3c.dom.NodeList;
42
43 /**
44 * @author Jacek Ambroziak
45 * @author Morten Jorgensen
46 * @author Erwin Bolwidt <ejb@klomp.org>
47 */
48 public final class MultiDOM implements DOM {
49
50 private static final int NO_TYPE = DOM.FIRST_TYPE - 2;
51 private static final int INITIAL_SIZE = 4;
52
53 private DOM[] _adapters;
54 private DOMAdapter _main;
55 private DTMManager _dtmManager;
56 private int _free;
57 private int _size;
552 return null;
553 }
554 return _adapters[getDTMId(index)].makeNode(index);
555 }
556
557 public Node makeNode(DTMAxisIterator iter) {
558 // TODO: gather nodes from all DOMs ?
559 return _main.makeNode(iter);
560 }
561
562 public NodeList makeNodeList(int index) {
563 if (index == DTM.NULL) {
564 return null;
565 }
566 return _adapters[getDTMId(index)].makeNodeList(index);
567 }
568
569 public NodeList makeNodeList(DTMAxisIterator iter) {
570 int index = iter.next();
571 if (index == DTM.NULL) {
572 return null;
573 }
574 iter.reset();
575 return _adapters[getDTMId(index)].makeNodeList(iter);
576 }
577
578 public String getLanguage(int node) {
579 return _adapters[getDTMId(node)].getLanguage(node);
580 }
581
582 public int getSize() {
583 int size = 0;
584 for (int i=0; i<_size; i++) {
585 size += _adapters[i].getSize();
586 }
587 return(size);
588 }
589
590 public String getDocumentURI(int node) {
591 if (node == DTM.NULL) {
592 node = DOM.NULL;
|
18 * limitations under the License.
19 */
20 /*
21 * $Id: MultiDOM.java,v 1.5 2005/09/28 13:48:36 pvedula Exp $
22 */
23
24 package com.sun.org.apache.xalan.internal.xsltc.dom;
25
26 import com.sun.org.apache.xalan.internal.xsltc.DOM;
27 import com.sun.org.apache.xalan.internal.xsltc.StripFilter;
28 import com.sun.org.apache.xml.internal.serializer.SerializationHandler;
29 import com.sun.org.apache.xalan.internal.xsltc.TransletException;
30 import com.sun.org.apache.xalan.internal.xsltc.runtime.BasisLibrary;
31 import com.sun.org.apache.xalan.internal.xsltc.runtime.Hashtable;
32 import com.sun.org.apache.xml.internal.dtm.DTM;
33 import com.sun.org.apache.xml.internal.dtm.Axis;
34 import com.sun.org.apache.xml.internal.dtm.DTMAxisIterator;
35 import com.sun.org.apache.xml.internal.dtm.DTMManager;
36 import com.sun.org.apache.xml.internal.dtm.ref.DTMAxisIteratorBase;
37 import com.sun.org.apache.xml.internal.dtm.ref.DTMDefaultBase;
38 import com.sun.org.apache.xml.internal.dtm.ref.DTMAxisIterNodeList;
39 import com.sun.org.apache.xml.internal.utils.SuballocatedIntVector;
40
41 import org.w3c.dom.Node;
42 import org.w3c.dom.NodeList;
43
44 /**
45 * @author Jacek Ambroziak
46 * @author Morten Jorgensen
47 * @author Erwin Bolwidt <ejb@klomp.org>
48 */
49 public final class MultiDOM implements DOM {
50
51 private static final int NO_TYPE = DOM.FIRST_TYPE - 2;
52 private static final int INITIAL_SIZE = 4;
53
54 private DOM[] _adapters;
55 private DOMAdapter _main;
56 private DTMManager _dtmManager;
57 private int _free;
58 private int _size;
553 return null;
554 }
555 return _adapters[getDTMId(index)].makeNode(index);
556 }
557
558 public Node makeNode(DTMAxisIterator iter) {
559 // TODO: gather nodes from all DOMs ?
560 return _main.makeNode(iter);
561 }
562
563 public NodeList makeNodeList(int index) {
564 if (index == DTM.NULL) {
565 return null;
566 }
567 return _adapters[getDTMId(index)].makeNodeList(index);
568 }
569
570 public NodeList makeNodeList(DTMAxisIterator iter) {
571 int index = iter.next();
572 if (index == DTM.NULL) {
573 return new DTMAxisIterNodeList(null, null);
574 }
575 iter.reset();
576 return _adapters[getDTMId(index)].makeNodeList(iter);
577 }
578
579 public String getLanguage(int node) {
580 return _adapters[getDTMId(node)].getLanguage(node);
581 }
582
583 public int getSize() {
584 int size = 0;
585 for (int i=0; i<_size; i++) {
586 size += _adapters[i].getSize();
587 }
588 return(size);
589 }
590
591 public String getDocumentURI(int node) {
592 if (node == DTM.NULL) {
593 node = DOM.NULL;
|