/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.lang.ir.expression;
import gw.lang.ir.IRExpression;
import gw.lang.ir.IRType;
import gw.lang.UnstableAPI;
@UnstableAPI
public class IRArithmeticExpression extends IRExpression {
/**
* The operation being performed.
*/
public static enum Operation {
Addition, Subtraction, Multiplication, Division, Remainder, ShiftLeft, ShiftRight, UnsignedShiftRight, BitwiseAnd, BitwiseOr, BitwiseXor
}
private IRType _type;
private IRExpression _lhs;
private IRExpression _rhs;
private Operation _op;
public IRArithmeticExpression(IRType type, IRExpression lhs, IRExpression rhs, Operation op) {
_type = type;
_lhs = lhs;
_rhs = rhs;
_op = op;
lhs.setParent( this );
rhs.setParent( this );
}
public IRType getType() {
return _type;
}
public IRExpression getLhs() {
return _lhs;
}
public IRExpression getRhs() {
return _rhs;
}
public Operation getOp() {
return _op;
}
}