Package com.strobel.expressions
Class UnaryExpression
- java.lang.Object
-
- com.strobel.expressions.Expression
-
- com.strobel.expressions.UnaryExpression
-
public final class UnaryExpression extends Expression
Represents an expression that has a unary operator.
-
-
Field Summary
Fields Modifier and Type Field Description private MethodInfo_methodprivate ExpressionType_nodeTypeprivate Expression_operandprivate Type_type
-
Constructor Summary
Constructors Constructor Description UnaryExpression(ExpressionType nodeType, Expression operand, Type type, MethodInfo method)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected Expressionaccept(ExpressionVisitor visitor)Dispatches to the specific visit method for this node type.booleancanReduce()Indicates that the node can be reduced to a simpler node.private UnaryExpressionfunctionalOp(Expression operand)MethodInfogetMethod()Gets the implementing method for the unary operation.ExpressionTypegetNodeType()Returns the node type of thisExpression.ExpressiongetOperand()Gets the implementing method for the unary operation.Type<?>getType()Gets the static type of the expression that thisExpressionrepresents.private booleanisPrefix()Expressionreduce()Reduces this node to a simpler expression.private ExpressionreduceMember()private ExpressionreduceVariable()UnaryExpressionupdate(Expression operand)-
Methods inherited from class com.strobel.expressions.Expression
add, add, addAssign, addAssign, addAssign, and, and, andAlso, andAlso, andAlso, andAssign, andAssign, andAssign, arrayIndex, arrayLength, arrayToList, arrayToList, arrayToReadOnlyList, assign, base, block, block, block, block, block, block, block, block, block, block, block, block, block, block, box, call, call, call, call, call, call, call, call, call, call, classConstant, coalesce, coalesce, concat, concat, concat, condition, condition, constant, constant, convert, convert, decrement, decrement, defaultValue, divide, divide, divideAssign, divideAssign, divideAssign, empty, ensureUnmodifiable, equal, equal, exclusiveOr, exclusiveOr, exclusiveOrAssign, exclusiveOrAssign, exclusiveOrAssign, field, field, field, field, forEach, forEach, forEach, getDebugView, getInvokeMethod, getInvokeMethod, getMethodValidated, greaterThan, greaterThan, greaterThanOrEqual, greaterThanOrEqual, ifThen, ifThenElse, increment, increment, instanceOf, invoke, invoke, isFalse, isFalse, isNotNull, isNull, isTrue, isTrue, label, label, label, label, label, label, lambda, lambda, lambda, lambda, lambda, lambda, lambda, lambda, lambda, lambda, lambda, lambda, lambda, leftShift, leftShift, leftShiftAssign, leftShiftAssign, leftShiftAssign, lessThan, lessThan, lessThanOrEqual, lessThanOrEqual, loop, loop, loop, makeBinary, makeBinary, makeBinary, makeBinary, makeBinary, makeBreak, makeBreak, makeBreak, makeBreak, makeCatch, makeCatch, makeCatch, makeCatch, makeCatch, makeCatch, makeContinue, makeContinue, makeFor, makeFor, makeFor, makeGoto, makeGoto, makeGoto, makeGoto, makeGoto, makeMemberAccess, makeNew, makeNew, makeNew, makeNew, makeReturn, makeReturn, makeReturn, makeReturn, makeSwitch, makeSwitch, makeSwitch, makeSwitch, makeSwitch, makeSwitch, makeSwitch, makeSwitch, makeSwitch, makeSwitch, makeSwitch, makeSwitch, makeSwitch, makeThrow, makeThrow, makeTry, makeTry, makeTry, makeUnary, makeUnary, methodArgumentsMatch, modulo, modulo, moduloAssign, moduloAssign, moduloAssign, multiply, multiply, multiplyAssign, multiplyAssign, multiplyAssign, negate, negate, newArrayBounds, newArrayInit, newArrayInit, not, not, notEqual, notEqual, onesComplement, onesComplement, or, or, orAssign, orAssign, orAssign, orElse, orElse, orElse, parameter, parameter, parameterIsAssignable, parameters, performBinaryNumericPromotion, postDecrementAssign, postDecrementAssign, postIncrementAssign, postIncrementAssign, preDecrementAssign, preDecrementAssign, preIncrementAssign, preIncrementAssign, reduceAndCheck, reduceExtensions, referenceEqual, referenceNotEqual, returnObject, rightShift, rightShift, rightShiftAssign, rightShiftAssign, rightShiftAssign, runtimeVariables, runtimeVariables, self, subtract, subtract, subtractAssign, subtractAssign, subtractAssign, switchCase, switchCase, toString, tryCatch, tryCatchFinally, tryFinally, typeEqual, unaryPlus, unaryPlus, unbox, unbox, unsignedRightShift, unsignedRightShift, unsignedRightShiftAssign, unsignedRightShiftAssign, unsignedRightShiftAssign, validateVariables, variable, variable, variables, visitChildren
-
-
-
-
Field Detail
-
_operand
private final Expression _operand
-
_method
private final MethodInfo _method
-
_nodeType
private final ExpressionType _nodeType
-
_type
private final Type _type
-
-
Constructor Detail
-
UnaryExpression
UnaryExpression(ExpressionType nodeType, Expression operand, Type type, MethodInfo method)
-
-
Method Detail
-
getOperand
public final Expression getOperand()
Gets the implementing method for the unary operation.- Returns:
- an
Expressionthat represents the operand of the unary operation.
-
getMethod
public final MethodInfo getMethod()
Gets the implementing method for the unary operation.- Returns:
- the
MethodInfothat represents the implementing method.
-
getType
public final Type<?> getType()
Description copied from class:ExpressionGets the static type of the expression that thisExpressionrepresents.- Overrides:
getTypein classExpression- Returns:
- the
Typethat represents the static type of the expression.
-
getNodeType
public final ExpressionType getNodeType()
Description copied from class:ExpressionReturns the node type of thisExpression.- Overrides:
getNodeTypein classExpression- Returns:
- the
ExpressionTypethat represents this expression.
-
accept
protected final Expression accept(ExpressionVisitor visitor)
Description copied from class:ExpressionDispatches to the specific visit method for this node type. For example,BinaryExpressionwill call intoExpressionVisitor.visitBinary().- Overrides:
acceptin classExpression- Parameters:
visitor- the visitor to visit this node.- Returns:
- the result of visiting this node.
-
canReduce
public final boolean canReduce()
Description copied from class:ExpressionIndicates that the node can be reduced to a simpler node. If this returnstrue,reduce()can be called to produce the reduced form.- Overrides:
canReducein classExpression- Returns:
trueif the node can be reduced; otherwise,false.
-
reduce
public final Expression reduce()
Description copied from class:ExpressionReduces this node to a simpler expression. IfcanReduce()returnstrue, this should return a valid expression. This method is allowed to return another node which itself must be reduced.- Overrides:
reducein classExpression- Returns:
- the reduced expression.
-
reduceVariable
private Expression reduceVariable()
-
reduceMember
private Expression reduceMember()
-
isPrefix
private boolean isPrefix()
-
functionalOp
private UnaryExpression functionalOp(Expression operand)
-
update
public final UnaryExpression update(Expression operand)
-
-