ofInferWidth static method
- dynamic val
Creates a LogicValue of val
using of, but attempts to infer the
width that would fit val
automatically.
Only accepts val
s of types int, BigInt, and LogicValue.
The width of negative numbers cannot be inferred and an exception will be thrown.
Implementation
static LogicValue ofInferWidth(dynamic val) {
int width;
if (val is int) {
if (val < 0) {
throw LogicValueConstructionException(
'Cannot infer width of a negative int.');
} else {
width = val.bitLength;
}
} else if (val is BigInt) {
if (val.isNegative) {
throw LogicValueConstructionException(
'Cannot infer width of a negative BigInt.');
} else {
width = val.bitLength;
}
} else if (val is LogicValue) {
width = val.width;
} else {
throw UnsupportedTypeException(val, const [int, BigInt, LogicValue]);
}
return LogicValue.of(val, width: width);
}