diff --git a/src/main/dig/lib/74xx/arithmetic/74181.dig b/src/main/dig/lib/74xx/arithmetic/74181.dig index bb063596a..f6bd075bc 100644 --- a/src/main/dig/lib/74xx/arithmetic/74181.dig +++ b/src/main/dig/lib/74xx/arithmetic/74181.dig @@ -731,19 +731,6 @@ - - Or - - - inverterConfig - - In_1 - In_2 - - - - - NOr @@ -1590,6 +1577,11 @@ end loop + + NAnd + + + diff --git a/src/main/java/de/neemann/digital/draw/elements/Stats.java b/src/main/java/de/neemann/digital/draw/elements/Stats.java index c5e428a0e..e38a0f067 100644 --- a/src/main/java/de/neemann/digital/draw/elements/Stats.java +++ b/src/main/java/de/neemann/digital/draw/elements/Stats.java @@ -113,6 +113,7 @@ public class Stats { private final ElementLibrary library; private TreeMap map; + private int invertedInputs; /** * Creates a new instance. @@ -144,6 +145,8 @@ public class Stats { } private void add(ElementTypeDescription description, ElementAttributes attr) throws ElementNotFoundException { + invertedInputs += attr.get(Keys.INVERTER_CONFIG).size(); + int transistors = 0; Circuit childCircuit = null; if (description instanceof ElementLibrary.ElementTypeDescriptionCustom) { @@ -175,31 +178,10 @@ public class Stats { */ public TableModel getTableModel() { final ArrayList entries = new ArrayList<>(map.values()); - entries.add(new Row() { - @Override - public int getCount() { - return 0; - } - - @Override - public String getDescription() { - return Lang.get("stat_sum"); - } - - @Override - public int getTransistorsEach() { - return 0; - } - - @Override - public void setTransistorsEach(int transistors) { - } - - @Override - public boolean isEditable() { - return false; - } + if (invertedInputs > 0) + entries.add(new Entry(Lang.get("key_inverterConfig"), invertedInputs, true, 2)); + entries.add(new Entry(Lang.get("stat_sum"), 0, false, 0) { @Override public int getTransistors() { int tr = 0; @@ -317,64 +299,11 @@ public class Stats { } - private static final class Entry implements Row { - private final EntryKey key; - private int transistors; - private final boolean editable; - private int count; - - private Entry(EntryKey key, boolean editable) { - this.key = key; - transistors = key.transistors; - this.editable = editable; - } - - private void addOne() { - count++; - } - - @Override - public String toString() { - return count + " x " + key; - } - - @Override - public int getCount() { - return count; - } - - @Override - public String getDescription() { - return key.getDescription(); - } - - @Override - public void setTransistorsEach(int t) { - transistors = t; - } - - @Override - public int getTransistorsEach() { - return transistors; - } - - @Override - public int getTransistors() { - return count * transistors; - } - - @Override - public boolean isEditable() { - return editable; - } - } - private interface TransistorCalculator { int transistors(ElementAttributes attr); } private interface Row { - int getCount(); String getDescription(); @@ -388,6 +317,61 @@ public class Stats { boolean isEditable(); } + //Entry can not be final because its overridden. Maybe checkstyle has a bug? + //CHECKSTYLE.OFF: FinalClass + private static class Entry implements Row { + private final String description; + private final boolean editable; + private int count; + private int transistors; + + private Entry(EntryKey key, boolean editable) { + this(key.getDescription(), 0, editable, key.transistors); + } + + private Entry(String description, int count, boolean editable, int transistors) { + this.description = description; + this.count = count; + this.editable = editable; + this.transistors = transistors; + } + + @Override + public int getCount() { + return count; + } + + @Override + public String getDescription() { + return description; + } + + @Override + public int getTransistorsEach() { + return transistors; + } + + @Override + public void setTransistorsEach(int transistors) { + this.transistors = transistors; + } + + @Override + public int getTransistors() { + return count * transistors; + } + + @Override + public boolean isEditable() { + return editable; + } + + private void addOne() { + count++; + } + } + //CHECKSTYLE.ON: FinalClass + private static final class MyTableModel implements TableModel { private final List entries; private ArrayList listeners = new ArrayList<>(); diff --git a/src/main/java/de/neemann/digital/draw/model/InverterConfig.java b/src/main/java/de/neemann/digital/draw/model/InverterConfig.java index acce89ae2..e09845f9f 100644 --- a/src/main/java/de/neemann/digital/draw/model/InverterConfig.java +++ b/src/main/java/de/neemann/digital/draw/model/InverterConfig.java @@ -110,4 +110,13 @@ public class InverterConfig { public int hashCode() { return inputs != null ? inputs.hashCode() : 0; } + + /** + * @return the number of inverted inputs + */ + public int size() { + if (inputs == null) + return 0; + return inputs.size(); + } }