package net.jhorstmann.i18n.tools.expr;
import org.objectweb.asm.commons.GeneratorAdapter;
public class OrExpression extends BinaryExpression {
public OrExpression(Expression leftExpr, Expression rightExpr) {
super(leftExpr, rightExpr);
}
@Override
public long eval(long n) {
return (leftExpr.eval(n) != 0 || rightExpr.eval(n) != 0) ? 1 : 0;
}
@Override
public boolean isBool() {
return true;
}
@Override
public void validate() throws InvalidExpressionException {
if (!leftExpr.isBool()) {
throw new InvalidExpressionException("Left child expression must be of boolean type");
}
if (!rightExpr.isBool()) {
throw new InvalidExpressionException("Right child expression must be of boolean type");
}
}
@Override
public String toString() {
return toString("||");
}
@Override
public void compile(GeneratorAdapter ga, int narg) {
compileBinaryInstruction(ga, narg, GeneratorAdapter.OR);
}
}