use of jkind.lustre.values.ArrayValue in project AGREE by loonwerks.
the class FrameAssertionHelper method valueToExpr.
private static Expr valueToExpr(final Value value) {
assert value != null;
if (value instanceof ArrayValue) {
final ArrayValue arrayValue = (ArrayValue) value;
final ArrayList<Expr> exprList = new ArrayList<Expr>(arrayValue.elements.size());
for (final Value childValue : arrayValue.elements) {
exprList.add(valueToExpr(childValue));
}
return new ArrayExpr(exprList);
} else if (value instanceof BooleanValue) {
return new BoolExpr(((BooleanValue) value).value);
} else if (value instanceof EnumValue) {
return new IdExpr(((EnumValue) value).value);
} else if (value instanceof IntegerValue) {
return new IntExpr(((IntegerValue) value).value);
} else if (value instanceof RealValue) {
final BigFraction fraction = ((RealValue) value).value;
return new BinaryExpr(new RealExpr(new BigDecimal(fraction.getNumerator())), BinaryOp.DIVIDE, new RealExpr(new BigDecimal(fraction.getDenominator())));
}
if (value instanceof TupleValue) {
final TupleValue tupleValue = (TupleValue) value;
final ArrayList<Expr> exprList = new ArrayList<Expr>(tupleValue.elements.size());
for (final Value childValue : tupleValue.elements) {
exprList.add(valueToExpr(childValue));
}
return new TupleExpr(exprList);
} else {
throw new RuntimeException("Unhandled case. Value is of type: " + value.getClass());
}
}
use of jkind.lustre.values.ArrayValue in project AGREE by loonwerks.
the class AGREESimulationState method convertLustreValue.
/**
* Converts a JKind API Lustre value to types that are independent of the JKind API. In cases where there isn't an equivalent type in the standard
* Java API, the original type will be preserved. Throws an
* @param value non-null value object.
* @throws RuntimeException if the value is not of a supported type.
* @return
*/
private Object convertLustreValue(final Value value) {
assert value != null;
if (value instanceof ArrayValue) {
final ArrayValue arrayValue = (ArrayValue) value;
final ArrayList<Object> newList = new ArrayList<Object>(arrayValue.elements.size());
for (final Value childValue : arrayValue.elements) {
newList.add(convertLustreValue(childValue));
}
return newList;
} else if (value instanceof BooleanValue) {
return ((BooleanValue) value).value;
} else if (value instanceof EnumValue) {
return ((EnumValue) value).value;
} else if (value instanceof IntegerValue) {
return ((IntegerValue) value).value;
} else if (value instanceof RealValue) {
final BigFraction fraction = ((RealValue) value).value;
return new Rational(fraction.getNumerator(), fraction.getDenominator());
} else if (value instanceof RecordValue) {
final RecordValue recordValue = (RecordValue) value;
final Map<String, Object> newMap = new HashMap<String, Object>();
for (final Entry<String, Value> entry : recordValue.fields.entrySet()) {
newMap.put(entry.getKey(), convertLustreValue(entry.getValue()));
}
return newMap;
} else if (value instanceof TupleValue) {
final TupleValue tupleValue = (TupleValue) value;
final ArrayList<Object> newList = new ArrayList<Object>(tupleValue.elements.size());
for (final Value childValue : tupleValue.elements) {
newList.add(convertLustreValue(childValue));
}
return newList;
} else {
throw new RuntimeException("Unhandled case. Value is of type: " + value.getClass());
}
}
Aggregations