/** * Translates an external (primitive) Java type into a void. * Only an external "void" can be converted to this class. */ public void translateFrom(ClassGenerator classGen, MethodGenerator methodGen, Class clazz) { if (!clazz.getName().equals("void")) { ErrorMsg err = new ErrorMsg(ErrorMsg.DATA_CONVERSION_ERR, toString(), clazz.getName()); classGen.getParser().reportError(Constants.FATAL, err); } } }
/** * Translates an external (Java) type denoted by <code>clazz</code> to * an object of this type. This method is used to translate return values * when external functions are called. */ public void translateFrom(ClassGenerator classGen, MethodGenerator methodGen, Class clazz) { ErrorMsg err = new ErrorMsg(ErrorMsg.DATA_CONVERSION_ERR, clazz.getClass().toString(), toString()); classGen.getParser().reportError(Constants.FATAL, err); }
/** * Translates an object of this type to the external (Java) type denoted * by <code>clazz</code>. This method is used to translate parameters * when external functions are called. */ public void translateTo(ClassGenerator classGen, MethodGenerator methodGen, Class clazz) { ErrorMsg err = new ErrorMsg(ErrorMsg.DATA_CONVERSION_ERR, toString(), clazz.getClass().toString()); classGen.getParser().reportError(Constants.FATAL, err); }
/** * Translates an object of this type to its unboxed representation. */ public void translateUnBox(ClassGenerator classGen, MethodGenerator methodGen) { ErrorMsg err = new ErrorMsg(ErrorMsg.DATA_CONVERSION_ERR, "["+toString()+"]", toString()); classGen.getParser().reportError(Constants.FATAL, err); }
/** * Translates an external Java type into a reference. Only conversion * allowed is from java.lang.Object. */ public void translateFrom(ClassGenerator classGen, MethodGenerator methodGen, Class clazz) { if (clazz.getName().equals("java.lang.Object")) { methodGen.getInstructionList().append(NOP); } else { ErrorMsg err = new ErrorMsg(ErrorMsg.DATA_CONVERSION_ERR, toString(), clazz.getName()); classGen.getParser().reportError(Constants.FATAL, err); } }
/** * Translates an object of this type to the external (Java) type denoted * by <code>clazz</code>. This method is used to translate parameters * when external functions are called. */ public void translateTo(ClassGenerator classGen, MethodGenerator methodGen, Class clazz) { if (clazz.isAssignableFrom(_clazz)) methodGen.getInstructionList().append(NOP); else { ErrorMsg err = new ErrorMsg(ErrorMsg.DATA_CONVERSION_ERR, toString(), clazz.getClass().toString()); classGen.getParser().reportError(Constants.FATAL, err); } }
/** * Translates a internal string into an external (Java) string. * * @see org.apache.xalan.xsltc.compiler.util.Type#translateFrom */ public void translateTo(ClassGenerator classGen, MethodGenerator methodGen, Class clazz) { // Is String <: clazz? I.e. clazz in { String, Object } if (clazz.isAssignableFrom(java.lang.String.class)) { methodGen.getInstructionList().append(NOP); } else { ErrorMsg err = new ErrorMsg(ErrorMsg.DATA_CONVERSION_ERR, toString(), clazz.getName()); classGen.getParser().reportError(Constants.FATAL, err); } }
/** * Translates an object of this type to its boxed representation. */ public void translateBox(ClassGenerator classGen, MethodGenerator methodGen) { ErrorMsg err = new ErrorMsg(ErrorMsg.DATA_CONVERSION_ERR, toString(), "["+toString()+"]"); classGen.getParser().reportError(Constants.FATAL, err); }
/** * Translates an object of this type to an object of type * <code>type</code>. * Expects an object of the former type and pushes an object of the latter. */ public void translateTo(ClassGenerator classGen, MethodGenerator methodGen, Type type) { ErrorMsg err = new ErrorMsg(ErrorMsg.DATA_CONVERSION_ERR, toString(), type.toString()); classGen.getParser().reportError(Constants.FATAL, err); }
/** * Translates an object of this type to an non-synthesized boolean. It * does not push a 0 or a 1 but instead returns branchhandle list to be * appended to the false list. */ public FlowList translateToDesynthesized(ClassGenerator classGen, MethodGenerator methodGen, BooleanType type) { ErrorMsg err = new ErrorMsg(ErrorMsg.DATA_CONVERSION_ERR, toString(), type.toString()); classGen.getParser().reportError(Constants.FATAL, err); return null; }
/** * Translates an internal boolean into an external (Java) boolean. */ public void translateTo(ClassGenerator classGen, MethodGenerator methodGen, Class clazz) { if (clazz == java.lang.Boolean.TYPE) { methodGen.getInstructionList().append(NOP); } // Is Boolean <: clazz? I.e. clazz in { Boolean, Object } 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()); classGen.getParser().reportError(Constants.FATAL, err); } }
/** * Translates a void into an object of internal type <code>type</code>. * This translation is needed when calling external functions * that return void. * * @see org.apache.xalan.xsltc.compiler.util.Type#translateTo */ public void translateTo(ClassGenerator classGen, MethodGenerator methodGen, Type type) { if (type == Type.String) { translateTo(classGen, methodGen, (StringType) type); } else { ErrorMsg err = new ErrorMsg(ErrorMsg.DATA_CONVERSION_ERR, toString(), type.toString()); classGen.getParser().reportError(Constants.FATAL, err); } }
/** * Translates a void into an object of internal type <code>type</code>. * This translation is needed when calling external functions * that return void. * * @see org.apache.xalan.xsltc.compiler.util.Type#translateTo */ public void translateTo(ClassGenerator classGen, MethodGenerator methodGen, Type type) { if (type == Type.String) { translateTo(classGen, methodGen, (StringType) type); } else { ErrorMsg err = new ErrorMsg(ErrorMsg.DATA_CONVERSION_ERR, toString(), type.toString()); classGen.getParser().reportError(Constants.FATAL, err); } }
/** * Translates an external (primitive) Java type into a real. Expects a java * object on the stack and pushes a real (i.e., a double). */ public void translateFrom(ClassGenerator classGen, MethodGenerator methodGen, Class clazz) { InstructionList il = methodGen.getInstructionList(); if (clazz == Character.TYPE || clazz == Byte.TYPE || clazz == Short.TYPE || clazz == Integer.TYPE) { il.append(I2D); } else if (clazz == Long.TYPE) { il.append(L2D); } else if (clazz == Float.TYPE) { il.append(F2D); } else if (clazz == Double.TYPE) { il.append(NOP); } else { ErrorMsg err = new ErrorMsg(ErrorMsg.DATA_CONVERSION_ERR, toString(), clazz.getName()); classGen.getParser().reportError(Constants.FATAL, err); } }
/** * Translates an external (primitive) Java type into a string. * * @see org.apache.xalan.xsltc.compiler.util.Type#translateFrom */ 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); } }
/** * Translates a string into an object of internal type <code>type</code>. * The translation to int is undefined since strings are always converted * to reals in arithmetic expressions. * * @see org.apache.xalan.xsltc.compiler.util.Type#translateTo */ public void translateTo(ClassGenerator classGen, MethodGenerator methodGen, Type type) { if (type == Type.Boolean) { translateTo(classGen, methodGen, (BooleanType) type); } else if (type == Type.Real) { translateTo(classGen, methodGen, (RealType) type); } else if (type == Type.Reference) { translateTo(classGen, methodGen, (ReferenceType) type); } else { ErrorMsg err = new ErrorMsg(ErrorMsg.DATA_CONVERSION_ERR, toString(), type.toString()); classGen.getParser().reportError(Constants.FATAL, err); } }
/** * Translates a real into an object of internal type <code>type</code>. The * translation to int is undefined since booleans are always converted to * reals in arithmetic expressions. * * @see org.apache.xalan.xsltc.compiler.util.Type#translateTo */ public void translateTo(ClassGenerator classGen, MethodGenerator methodGen, Type type) { if (type == Type.String) { translateTo(classGen, methodGen, (StringType) type); } else if (type == Type.Real) { translateTo(classGen, methodGen, (RealType) type); } else if (type == Type.Reference) { translateTo(classGen, methodGen, (ReferenceType) type); } else { ErrorMsg err = new ErrorMsg(ErrorMsg.DATA_CONVERSION_ERR, toString(), type.toString()); classGen.getParser().reportError(Constants.FATAL, err); } }
/** * Translates an integer into an object of internal type <code>type</code>. * * @see org.apache.xalan.xsltc.compiler.util.Type#translateTo */ public void translateTo(ClassGenerator classGen, MethodGenerator methodGen, final Type type) { if (type == Type.Real) { translateTo(classGen, methodGen, (RealType) type); } else if (type == Type.String) { translateTo(classGen, methodGen, (StringType) type); } else if (type == Type.Boolean) { translateTo(classGen, methodGen, (BooleanType) type); } else if (type == Type.Reference) { translateTo(classGen, methodGen, (ReferenceType) type); } else { ErrorMsg err = new ErrorMsg(ErrorMsg.DATA_CONVERSION_ERR, toString(), type.toString()); classGen.getParser().reportError(Constants.FATAL, err); } }
/** * Translates a real into an object of internal type <code>type</code>. The * translation to int is undefined since reals are never converted to ints. * * @see org.apache.xalan.xsltc.compiler.util.Type#translateTo */ public void translateTo(ClassGenerator classGen, MethodGenerator methodGen, Type type) { if (type == Type.String) { translateTo(classGen, methodGen, (StringType) type); } else if (type == Type.Boolean) { translateTo(classGen, methodGen, (BooleanType) type); } else if (type == Type.Reference) { translateTo(classGen, methodGen, (ReferenceType) type); } else if (type == Type.Int) { translateTo(classGen, methodGen, (IntType) type); } else { ErrorMsg err = new ErrorMsg(ErrorMsg.DATA_CONVERSION_ERR, toString(), type.toString()); classGen.getParser().reportError(Constants.FATAL, err); } }
/** * Compiles the predicate method */ private static void compileDefault(int defaultAction, ClassGenerator classGen) { final ConstantPoolGen cpg = classGen.getConstantPool(); final InstructionList il = new InstructionList(); final XSLTC xsltc = classGen.getParser().getXSLTC(); // private boolean Translet.stripSpace(int type) - cannot be static final MethodGenerator stripSpace = new MethodGenerator(ACC_PUBLIC | ACC_FINAL , org.apache.bcel.generic.Type.BOOLEAN, new org.apache.bcel.generic.Type[] { Util.getJCRefType(DOM_INTF_SIG), org.apache.bcel.generic.Type.INT, org.apache.bcel.generic.Type.INT }, new String[] { "dom","node","type" }, "stripSpace",classGen.getClassName(),il,cpg); classGen.addInterface("org/apache/xalan/xsltc/StripFilter"); if (defaultAction == STRIP_SPACE) il.append(ICONST_1); else il.append(ICONST_0); il.append(IRETURN); classGen.addMethod(stripSpace); }