You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by mo...@apache.org on 2001/08/01 13:52:59 UTC

cvs commit: xml-xalan/java/src/org/apache/xalan/xsltc/runtime DefaultSAXOutputHandler.java

morten      01/08/01 04:52:59

  Modified:    java/src/org/apache/xalan/xsltc/compiler Constants.java
                        If.java Key.java Predicate.java Step.java When.java
               java/src/org/apache/xalan/xsltc/compiler/util
                        CompareGenerator.java
               java/src/org/apache/xalan/xsltc/dom NodeCounter.java
               java/src/org/apache/xalan/xsltc/runtime
                        DefaultSAXOutputHandler.java
  Log:
  A few changes to make our output look more like Saxon's (to simplyfy
  test diffs).
  PR:		n/a
  Obtained from:	n/a
  Submitted by:	morten@xml.apache.org
  Reviewed by:	morten@xml.apache.org
  
  Revision  Changes    Path
  1.9       +6 -1      xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Constants.java
  
  Index: Constants.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Constants.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- Constants.java	2001/07/09 10:17:40	1.8
  +++ Constants.java	2001/08/01 11:52:58	1.9
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: Constants.java,v 1.8 2001/07/09 10:17:40 morten Exp $
  + * @(#)$Id: Constants.java,v 1.9 2001/08/01 11:52:58 morten Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -448,6 +448,11 @@
   	= "getVariable";
       public static final String GET_VARIABLE_SIG
   	= "(I)" + OBJECT_SIG;
  +
  +    public static final String GET_NODE_VALUE_ITERATOR
  +	= "getNodeValueIterator";
  +    public static final String GET_NODE_VALUE_ITERATOR_SIG
  +	= "("+NODE_ITERATOR_SIG+STRING_SIG+"Z)"+NODE_ITERATOR_SIG;
   
       public static final int POSITION_INDEX = 2;
       public static final int LAST_INDEX     = 3;
  
  
  
  1.7       +1 -2      xml-xalan/java/src/org/apache/xalan/xsltc/compiler/If.java
  
  Index: If.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/If.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- If.java	2001/07/10 17:45:15	1.6
  +++ If.java	2001/08/01 11:52:58	1.7
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: If.java,v 1.6 2001/07/10 17:45:15 morten Exp $
  + * @(#)$Id: If.java,v 1.7 2001/08/01 11:52:58 morten Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -139,7 +139,6 @@
        * The contents will be ignored if we know the test will always fail.
        */
       public void translate(ClassGenerator classGen, MethodGenerator methodGen) {
  -
   	final InstructionList il = methodGen.getInstructionList();
   	_test.translateDesynthesized(classGen, methodGen);
   	// remember end of condition
  
  
  
  1.6       +1 -2      xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Key.java
  
  Index: Key.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Key.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- Key.java	2001/06/17 12:23:29	1.5
  +++ Key.java	2001/08/01 11:52:58	1.6
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: Key.java,v 1.5 2001/06/17 12:23:29 curcuru Exp $
  + * @(#)$Id: Key.java,v 1.6 2001/08/01 11:52:58 morten Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -222,7 +222,6 @@
   					 "getAxisIterator",
   					 "(I)"+NODE_ITERATOR_SIG);
   
  -	// Save current node and current iterator on the stack
   	il.append(methodGen.loadCurrentNode());
   	il.append(methodGen.loadIterator());
   
  
  
  
  1.9       +7 -6      xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Predicate.java
  
  Index: Predicate.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Predicate.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- Predicate.java	2001/07/31 10:04:51	1.8
  +++ Predicate.java	2001/08/01 11:52:58	1.9
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: Predicate.java,v 1.8 2001/07/31 10:04:51 morten Exp $
  + * @(#)$Id: Predicate.java,v 1.9 2001/08/01 11:52:58 morten Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -306,7 +306,7 @@
       }
   
       private Expression _value = null;
  -    private Expression _step = null;
  +    private Step _step = null;
   
       /**
        * Utility method for optimisation. See isNodeValueTest()
  @@ -352,7 +352,7 @@
       /**
        * Utility method for optimisation. See isNodeValueTest()
        */
  -    public Expression getStep() {
  +    public Step getStep() {
   	if (_step != null) return _step;
   	if (_exp == null) return null;
   
  @@ -362,11 +362,12 @@
   	    Expression right = exp.getRight();
   
   	    if (left instanceof CastExpr) left = ((CastExpr)left).getExpr();
  -	    if (left instanceof Step) _step = left;
  +	    if (left instanceof Step) _step = (Step)left;
   	    
   	    if (right instanceof CastExpr) right = ((CastExpr)right).getExpr();
  -	    if (right instanceof Step) _step = right;
  +	    if (right instanceof Step) _step = (Step)right;
   	}
  +	//if ((_step != null) && (_step.isAbbreviatedDot())) _step = null;
   	return _step;
       }
   
  @@ -383,7 +384,7 @@
   	if (_nthPositionFilter || _nthDescendant) {
   	    _exp.translate(classGen, methodGen);
   	}
  -	else if (isNodeValueTest()) {
  +	else if (isNodeValueTest() && (getParent() instanceof Step)) {
   	    _value.translate(classGen, methodGen);
   	    il.append(new PUSH(cpg, ((EqualityExpr)_exp).getOp()));
   	}
  
  
  
  1.7       +26 -15    xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Step.java
  
  Index: Step.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Step.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- Step.java	2001/07/31 10:04:51	1.6
  +++ Step.java	2001/08/01 11:52:58	1.7
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: Step.java,v 1.6 2001/07/31 10:04:51 morten Exp $
  + * @(#)$Id: Step.java,v 1.7 2001/08/01 11:52:58 morten Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -356,25 +356,36 @@
   	    final Predicate predicate = (Predicate)_predicates.lastElement();
   	    _predicates.remove(predicate);
   
  -	    // Handle '//blob[@attr = $var]' expression
  +	    // Special case for predicates that can use the NodeValueIterator
  +	    // instead of an auxiliary class. Certain path/predicates pairs
  +	    // are translated into a base path, on top of which we place a
  +	    // node value iterator that tests for the desired value:
  +	    //   foo[@attr = 'str']  ->  foo/@attr + test(value='str')
  +	    //   foo[bar = 'str']    ->  foo/bar + test(value='str')
  +	    //   foo/bar[. = 'str']  ->  foo/bar + test(value='str')
   	    if (predicate.isNodeValueTest()) {
  -		Step step = (Step)(predicate.getStep());
  -		ParentLocationPath path = new ParentLocationPath(this, step);
  +		Step step = predicate.getStep();
   
  -		try {
  -		    path.typeCheck(getParser().getSymbolTable());
  -		}
  -		catch (TypeCheckError e) { }
  -
   		il.append(methodGen.loadDOM());
  -		path.translate(classGen, methodGen);
  +		// If the predicate's Step is simply '.' we translate this Step
  +		// and place the node test on top of the resulting iterator
  +		if (step.isAbbreviatedDot()) {
  +		    translate(classGen, methodGen);
  +		}
  +		// Otherwise we create a parent location path with this Step and
  +		// the predicates Step, and place the node test on top of that
  +		else {
  +		    ParentLocationPath path = new ParentLocationPath(this,step);
  +		    try {
  +			path.typeCheck(getParser().getSymbolTable());
  +		    }
  +		    catch (TypeCheckError e) { }
  +		    path.translate(classGen, methodGen);
  +		}
   		predicate.translate(classGen, methodGen);
  -
  -		final String signature =
  -		    "("+NODE_ITERATOR_SIG+STRING_SIG+"Z)"+NODE_ITERATOR_SIG;
   		final int iter = cpg.addMethodref(DOM_CLASS,
  -						  "getNodeValueIterator",
  -						  signature);
  +						  GET_NODE_VALUE_ITERATOR,
  +						  GET_NODE_VALUE_ITERATOR_SIG);
   		il.append(new INVOKEVIRTUAL(iter));
   	    }
   	    // Handle '//*[n]' expression
  
  
  
  1.7       +2 -1      xml-xalan/java/src/org/apache/xalan/xsltc/compiler/When.java
  
  Index: When.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/When.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- When.java	2001/06/29 12:04:35	1.6
  +++ When.java	2001/08/01 11:52:58	1.7
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: When.java,v 1.6 2001/06/29 12:04:35 morten Exp $
  + * @(#)$Id: When.java,v 1.7 2001/08/01 11:52:58 morten Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -126,6 +126,7 @@
   	if (!_ignore) {
   	    typeCheckContents(stable);
   	}
  +
   	return Type.Void;
       }
   
  
  
  
  1.2       +2 -1      xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/CompareGenerator.java
  
  Index: CompareGenerator.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/CompareGenerator.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- CompareGenerator.java	2001/04/17 18:52:14	1.1
  +++ CompareGenerator.java	2001/08/01 11:52:59	1.2
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: CompareGenerator.java,v 1.1 2001/04/17 18:52:14 sboag Exp $
  + * @(#)$Id: CompareGenerator.java,v 1.2 2001/08/01 11:52:59 morten Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -68,6 +68,7 @@
   import org.apache.xalan.xsltc.compiler.Template;
   
   public final class CompareGenerator extends MethodGenerator {
  +
       private static int DOM_INDEX      = 1;
       private static int CURRENT_INDEX  = 2;
       private static int LEVEL_INDEX    = 3;
  
  
  
  1.3       +5 -12     xml-xalan/java/src/org/apache/xalan/xsltc/dom/NodeCounter.java
  
  Index: NodeCounter.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/dom/NodeCounter.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- NodeCounter.java	2001/07/31 18:55:58	1.2
  +++ NodeCounter.java	2001/08/01 11:52:59	1.3
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: NodeCounter.java,v 1.2 2001/07/31 18:55:58 morten Exp $
  + * @(#)$Id: NodeCounter.java,v 1.3 2001/08/01 11:52:59 morten Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -209,9 +209,7 @@
   	for (int j = 0, i = 0; i < length;) {
               char c = _format.charAt(i);
               for (j = i; Character.isLetterOrDigit(c);) {
  -                if (++i == length) {
  -		    break;
  -		}
  +                if (++i == length) break;
   		c = _format.charAt(i);
               }
               if (i > j) {
  @@ -222,15 +220,11 @@
                   formatToks.addElement(_format.substring(j, i));
               }
   
  -            if (i == length) {
  -		break;
  -	    }
  +            if (i == length) break;
   
               c = _format.charAt(i);
               for (j = i; !Character.isLetterOrDigit(c);) {
  -                if (++i == length) {
  -		    break;
  -		}
  +                if (++i == length) break;
                   c = _format.charAt(i);
                   isFirst = false;
               }
  @@ -257,8 +251,7 @@
   		if (!isFirst) {
   		    buffer.append((String) separToks.elementAt(t));
   		}
  -		formatValue(value, (String) formatToks.elementAt(t++),
  -			    buffer);
  +		formatValue(value, (String) formatToks.elementAt(t++), buffer);
   		if (t == formatToks.size()) {
   		    t--;
   		}
  
  
  
  1.11      +13 -12    xml-xalan/java/src/org/apache/xalan/xsltc/runtime/DefaultSAXOutputHandler.java
  
  Index: DefaultSAXOutputHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/runtime/DefaultSAXOutputHandler.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- DefaultSAXOutputHandler.java	2001/07/31 18:13:23	1.10
  +++ DefaultSAXOutputHandler.java	2001/08/01 11:52:59	1.11
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: DefaultSAXOutputHandler.java,v 1.10 2001/07/31 18:13:23 morten Exp $
  + * @(#)$Id: DefaultSAXOutputHandler.java,v 1.11 2001/08/01 11:52:59 morten Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -115,9 +115,10 @@
   
       private static final String EMPTYSTRING = "";
   
  -    private boolean   _indentNextEndTag = false;
  -    private boolean   _linefeedNextStartTag = false;
  -    private int       _indentLevel = 0;
  +    private boolean _lineFeedNextStartTag = false;
  +    private boolean _linefeedNextEndTag = false;
  +    private boolean _indentNextEndTag = false;
  +    private int     _indentLevel = 0;
   
       // This is used for aggregating namespace declarations
       private AttributeList _namespaceDeclarations = new AttributeList();
  @@ -181,7 +182,6 @@
   	_outputType = TextOutput.UNKNOWN;
   	_indent = false;
   	_indentNextEndTag = false;
  -	_linefeedNextStartTag = false;
   	_indentLevel = 0;
   	_startTagOpen = false;
       }
  @@ -255,16 +255,17 @@
   
   	    // Handle indentation (not a requirement)
               if (_indent) {
  -                indent(_linefeedNextStartTag);
  -                _indentLevel++;
  +		indent(_lineFeedNextStartTag);
  +		_lineFeedNextStartTag = true;
                   _indentNextEndTag = false;
  +                _indentLevel++;
               }
  -            _linefeedNextStartTag = true;
   
   	    // Now, finally, output the start tag for the element.
   	    _writer.write('<');
   	    _writer.write(elementName);
   	    _startTagOpen = true;
  +	    _indentNextEndTag = false;
   
   	    // Output namespace declarations first...
   	    int declCount = _namespaceDeclarations.getLength();
  @@ -304,15 +305,16 @@
   			   String elementName)  throws SAXException {
   	try {
   
  -	      _linefeedNextStartTag = false;
  -
               if (_indent) _indentLevel--;
   
               if (_startTagOpen) {
                   closeStartTag(false);
               }
               else {
  -                if ((_indent) && (_indentNextEndTag)) indent(false);
  +                if ((_indent) && (_indentNextEndTag)) {
  +		    indent(_indentNextEndTag);
  +		    _indentNextEndTag = true;
  +		}
                   char[] endTag = (char[])_endTags.get(elementName);
                   if (endTag == null) {
   		    // We dont' want to concatenate String objects!!!!
  @@ -359,7 +361,6 @@
   		determineOutputType(null);
   	    
               if (len == 0) return;
  -            _linefeedNextStartTag = false;
   
               // Close any open start-tags.
               if (_startTagOpen) closeStartTag(true);
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org