{
public void registerObserver(LogicObserver ob);
+ public void deregisterObserver(LogicObserver ob);
+
public void notifyObservers();
-// public InnerState getInnerState();
}
@Override
public List<ReadEnd> getAllInputs()
{
- ArrayList<ReadEnd> wires = new ArrayList<ReadEnd>(Arrays.asList(inputs));
+ ArrayList<ReadEnd> wires = new ArrayList<>(Arrays.asList(inputs));
wires.add(select);
return Collections.unmodifiableList(wires);
}
package net.mograsim.logic.core.tests;
-import static org.junit.Assert.assertTrue;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.fail;
import net.mograsim.logic.core.wires.Wire.ReadEnd;
import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
+@SuppressWarnings("unused")
class ComponentTest
{
private Timeline t = new Timeline(11);
public Timeline getTimeline()
{
return t;
- };
+ }
@Override
public void paint(Graphics some_g)
g.setFont(g.getFont().deriveFont(Math.min(height, width) / 40f));
}
+ @SuppressWarnings("static-method")
private void drawString(Graphics g, String s, int x, int y, double anchorX, double anchorY)
{
int h = g.getFontMetrics().getAscent();
public Timeline(int initCapacity)
{
- events = new PriorityQueue<InnerEvent>(initCapacity);
+ events = new PriorityQueue<>(initCapacity);
eventAddedListener = new ArrayList<>();
time = () -> lastTimeUpdated;
{
if (bitVector == null)
return "null";
- else
- return bitVector.toString();
+ return bitVector.toString();
}
public static ColorDefinition formatAsColor(ReadEnd end)
// TODO maybe find a color assignment for multiple-bit bit vectors?
if (bitVector == null || bitVector.length() != 1)
return new ColorDefinition(BuiltInColor.COLOR_BLACK);
- else
- switch (bitVector.getBit(0))
- {
- case ONE:
- return new ColorDefinition(BuiltInColor.COLOR_GREEN);
- case U:
- return new ColorDefinition(BuiltInColor.COLOR_CYAN);
- case X:
- return new ColorDefinition(BuiltInColor.COLOR_RED);
- case Z:
- return new ColorDefinition(BuiltInColor.COLOR_YELLOW);
- case ZERO:
- return new ColorDefinition(BuiltInColor.COLOR_GRAY);
- default:
- throw new IllegalArgumentException("Unknown enum constant: " + bitVector.getBit(0));
- }
+ switch (bitVector.getBit(0))
+ {
+ case ONE:
+ return new ColorDefinition(BuiltInColor.COLOR_GREEN);
+ case U:
+ return new ColorDefinition(BuiltInColor.COLOR_CYAN);
+ case X:
+ return new ColorDefinition(BuiltInColor.COLOR_RED);
+ case Z:
+ return new ColorDefinition(BuiltInColor.COLOR_YELLOW);
+ case ZERO:
+ return new ColorDefinition(BuiltInColor.COLOR_GRAY);
+ default:
+ throw new IllegalArgumentException("Unknown enum constant: " + bitVector.getBit(0));
+ }
}
private BitVectorFormatter()
{
private BitVector values;
public final int travelTime;
- private List<ReadEnd> attached = new ArrayList<ReadEnd>();
+ private List<ReadEnd> attached = new ArrayList<>();
public final int length;
- private List<ReadWriteEnd> inputs = new ArrayList<ReadWriteEnd>();
- private Timeline timeline;
+ List<ReadWriteEnd> inputs = new ArrayList<>();
+ Timeline timeline;
public Wire(Timeline timeline, int length, int travelTime)
{
{
if (values.equals(newValues))
return;
- BitVector oldValues = values;
+// BitVector oldValues = values;
values = newValues;
- notifyObservers(oldValues);
+ notifyObservers();
}
- private void recalculate()
+ void recalculate()
{
switch (inputs.size())
{
*
* @author Fabian Stemmler
*/
- private void attachEnd(ReadEnd end)
+ void attachEnd(ReadEnd end)
{
attached.add(end);
}
- private void detachEnd(ReadEnd end)
+ void detachEnd(ReadEnd end)
{
attached.remove(end);
}
- private void notifyObservers(BitVector oldValues)
+ private void notifyObservers()
{
for (ReadEnd o : attached)
- o.update(oldValues);
+ o.update();
}
/**
return new ReadEnd();
}
- private void registerInput(ReadWriteEnd toRegister)
+ void registerInput(ReadWriteEnd toRegister)
{
inputs.add(toRegister);
}
*/
public class ReadEnd implements LogicObservable
{
- private List<LogicObserver> observers = new ArrayList<LogicObserver>();
+ private List<LogicObserver> observers = new ArrayList<>();
- private ReadEnd()
+ ReadEnd()
{
super();
Wire.this.attachEnd(this);
}
- public void update(BitVector oldValues)
+ public void update()
{
notifyObservers();
}
observers.add(ob);
}
+ @Override
+ public void deregisterObserver(LogicObserver ob)
+ {
+ observers.remove(ob);
+ }
+
@Override
public void notifyObservers()
{
private boolean open;
private BitVector inputValues;
- private ReadWriteEnd()
+ ReadWriteEnd()
{
super();
open = true;