You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by mk...@apache.org on 2002/09/16 21:14:45 UTC

cvs commit: xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util BooleanType.java IntType.java NodeSetType.java NodeType.java RealType.java ResultTreeType.java StringType.java

mkwan       2002/09/16 12:14:45

  Modified:    java/src/org/apache/xalan/xsltc/compiler/util
                        BooleanType.java IntType.java NodeSetType.java
                        NodeType.java RealType.java ResultTreeType.java
                        StringType.java
  Log:
  For XSLTC extension integration. Add more translation rules required by
  extensions. Specifically, all types can be translated to a generic Java Object.
  Numeric types can be translated to their corresponding Java types (e.g. Real to
  java.lang.Double). Node, NodeSet and ResultTree can be translated to a Java String.
  
  Revision  Changes    Path
  1.4       +4 -1      xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/BooleanType.java
  
  Index: BooleanType.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/BooleanType.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- BooleanType.java	1 Feb 2002 20:27:46 -0000	1.3
  +++ BooleanType.java	16 Sep 2002 19:14:45 -0000	1.4
  @@ -172,6 +172,9 @@
   	if (clazz == java.lang.Boolean.TYPE) {
   	    methodGen.getInstructionList().append(NOP);
   	}
  +        else if (clazz.isAssignableFrom(java.lang.Boolean.class)) {
  +            translateTo(classGen, methodGen, Type.Reference);
  +        }
   	else {
   	    ErrorMsg err = new ErrorMsg(ErrorMsg.DATA_CONVERSION_ERR,
   					toString(), clazz.getName());
  
  
  
  1.4       +4 -1      xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/IntType.java
  
  Index: IntType.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/IntType.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- IntType.java	1 Feb 2002 20:27:46 -0000	1.3
  +++ IntType.java	16 Sep 2002 19:14:45 -0000	1.4
  @@ -231,6 +231,9 @@
   	else if (clazz == Double.TYPE) {
   	    il.append(I2D);
   	}
  +        else if (clazz.isAssignableFrom(java.lang.Integer.class)) {
  +            translateTo(classGen, methodGen, Type.Reference);   
  +        }
   	else {
   	    ErrorMsg err = new ErrorMsg(ErrorMsg.DATA_CONVERSION_ERR,
   					toString(), clazz.getName());
  
  
  
  1.11      +16 -2     xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/NodeSetType.java
  
  Index: NodeSetType.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/NodeSetType.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- NodeSetType.java	25 Jul 2002 11:44:19 -0000	1.10
  +++ NodeSetType.java	16 Sep 2002 19:14:45 -0000	1.11
  @@ -271,12 +271,26 @@
   						  MAKE_NODE_SIG2);
   	    il.append(new INVOKEINTERFACE(index, 2));
   	}
  -	else if (className.equals("org.w3c.dom.NodeList")) {
  +        else if (className.equals("org.w3c.dom.NodeList") || 
  +                 className.equals("java.lang.Object")) {
   	    int index = cpg.addInterfaceMethodref(DOM_INTF,
   						  MAKE_NODE_LIST,
   						  MAKE_NODE_LIST_SIG2);
   	    il.append(new INVOKEINTERFACE(index, 2));
   	}
  +        else if (className.equals("java.lang.String")) {
  +            int next = cpg.addInterfaceMethodref(NODE_ITERATOR,
  +                                                 "next", "()I");
  +            int index = cpg.addInterfaceMethodref(DOM_INTF,
  +                                                 GET_NODE_VALUE,
  +                                                 "(I)"+STRING_SIG);
  +
  +            // Get next node from the iterator
  +            il.append(new INVOKEINTERFACE(next, 1));
  +            // Get the node's string value (from the DOM)
  +            il.append(new INVOKEINTERFACE(index, 2));
  +                       
  +        }
   	else if (className.equals("int")) {
   	    int next = cpg.addInterfaceMethodref(NODE_ITERATOR,
   						  "next", "()I");
  
  
  
  1.9       +9 -3      xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/NodeType.java
  
  Index: NodeType.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/NodeType.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- NodeType.java	25 Jul 2002 11:45:28 -0000	1.8
  +++ NodeType.java	16 Sep 2002 19:14:45 -0000	1.9
  @@ -282,11 +282,17 @@
   	final ConstantPoolGen cpg = classGen.getConstantPool();
   	final InstructionList il = methodGen.getInstructionList();
   
  +        String className = clazz.getName();
  +        if (className.equals("java.lang.String")) {
  +           translateTo(classGen, methodGen, Type.String);
  +           return;
  +        }
  +
   	il.append(methodGen.loadDOM());
   	il.append(SWAP);		// dom ref must be below node index
   
  -	String className = clazz.getName();
  -	if (className.equals("org.w3c.dom.Node")) {
  +        if (className.equals("org.w3c.dom.Node") ||
  +            className.equals("java.lang.Object")) {
   	    int index = cpg.addInterfaceMethodref(DOM_INTF,
   						  MAKE_NODE,
   						  MAKE_NODE_SIG);
  
  
  
  1.4       +4 -1      xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/RealType.java
  
  Index: RealType.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/RealType.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- RealType.java	1 Feb 2002 20:08:11 -0000	1.3
  +++ RealType.java	16 Sep 2002 19:14:45 -0000	1.4
  @@ -260,6 +260,9 @@
   	else if (clazz == Double.TYPE) {
   	    il.append(NOP);
   	}
  +        else if (clazz.isAssignableFrom(java.lang.Double.class)) {
  +            translateTo(classGen, methodGen, Type.Reference);
  +        }
   	else {
   	    ErrorMsg err = new ErrorMsg(ErrorMsg.DATA_CONVERSION_ERR,
   					toString(), clazz.getName());
  
  
  
  1.14      +4 -1      xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/ResultTreeType.java
  
  Index: ResultTreeType.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/ResultTreeType.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- ResultTreeType.java	14 Sep 2002 23:36:17 -0000	1.13
  +++ ResultTreeType.java	16 Sep 2002 19:14:45 -0000	1.14
  @@ -433,6 +433,9 @@
   	else if (className.equals("java.lang.Object")) {
   	    il.append(NOP);
   	}
  +        else if (className.equals("java.lang.String")) {
  +            translateTo(classGen, methodGen, Type.String);
  +        }
   	else {
   	    ErrorMsg err = new ErrorMsg(ErrorMsg.DATA_CONVERSION_ERR,
   					toString(), className);
  
  
  
  1.7       +2 -2      xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/StringType.java
  
  Index: StringType.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/StringType.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- StringType.java	25 Jul 2002 11:45:28 -0000	1.6
  +++ StringType.java	16 Sep 2002 19:14:45 -0000	1.7
  @@ -184,7 +184,7 @@
       public void translateTo(ClassGenerator classGen, MethodGenerator methodGen, 
   			    Class clazz) 
       {
  -	if (clazz.getName().equals("java.lang.String")) {
  +        if (clazz.isAssignableFrom(java.lang.String.class)) {
   	    // same internal representation
   	    methodGen.getInstructionList().append(NOP);
   	}
  
  
  

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