1 16 19 20 package org.apache.xalan.xsltc.compiler; 21 22 import java.util.Vector ; 23 24 import org.apache.bcel.generic.ConstantPoolGen; 25 import org.apache.bcel.generic.INVOKEVIRTUAL; 26 import org.apache.bcel.generic.InstructionList; 27 import org.apache.xalan.xsltc.compiler.util.ClassGenerator; 28 import org.apache.xalan.xsltc.compiler.util.MethodGenerator; 29 import org.apache.xalan.xsltc.compiler.util.Type; 30 31 35 final class StringLengthCall extends FunctionCall { 36 public StringLengthCall(QName fname, Vector arguments) { 37 super(fname, arguments); 38 } 39 40 public void translate(ClassGenerator classGen, MethodGenerator methodGen) { 41 final ConstantPoolGen cpg = classGen.getConstantPool(); 42 final InstructionList il = methodGen.getInstructionList(); 43 if (argumentCount() > 0) { 44 argument().translate(classGen, methodGen); 45 } 46 else { 47 il.append(methodGen.loadContextNode()); 48 Type.Node.translateTo(classGen, methodGen, Type.String); 49 } 50 il.append(new INVOKEVIRTUAL(cpg.addMethodref(STRING_CLASS, 51 "length", "()I"))); 52 } 53 } 54 | Popular Tags |