tmiller 2002/08/30 09:17:19
Modified: java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java
java/src/org/apache/xalan/xsltc/compiler EqualityExpr.java
RelationalExpr.java
Log:
bug 12148 fixed, xpath pred and relational expr
Revision Changes Path
1.49 +20 -48
xml-xalan/java/src/org/apache/xalan/xsltc/runtime/BasisLibrary.java
Index: BasisLibrary.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/runtime/BasisLibrary.java,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -r1.48 -r1.49
--- BasisLibrary.java 23 Aug 2002 20:06:59 -0000 1.48
+++ BasisLibrary.java 30 Aug 2002 16:17:19 -0000 1.49
@@ -518,7 +518,8 @@
* Utility function: node-set/node-set compare.
*/
public static boolean compare(NodeIterator left, NodeIterator right,
- int op, int node, DOM dom) {
+ int op, DOM dom)
+ {
int lnode;
left.reset();
@@ -536,24 +537,10 @@
return false;
}
- /**
- * Utility function: node/node-set compare.
- */
- public static boolean compare(int node, NodeIterator nodeSet,
- int op, DOM dom) {
- final String lvalue = dom.getNodeValue(node);
- int rnode;
- //nodeSet.reset();
- while ((rnode = nodeSet.next()) != NodeIterator.END) {
- if (compareStrings(lvalue, dom.getNodeValue(rnode), op, dom)) {
- return true;
- }
- }
- return false;
- }
public static boolean compare(int node, NodeIterator iterator,
- int op, int dummy, DOM dom) {
+ int op, DOM dom)
+ {
//iterator.reset();
int rnode;
@@ -561,46 +548,40 @@
switch(op) {
case EQ:
- /* TODO:
- * This needs figuring out: What sort of comparison is done here?
- * Are we comparing exact node id's, node types, or node values?
- * Values is the obvious for attributes, but what about elements?
- */
value = dom.getNodeValue(node);
- while ((rnode = iterator.next()) != NodeIterator.END)
+ while ((rnode = iterator.next()) != NodeIterator.END) {
if (value.equals(dom.getNodeValue(rnode))) return true;
- // if (rnode == node) return true; It just ain't that easy!!!
+ }
break;
case NE:
value = dom.getNodeValue(node);
- while ((rnode = iterator.next()) != NodeIterator.END)
+ while ((rnode = iterator.next()) != NodeIterator.END) {
if (!value.equals(dom.getNodeValue(rnode))) return true;
- // if (rnode != node) return true;
+ }
break;
case LT:
// Assume we're comparing document order here
- while ((rnode = iterator.next()) != NodeIterator.END)
+ while ((rnode = iterator.next()) != NodeIterator.END) {
if (rnode > node) return true;
+ }
break;
case GT:
// Assume we're comparing document order here
- while ((rnode = iterator.next()) != NodeIterator.END)
+ while ((rnode = iterator.next()) != NodeIterator.END) {
if (rnode < node) return true;
+ }
break;
}
return(false);
}
- public static boolean compare(NodeIterator left, final double rnumber,
- final int op, final int node, DOM dom) {
- return(compare(left,rnumber,op,dom));
- }
/**
* Utility function: node-set/number compare.
*/
public static boolean compare(NodeIterator left, final double rnumber,
- final int op, DOM dom) {
+ final int op, DOM dom)
+ {
int node;
//left.reset();
@@ -658,7 +639,8 @@
* Utility function: node-set/string comparison.
*/
public static boolean compare(NodeIterator left, final String rstring,
- int op, DOM dom) {
+ int op, DOM dom)
+ {
int node;
//left.reset();
while ((node = left.next()) != NodeIterator.END) {
@@ -669,19 +651,10 @@
return false;
}
- public static boolean compare(NodeIterator left, final String rstring,
- int op, int node, DOM dom) {
-
- if (compareStrings(dom.getNodeValue(node), rstring, op, dom)) {
- return true;
- }
- else {
- return false;
- }
- }
public static boolean compare(Object left, Object right,
- int op, int node, DOM dom) {
+ int op, DOM dom)
+ {
boolean result = false;
boolean hasSimpleArgs = hasSimpleType(left) && hasSimpleType(right);
@@ -779,10 +752,9 @@
NodeIterator iter = ((NodeIterator)left).reset();
if (right instanceof NodeIterator) {
- result = compare(iter, (NodeIterator)right, op, node, dom);
+ result = compare(iter, (NodeIterator)right, op, dom);
}
else if (right instanceof String) {
- //result = compare(iter, (String)right, op, node, dom);
result = compare(iter, (String)right, op, dom);
}
else if (right instanceof Number) {
1.10 +1 -3
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/EqualityExpr.java
Index: EqualityExpr.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/EqualityExpr.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- EqualityExpr.java 10 May 2002 15:40:02 -0000 1.9
+++ EqualityExpr.java 30 Aug 2002 16:17:19 -0000 1.10
@@ -360,7 +360,6 @@
// Call the appropriate compare() from the BasisLibrary
il.append(new PUSH(cpg, _op));
- il.append(methodGen.loadContextNode());
il.append(methodGen.loadDOM());
final int compare = cpg.addMethodref(BASIS_LIBRARY_CLASS,
@@ -369,7 +368,6 @@
+ tleft.toSignature()
+ tright.toSignature()
+ "I"
- + NODE_SIG
+ DOM_INTF_SIG
+ ")Z");
il.append(new INVOKESTATIC(compare));
1.14 +1 -3
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/RelationalExpr.java
Index: RelationalExpr.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/RelationalExpr.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- RelationalExpr.java 23 Aug 2002 19:20:53 -0000 1.13
+++ RelationalExpr.java 30 Aug 2002 16:17:19 -0000 1.14
@@ -225,7 +225,6 @@
_right.startResetIterator(classGen, methodGen);
il.append(new PUSH(cpg, _op));
- il.append(methodGen.loadContextNode());
il.append(methodGen.loadDOM());
int index = cpg.addMethodref(BASIS_LIBRARY_CLASS, "compare",
@@ -233,7 +232,6 @@
+ _left.getType().toSignature()
+ _right.getType().toSignature()
+ "I"
- + NODE_SIG
+ DOM_INTF_SIG
+ ")Z");
il.append(new INVOKESTATIC(index));
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]