package org.batfish.datamodel.routing_policy.expr;
import org.batfish.datamodel.routing_policy.Environment;
import org.batfish.datamodel.routing_policy.Result;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
public enum BooleanExprs {
CallExprContext,
CallStatementContext,
False,
True;
public static class StaticBooleanExpr extends BooleanExpr {
/**
*
*/
private static final long serialVersionUID = 1L;
private static final String TYPE_VAR = "type";
private BooleanExprs _type;
@JsonCreator
public StaticBooleanExpr(@JsonProperty(TYPE_VAR) BooleanExprs type) {
_type = type;
}
@Override
public boolean equals(Object rhs) {
if (rhs instanceof StaticBooleanExpr) {
return _type.equals(((StaticBooleanExpr) rhs)._type);
}
return false;
}
@Override
public Result evaluate(Environment environment) {
Result result = new Result();
switch (_type) {
case CallExprContext:
result.setBooleanValue(environment.getCallExprContext());
break;
case CallStatementContext:
result.setBooleanValue(environment.getCallStatementContext());
break;
case False:
result.setBooleanValue(false);
break;
case True:
result.setBooleanValue(true);
break;
}
return result;
}
@JsonProperty(TYPE_VAR)
public BooleanExprs getType() {
return _type;
}
@Override
public int hashCode() {
return _type.hashCode();
}
}
public StaticBooleanExpr toStaticBooleanExpr() {
return new StaticBooleanExpr(this);
}
}