public class OpPlus extends Operator
It can be used as a unary operator for numbers. The standard promotions are performed when the operand types vary (double+int=double). For other options it defers to the registered overloader.
Operator.DescriptorComparison
leftActualDescriptor, rightActualDescriptor
children, exitTypeDescriptor
AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_MANDATED, ACC_MODULE, ACC_NATIVE, ACC_OPEN, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STATIC_PHASE, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_TRANSITIVE, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASM4, ASM5, ASM6, ASM7, ASTORE, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DMUL, DNEG, DOUBLE, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F_APPEND, F_CHOP, F_FULL, F_NEW, F_SAME, F_SAME1, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAT, FMUL, FNEG, FREM, FRETURN, FSTORE, FSUB, GETFIELD, GETSTATIC, GOTO, H_GETFIELD, H_GETSTATIC, H_INVOKEINTERFACE, H_INVOKESPECIAL, H_INVOKESTATIC, H_INVOKEVIRTUAL, H_NEWINVOKESPECIAL, H_PUTFIELD, H_PUTSTATIC, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILOAD, IMUL, INEG, INSTANCEOF, INTEGER, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISUB, IUSHR, IXOR, JSR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDIV, LLOAD, LMUL, LNEG, LONG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, NULL, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SOURCE_DEPRECATED, SOURCE_MASK, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, TOP, UNINITIALIZED_THIS, V_PREVIEW, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7, V1_8, V10, V11, V12, V13, V9
Constructor and Description |
---|
OpPlus(int startPos,
int endPos,
SpelNodeImpl... operands) |
Modifier and Type | Method and Description |
---|---|
private static java.lang.String |
convertTypedValueToString(TypedValue value,
ExpressionState state)
Convert operand value to string using registered converter or using
toString method. |
void |
generateCode(MethodVisitor mv,
CodeFlow cf)
Generate the bytecode for this node into the supplied visitor.
|
SpelNodeImpl |
getRightOperand() |
TypedValue |
getValueInternal(ExpressionState state) |
boolean |
isCompilable()
Check whether a node can be compiled to bytecode.
|
java.lang.String |
toStringAST()
String format for all operators is the same
'(' [operand] [operator] [operand] ')' . |
private void |
walk(MethodVisitor mv,
CodeFlow cf,
SpelNodeImpl operand)
Walk through a possible tree of nodes that combine strings and append
them all to the same (on stack) StringBuilder.
|
equalityCheck, generateComparisonCode, getLeftOperand, getOperatorName, isCompilableOperatorUsingNumerics
generateCodeForArgument, generateCodeForArguments, getChild, getChildCount, getEndPosition, getExitDescriptor, getObjectClass, getStartPosition, getTypedValue, getValue, getValue, getValueRef, isWritable, nextChildIs, setValue
public OpPlus(int startPos, int endPos, SpelNodeImpl... operands)
public TypedValue getValueInternal(ExpressionState state) throws EvaluationException
getValueInternal
in class SpelNodeImpl
EvaluationException
public java.lang.String toStringAST()
Operator
'(' [operand] [operator] [operand] ')'
.toStringAST
in interface SpelNode
toStringAST
in class Operator
public SpelNodeImpl getRightOperand()
getRightOperand
in class Operator
private static java.lang.String convertTypedValueToString(TypedValue value, ExpressionState state)
toString
method.value
- typed value to be convertedstate
- expression stateTypedValue
instance converted to String
public boolean isCompilable()
SpelNodeImpl
isCompilable
in class SpelNodeImpl
true
if this node can be compiled to bytecodeprivate void walk(MethodVisitor mv, CodeFlow cf, @Nullable SpelNodeImpl operand)
public void generateCode(MethodVisitor mv, CodeFlow cf)
SpelNodeImpl
generateCode
in class SpelNodeImpl
mv
- the ASM MethodVisitor into which code should be generatedcf
- a context object with info about what is on the stack