zongaro 2002/12/21 02:24:51
Modified: java/src/org/apache/xml/dtm/ref Tag: XSLTC_DTM
DTMDefaultBase.java
Log:
Split loop in getTypedFirstChild in two - one to handle matching against an
expanded type ID and a second to handle matching against a DTM node type. The
two cases can be handled more efficiently separately.
Revision Changes Path
No revision
No revision
1.28.2.8 +18 -4
xml-xalan/java/src/org/apache/xml/dtm/ref/DTMDefaultBase.java
Index: DTMDefaultBase.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xml/dtm/ref/DTMDefaultBase.java,v
retrieving revision 1.28.2.7
retrieving revision 1.28.2.8
diff -u -r1.28.2.7 -r1.28.2.8
--- DTMDefaultBase.java 17 Dec 2002 19:06:41 -0000 1.28.2.7
+++ DTMDefaultBase.java 21 Dec 2002 10:24:51 -0000 1.28.2.8
@@ -982,11 +982,25 @@
{
int firstChild, eType;
- for(firstChild = _firstch(makeNodeIdentity(nodeHandle));firstChild !=
DTM.NULL; firstChild = _nextsib(firstChild))
- {
- if ((eType =_exptype(firstChild)) == nodeType ||
m_expandedNameTable.getType(eType) == nodeType)
- //_type(firstChild) == nodeType)
+ if (nodeType < DTM.NTYPES) {
+ for (firstChild = _firstch(makeNodeIdentity(nodeHandle));
+ firstChild != DTM.NULL;
+ firstChild = _nextsib(firstChild)) {
+ eType = _exptype(firstChild);
+ if (eType == nodeType
+ || (eType >= DTM.NTYPES
+ && m_expandedNameTable.getType(eType) == nodeType)) {
return makeNodeHandle(firstChild);
+ }
+ }
+ } else {
+ for (firstChild = _firstch(makeNodeIdentity(nodeHandle));
+ firstChild != DTM.NULL;
+ firstChild = _nextsib(firstChild)) {
+ if (_exptype(firstChild) == nodeType) {
+ return makeNodeHandle(firstChild);
+ }
+ }
}
return DTM.NULL;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]