dbertoni 2004/11/01 21:34:44
Modified: c/src/xalanc/XPath XPath.cpp XPath.hpp
Log:
Don't bother executing the initial op code of an XPath expression.
Revision Changes Path
1.17 +6 -30 xml-xalan/c/src/xalanc/XPath/XPath.cpp
Index: XPath.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/xalanc/XPath/XPath.cpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- XPath.cpp 12 Apr 2004 00:37:06 -0000 1.16
+++ XPath.cpp 2 Nov 2004 05:34:44 -0000 1.17
@@ -124,7 +124,7 @@
return executeMore(
context,
- m_expression.getInitialOpCodePosition(),
+ getInitialOpCodePosition(),
executionContext);
}
@@ -151,7 +151,7 @@
executeMore(
context,
- m_expression.getInitialOpCodePosition(),
+ getInitialOpCodePosition(),
executionContext,
result);
}
@@ -179,7 +179,7 @@
executeMore(
context,
- m_expression.getInitialOpCodePosition(),
+ getInitialOpCodePosition(),
executionContext,
result);
}
@@ -207,7 +207,7 @@
executeMore(
context,
- m_expression.getInitialOpCodePosition(),
+ getInitialOpCodePosition(),
executionContext,
result);
}
@@ -236,7 +236,7 @@
executeMore(
context,
- m_expression.getInitialOpCodePosition(),
+ getInitialOpCodePosition(),
executionContext,
formatterListener,
function);
@@ -266,7 +266,7 @@
return executeMore(
context,
- m_expression.getInitialOpCodePosition(),
+ getInitialOpCodePosition(),
executionContext,
result);
}
@@ -281,10 +281,6 @@
{
switch(m_expression.getOpCodeMapValue(opPos))
{
- case XPathExpression::eOP_XPATH:
- return executeMore(context, opPos + 2, executionContext);
- break;
-
case XPathExpression::eOP_OR:
return
executionContext.getXObjectFactory().createBoolean(Or(context, opPos,
executionContext));
break;
@@ -476,10 +472,6 @@
{
switch(m_expression.getOpCodeMapValue(opPos))
{
- case XPathExpression::eOP_XPATH:
- executeMore(context, opPos + 2, executionContext, result);
- break;
-
case XPathExpression::eOP_OR:
result = Or(context, opPos, executionContext);
break;
@@ -661,10 +653,6 @@
{
switch(m_expression.getOpCodeMapValue(opPos))
{
- case XPathExpression::eOP_XPATH:
- executeMore(context, opPos + 2, executionContext, result);
- break;
-
case XPathExpression::eOP_OR:
result = XObject::number(Or(context, opPos, executionContext));
break;
@@ -846,10 +834,6 @@
{
switch(m_expression.getOpCodeMapValue(opPos))
{
- case XPathExpression::eOP_XPATH:
- executeMore(context, opPos + 2, executionContext, result);
- break;
-
case XPathExpression::eOP_OR:
XObject::string(Or(context, opPos, executionContext), result);
break;
@@ -1043,10 +1027,6 @@
{
switch(m_expression.getOpCodeMapValue(opPos))
{
- case XPathExpression::eOP_XPATH:
- executeMore(context, opPos + 2, executionContext,
formatterListener, function);
- break;
-
case XPathExpression::eOP_OR:
XObject::string(
Or(context, opPos, executionContext),
@@ -1254,10 +1234,6 @@
switch(m_expression.getOpCodeMapValue(opPos))
{
- case XPathExpression::eOP_XPATH:
- theXObject = executeMore(context, opPos + 2, executionContext,
result);
- break;
-
case XPathExpression::eOP_OR:
case XPathExpression::eOP_AND:
case XPathExpression::eOP_NOTEQUALS:
1.12 +24 -12 xml-xalan/c/src/xalanc/XPath/XPath.hpp
Index: XPath.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/xalanc/XPath/XPath.hpp,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- XPath.hpp 31 Jul 2004 06:05:06 -0000 1.11
+++ XPath.hpp 2 Nov 2004 05:34:44 -0000 1.12
@@ -454,7 +454,7 @@
return executeMore(
executionContext.getCurrentNode(),
- m_expression.getInitialOpCodePosition(),
+ getInitialOpCodePosition(),
executionContext);
}
@@ -477,7 +477,7 @@
executeMore(
executionContext.getCurrentNode(),
- m_expression.getInitialOpCodePosition(),
+ getInitialOpCodePosition(),
executionContext,
result);
}
@@ -501,7 +501,7 @@
executeMore(
executionContext.getCurrentNode(),
- m_expression.getInitialOpCodePosition(),
+ getInitialOpCodePosition(),
executionContext,
result);
}
@@ -526,7 +526,7 @@
executeMore(
executionContext.getCurrentNode(),
- m_expression.getInitialOpCodePosition(),
+ getInitialOpCodePosition(),
executionContext,
result);
}
@@ -552,7 +552,7 @@
executeMore(
executionContext.getCurrentNode(),
- m_expression.getInitialOpCodePosition(),
+ getInitialOpCodePosition(),
executionContext,
formatterListener,
function);
@@ -588,7 +588,7 @@
return executeMore(
executionContext.getCurrentNode(),
- m_expression.getInitialOpCodePosition(),
+ getInitialOpCodePosition(),
executionContext,
result);
}
@@ -617,7 +617,7 @@
return executeMore(
executionContext.getCurrentNode(),
- m_expression.getInitialOpCodePosition(),
+ getInitialOpCodePosition(),
executionContext);
}
@@ -646,7 +646,7 @@
executeMore(
executionContext.getCurrentNode(),
- m_expression.getInitialOpCodePosition(),
+ getInitialOpCodePosition(),
executionContext,
result);
}
@@ -676,7 +676,7 @@
executeMore(
executionContext.getCurrentNode(),
- m_expression.getInitialOpCodePosition(),
+ getInitialOpCodePosition(),
executionContext,
result);
}
@@ -707,7 +707,7 @@
executeMore(
executionContext.getCurrentNode(),
- m_expression.getInitialOpCodePosition(),
+ getInitialOpCodePosition(),
executionContext,
result);
}
@@ -736,7 +736,7 @@
executeMore(
executionContext.getCurrentNode(),
- m_expression.getInitialOpCodePosition(),
+ getInitialOpCodePosition(),
executionContext,
formatterListener,
function);
@@ -778,7 +778,7 @@
return executeMore(
executionContext.getCurrentNode(),
- m_expression.getInitialOpCodePosition(),
+ getInitialOpCodePosition(),
executionContext,
result);
}
@@ -2382,6 +2382,18 @@
{
eDefaultTargetDataSize = 5
};
+
+ OpCodeMapPositionType
+ getInitialOpCodePosition() const
+ {
+#if defined(XALAN_XPATH_EXPRESSION_USE_ITERATORS)
+ assert(m_expression.getOpCodeMapValue(0) ==
XPathExpression::eOP_XPATH);
+#else
+ assert(m_expression.getOpCodeMapValue(
+ m_expression.getInitialOpCodePosition()) ==
XPathExpression::eOP_XPATH);
+#endif
+ return m_expression.getInitialOpCodePosition() + 2;
+ }
eMatchScore
locationPathPattern(
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]