Package com.saxonica.ee.bytecode
Class ToStringCompiler
- java.lang.Object
-
- com.saxonica.ee.bytecode.ExpressionCompiler
-
- com.saxonica.ee.bytecode.ToItemCompiler
-
- com.saxonica.ee.bytecode.ToStringCompiler
-
- Direct Known Subclasses:
ConcatCompiler
,ForceCaseCompiler
,GenerateIdCompiler
,NodePropertyCompiler
,NormalizeSpaceCompiler
,StringFnCompiler
,StringJoinCompiler
,SubstringAfterCompiler
,SubstringBeforeCompiler
,TranslateCompiler
public abstract class ToStringCompiler extends ToItemCompiler
Generate bytecode for evaluation of expressions that return a single string (or an empty sequence)
-
-
Constructor Summary
Constructors Constructor Description ToStringCompiler()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
compileItemFromString(CompilerService compiler, Expression expression)
Helper method to implement compileFromItem when the class implements compileToPrimitivevoid
compileToItem(CompilerService compiler, Expression expression)
Generate bytecode to evaluate the expression as an Item Precondition: none.void
compileToPrimitive(CompilerService compiler, Expression expression, java.lang.Class<?> requiredClass, OnEmpty onEmpty)
Generate bytecode to evaluate the expression leaving a plain Java value on the stack.void
compileToString(CompilerService compiler, Expression expression, OnEmpty onEmpty)
void
compileToUnicodeString(CompilerService compiler, Expression expression, OnEmpty onEmpty)
-
Methods inherited from class com.saxonica.ee.bytecode.ToItemCompiler
compileToBoolean, compileToIterator, compileToPush, treatAsEmptyIfFirstArgumentIsEmpty
-
Methods inherited from class com.saxonica.ee.bytecode.ExpressionCompiler
allocateStatic, compileItemFromInt, generateMethod, handleEmptyStringResult, printStackTop, verify, visitAnnotation, visitLineNumber
-
-
-
-
Method Detail
-
compileToItem
public final void compileToItem(CompilerService compiler, Expression expression) throws CannotCompileException
Generate bytecode to evaluate the expression as an Item Precondition: none. Postcondition: at execution time, the stack contains either an item (the result of the expression), or null (representing an empty sequence).- Specified by:
compileToItem
in classExpressionCompiler
- Parameters:
compiler
- the compiler serviceexpression
- the expression to be compiled- Throws:
CannotCompileException
- if the expression cannot be compiled to bytecode
-
compileItemFromString
protected final void compileItemFromString(CompilerService compiler, Expression expression) throws CannotCompileException
Helper method to implement compileFromItem when the class implements compileToPrimitive- Parameters:
compiler
- the compiler serviceexpression
- the expression to be compiled- Throws:
CannotCompileException
- if the expression cannot be compiled to bytecode
-
compileToPrimitive
public void compileToPrimitive(CompilerService compiler, Expression expression, java.lang.Class<?> requiredClass, OnEmpty onEmpty) throws CannotCompileException
Description copied from class:ExpressionCompiler
Generate bytecode to evaluate the expression leaving a plain Java value on the stack. This method must only be called if the static type of the expressionis such that the value is known to be representable by a value of the specified class; the cardinality must be either exactly-one or zero-or-one.- Overrides:
compileToPrimitive
in classExpressionCompiler
- Parameters:
compiler
- the compiler serviceexpression
- the expression to be compiledrequiredClass
- the class of the Java value that is to be left on the stack if the generated code exits normally. This must be one of Integer.TYPE, Double.TYPE, Float.TYPE, BigDecimal.class, String.class, UnicodeString.class.onEmpty
- defines the action to be taken if the expression evaluates to the empty sequence. May be null if the expression is known statically not to evaluate to an empty sequence. If the return class is a primitive type (double, float, etc) this must be an instance ofOnEmpty.UnwindAndJump
- Throws:
CannotCompileException
- if the expression cannot be compiled to bytecode
-
compileToUnicodeString
public void compileToUnicodeString(CompilerService compiler, Expression expression, OnEmpty onEmpty) throws CannotCompileException
- Throws:
CannotCompileException
-
compileToString
public void compileToString(CompilerService compiler, Expression expression, OnEmpty onEmpty) throws CannotCompileException
- Throws:
CannotCompileException
-
-