--- /dev/null
+package net.mograsim.logic.core.types;
+
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.preferences.ColorDefinition;
+import net.mograsim.preferences.ColorDefinition.BuiltInColor;
+import net.mograsim.preferences.Preferences;
+
+public class BitVectorFormatter
+{
+ public static String formatValueAsString(ReadEnd end)
+ {
+ return formatAsString(end == null ? null : end.getValues());
+ }
+
+ public static String formatAsString(BitVector bitVector)
+ {
+ if (bitVector == null)
+ return "null";
+ return bitVector.toString();
+ }
+
+ // TODO doesn't this belong to logic.model?
+ public static ColorDefinition formatAsColor(ReadEnd end)
+ {
+ return formatAsColor(end == null ? null : end.getValues());
+ }
+
+ public static ColorDefinition formatAsColor(BitVector bitVector)
+ {
+ // TODO maybe find a color assignment for multiple-bit bit vectors?
+ if (bitVector == null || bitVector.length() != 1)
+ return new ColorDefinition(BuiltInColor.COLOR_BLACK);
+ switch (bitVector.getLSBit(0))
+ {
+ case ONE:
+ return Preferences.current().getColorDefinition("net.mograsim.logic.model.color.bit.one");
+ case U:
+ return Preferences.current().getColorDefinition("net.mograsim.logic.model.color.bit.u");
+ case X:
+ return Preferences.current().getColorDefinition("net.mograsim.logic.model.color.bit.x");
+ case Z:
+ return Preferences.current().getColorDefinition("net.mograsim.logic.model.color.bit.z");
+ case ZERO:
+ return Preferences.current().getColorDefinition("net.mograsim.logic.model.color.bit.zero");
+ default:
+ throw new IllegalArgumentException("Unknown enum constant: " + bitVector.getLSBit(0));
+ }
+ }
+
+ private BitVectorFormatter()
+ {
+ throw new UnsupportedOperationException("No BitVectorFormatter instances");
+ }
+}
\ No newline at end of file