diff --git a/src/main/java/de/neemann/digital/core/ObservableValue.java b/src/main/java/de/neemann/digital/core/ObservableValue.java index 5ed81d2c2..e5eeff499 100644 --- a/src/main/java/de/neemann/digital/core/ObservableValue.java +++ b/src/main/java/de/neemann/digital/core/ObservableValue.java @@ -22,8 +22,9 @@ public class ObservableValue extends Value { observers = new ArrayList<>(); } - public void addObserver(Observer observer) { + public ObservableValue addObserver(Observer observer) { observers.add(observer); + return this; } public void removeObserver(Observer observer) { diff --git a/src/main/java/de/neemann/digital/core/arithmetic/Add.java b/src/main/java/de/neemann/digital/core/arithmetic/Add.java index 9f5ee05c0..3731aa73b 100644 --- a/src/main/java/de/neemann/digital/core/arithmetic/Add.java +++ b/src/main/java/de/neemann/digital/core/arithmetic/Add.java @@ -53,12 +53,9 @@ public class Add extends Node implements Part { @Override public void setInputs(ObservableValue... inputs) throws BitsException { - a = inputs[0]; - a.addObserver(this); - b = inputs[1]; - b.addObserver(this); - c_in = inputs[2]; - c_in.addObserver(this); + a = inputs[0].addObserver(this); + b = inputs[1].addObserver(this); + c_in = inputs[2].addObserver(this); if (a.getBits() != bits) throw new BitsException("wrongBitCount", a); diff --git a/src/main/java/de/neemann/digital/core/arithmetic/Mul.java b/src/main/java/de/neemann/digital/core/arithmetic/Mul.java index 432fa7292..6a967e17d 100644 --- a/src/main/java/de/neemann/digital/core/arithmetic/Mul.java +++ b/src/main/java/de/neemann/digital/core/arithmetic/Mul.java @@ -39,10 +39,8 @@ public class Mul extends Node implements Part { @Override public void setInputs(ObservableValue... inputs) throws NodeException { - a = inputs[0]; - a.addObserver(this); - b = inputs[1]; - b.addObserver(this); + a = inputs[0].addObserver(this); + b = inputs[1].addObserver(this); } @Override diff --git a/src/main/java/de/neemann/digital/core/basic/Not.java b/src/main/java/de/neemann/digital/core/basic/Not.java index 02b745863..e078e7cc6 100644 --- a/src/main/java/de/neemann/digital/core/basic/Not.java +++ b/src/main/java/de/neemann/digital/core/basic/Not.java @@ -38,8 +38,7 @@ public class Not extends Node implements Part { @Override public void setInputs(ObservableValue... inputs) throws NodeException { - input = inputs[0]; - input.addObserver(this); + input = inputs[0].addObserver(this); } @Override diff --git a/src/main/java/de/neemann/digital/core/basic/XOr.java b/src/main/java/de/neemann/digital/core/basic/XOr.java index d19799fcd..515c51407 100644 --- a/src/main/java/de/neemann/digital/core/basic/XOr.java +++ b/src/main/java/de/neemann/digital/core/basic/XOr.java @@ -38,10 +38,8 @@ public class XOr extends Node implements Part { @Override public void setInputs(ObservableValue... inputs) throws BitsException { - a = inputs[0]; - a.addObserver(this); - b = inputs[1]; - b.addObserver(this); + a = inputs[0].addObserver(this); + b = inputs[1].addObserver(this); if (a.getBits() != bits) throw new BitsException("wrongBitCount", a); diff --git a/src/main/java/de/neemann/digital/core/flipflops/D_FF.java b/src/main/java/de/neemann/digital/core/flipflops/D_FF.java index bcb0d90f8..29309bc3b 100644 --- a/src/main/java/de/neemann/digital/core/flipflops/D_FF.java +++ b/src/main/java/de/neemann/digital/core/flipflops/D_FF.java @@ -45,10 +45,8 @@ public class D_FF extends Node implements Part { @Override public void setInputs(ObservableValue... inputs) throws BitsException { - dVal = inputs[0]; - dVal.addObserver(this); - clockVal = inputs[1]; - clockVal.addObserver(this); + dVal = inputs[0].addObserver(this); + clockVal = inputs[1].addObserver(this); if (dVal.getBits() != bits) throw new BitsException("wrongBitCount", dVal); diff --git a/src/main/java/de/neemann/digital/core/flipflops/JK_FF.java b/src/main/java/de/neemann/digital/core/flipflops/JK_FF.java index 9b7c082c4..ae0ae0daa 100644 --- a/src/main/java/de/neemann/digital/core/flipflops/JK_FF.java +++ b/src/main/java/de/neemann/digital/core/flipflops/JK_FF.java @@ -49,12 +49,9 @@ public class JK_FF extends Node implements Part { @Override public void setInputs(ObservableValue... inputs) throws BitsException { - jVal = inputs[0]; - jVal.addObserver(this); - clockVal = inputs[1]; - clockVal.addObserver(this); - kVal = inputs[2]; - kVal.addObserver(this); + jVal = inputs[0].addObserver(this); + clockVal = inputs[1].addObserver(this); + kVal = inputs[2].addObserver(this); if (jVal.getBits() != 1) throw new BitsException("wrongBitCount", jVal); diff --git a/src/main/java/de/neemann/digital/core/flipflops/RS_FF.java b/src/main/java/de/neemann/digital/core/flipflops/RS_FF.java index 68ff764a2..b3a936c5a 100644 --- a/src/main/java/de/neemann/digital/core/flipflops/RS_FF.java +++ b/src/main/java/de/neemann/digital/core/flipflops/RS_FF.java @@ -48,12 +48,9 @@ public class RS_FF extends Node implements Part { @Override public void setInputs(ObservableValue... inputs) throws BitsException { - jVal = inputs[0]; - jVal.addObserver(this); - clockVal = inputs[1]; - clockVal.addObserver(this); - kVal = inputs[2]; - kVal.addObserver(this); + jVal = inputs[0].addObserver(this); + clockVal = inputs[1].addObserver(this); + kVal = inputs[2].addObserver(this); if (jVal.getBits() != 1) throw new BitsException("wrongBitCount", jVal); diff --git a/src/main/java/de/neemann/digital/core/flipflops/T_FF.java b/src/main/java/de/neemann/digital/core/flipflops/T_FF.java index db8fa8c46..686da634f 100644 --- a/src/main/java/de/neemann/digital/core/flipflops/T_FF.java +++ b/src/main/java/de/neemann/digital/core/flipflops/T_FF.java @@ -42,8 +42,7 @@ public class T_FF extends Node implements Part { @Override public void setInputs(ObservableValue... inputs) throws BitsException { - clockVal = inputs[0]; - clockVal.addObserver(this); + clockVal = inputs[0].addObserver(this); if (clockVal.getBits() != 1) throw new BitsException("carryIsABit", clockVal); diff --git a/src/main/java/de/neemann/digital/core/wiring/Delay.java b/src/main/java/de/neemann/digital/core/wiring/Delay.java index ca653538b..9a3a4c306 100644 --- a/src/main/java/de/neemann/digital/core/wiring/Delay.java +++ b/src/main/java/de/neemann/digital/core/wiring/Delay.java @@ -42,8 +42,7 @@ public class Delay extends Node implements Part { @Override public void setInputs(ObservableValue... inputs) throws NodeException { - input = inputs[0]; - input.addObserver(this); + input = inputs[0].addObserver(this); if (input.getBits() != bits) throw new BitsException("wrongBitCountInDelay", input, output);