tmiller     2002/07/25 04:45:28

  Modified:    java/src/org/apache/xalan/xsltc/compiler/util NodeType.java
                        ReferenceType.java StringType.java Type.java
               java/src/org/apache/xalan/xsltc/dom AbsoluteIterator.java
               java/src/org/apache/xalan/xsltc/runtime
                        AbstractTranslet.java
  Log:
  bug fix 10837, support of ext java functions
  
  Revision  Changes    Path
  1.8       +14 -1     
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.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- NodeType.java     1 Feb 2002 20:08:11 -0000       1.7
  +++ NodeType.java     25 Jul 2002 11:45:28 -0000      1.8
  @@ -129,6 +129,9 @@
        else if (type == Type.Reference) {
            translateTo(classGen, methodGen, (ReferenceType) type);
        }
  +     else if (type == Type.Object) {
  +         translateTo(classGen, methodGen, (ObjectType) type);
  +     }
        else {
            ErrorMsg err = new ErrorMsg(ErrorMsg.DATA_CONVERSION_ERR,
                                        toString(), type.toString());
  @@ -225,6 +228,16 @@
        final int init = cpg.addMethodref(SINGLETON_ITERATOR, "<init>",
                                          "(" + NODE_SIG +")V");
        il.append(new INVOKESPECIAL(init));
  +    }
  +
  +    /**
  +     * Subsume Node into ObjectType.
  +     *
  +     * @see  org.apache.xalan.xsltc.compiler.util.Type#translateTo
  +     */
  +    public void translateTo(ClassGenerator classGen, MethodGenerator 
methodGen, 
  +                         ObjectType type) {
  +         methodGen.getInstructionList().append(NOP); 
       }
   
       /**
  
  
  
  1.10      +15 -1     
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/ReferenceType.java
  
  Index: ReferenceType.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/ReferenceType.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- ReferenceType.java        29 Apr 2002 18:32:30 -0000      1.9
  +++ ReferenceType.java        25 Jul 2002 11:45:28 -0000      1.10
  @@ -116,6 +116,9 @@
        else if (type == Type.ResultTree) {
            translateTo(classGen, methodGen, (ResultTreeType) type);
        }
  +     else if (type == Type.Object) {
  +         translateTo(classGen, methodGen, (ObjectType) type);
  +     }
        else {
            ErrorMsg err = new ErrorMsg(ErrorMsg.INTERNAL_ERR, type.toString());
            classGen.getParser().reportError(Constants.FATAL, err);
  @@ -225,6 +228,17 @@
        int index = cpg.addMethodref(BASIS_LIBRARY_CLASS, 
"referenceToResultTree", 
                                     "(" + OBJECT_SIG + ")" + DOM_INTF_SIG);
        il.append(new INVOKESTATIC(index));
  +    }
  +
  +
  +    /**
  +     * Subsume reference into ObjectType.
  +     *
  +     * @see  org.apache.xalan.xsltc.compiler.util.Type#translateTo
  +     */
  +    public void translateTo(ClassGenerator classGen, MethodGenerator 
methodGen, 
  +                         ObjectType type) {
  +         methodGen.getInstructionList().append(NOP); 
       }
   
       /**
  
  
  
  1.6       +22 -5     
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.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- StringType.java   1 Feb 2002 20:08:11 -0000       1.5
  +++ StringType.java   25 Jul 2002 11:45:28 -0000      1.6
  @@ -182,7 +182,8 @@
        * @see  org.apache.xalan.xsltc.compiler.util.Type#translateFrom
        */
       public void translateTo(ClassGenerator classGen, MethodGenerator 
methodGen, 
  -                         Class clazz) {
  +                         Class clazz) 
  +    {
        if (clazz.getName().equals("java.lang.String")) {
            // same internal representation
            methodGen.getInstructionList().append(NOP);
  @@ -199,9 +200,25 @@
        *
        * @see  org.apache.xalan.xsltc.compiler.util.Type#translateFrom
        */
  -    public void translateFrom(ClassGenerator classGen, MethodGenerator 
methodGen, 
  -                           Class clazz) {
  -     translateTo(classGen, methodGen, clazz);
  +    public void translateFrom(ClassGenerator classGen, 
  +     MethodGenerator methodGen, Class clazz) 
  +    {
  +     final ConstantPoolGen cpg = classGen.getConstantPool();
  +     final InstructionList il = methodGen.getInstructionList();
  +
  +     if (clazz.getName().equals("java.lang.String")) {
  +         // same internal representation, convert null to ""
  +         il.append(DUP);
  +         final BranchHandle ifNonNull = il.append(new IFNONNULL(null));
  +         il.append(POP);
  +         il.append(new PUSH(cpg, ""));
  +         ifNonNull.setTarget(il.append(NOP));
  +     }
  +     else {
  +         ErrorMsg err = new ErrorMsg(ErrorMsg.DATA_CONVERSION_ERR,
  +                                     toString(), clazz.getName());
  +         classGen.getParser().reportError(Constants.FATAL, err);
  +     }
       }
   
       /**
  
  
  
  1.11      +2 -1      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/Type.java
  
  Index: Type.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/Type.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- Type.java 28 Jun 2002 15:09:57 -0000      1.10
  +++ Type.java 25 Jul 2002 11:45:28 -0000      1.11
  @@ -79,6 +79,7 @@
       public static final Type ResultTree = new ResultTreeType();
       public static final Type Reference  = new ReferenceType();
       public static final Type Void       = new VoidType();
  +    public static final Type Object     = new ObjectType();
   
       public static final Type Node       = new NodeType(NodeTest.ANODE);
       public static final Type Root       = new NodeType(NodeTest.ROOT);
  
  
  
  1.7       +8 -3      
xml-xalan/java/src/org/apache/xalan/xsltc/dom/AbsoluteIterator.java
  
  Index: AbsoluteIterator.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/dom/AbsoluteIterator.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- AbsoluteIterator.java     4 Dec 2001 10:30:07 -0000       1.6
  +++ AbsoluteIterator.java     25 Jul 2002 11:45:28 -0000      1.7
  @@ -83,11 +83,16 @@
        _source.setRestartable(isRestartable);
       }
        
  +    int _mask = -1;
  +
       public NodeIterator setStartNode(int node) {
  -     _startNode = DOM.ROOTNODE;
  +     if (_mask == -1) {
  +            _mask = node & 0xFF000000;
  +        }
  +     _startNode = _mask | DOM.ROOTNODE;
        if (_isRestartable) {
            resetPosition();
  -         return _source.setStartNode(_startNode = DOM.ROOTNODE);
  +         return _source.setStartNode(_startNode = _mask | DOM.ROOTNODE);
        }
        return reset();
       }
  
  
  
  1.42      +9 -1      
xml-xalan/java/src/org/apache/xalan/xsltc/runtime/AbstractTranslet.java
  
  Index: AbstractTranslet.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/runtime/AbstractTranslet.java,v
  retrieving revision 1.41
  retrieving revision 1.42
  diff -u -r1.41 -r1.42
  --- AbstractTranslet.java     20 Jun 2002 12:20:57 -0000      1.41
  +++ AbstractTranslet.java     25 Jul 2002 11:45:28 -0000      1.42
  @@ -615,4 +615,12 @@
        if (_auxClasses == null) return null;
        return((Class)_auxClasses.get(className));
       }
  +
  +    // GTM added (see pg 110)
  +    public String[] getNamesArray() {
  +     return namesArray;
  +    }
  +    public String[] getNamespaceArray() {
  +     return namespaceArray;
  +    }
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to