simplified DT switches, see #255

This commit is contained in:
hneemann 2019-02-27 11:08:09 +01:00
parent 12adf74a2b
commit 714043ce03
2 changed files with 6 additions and 6 deletions

View File

@ -67,7 +67,7 @@ public final class PlainSwitch implements NodeInterface {
input2.addObserverToValue(this).checkBits(bits, null);
switch (unidirectional) {
case NO:
switchModel = createSwitchModel(input1, input2, output1, output2, true, true);
switchModel = createSwitchModel(input1, input2, output1, output2, false);
break;
case FROM1TO2:
switchModel = new UniDirectionalSwitch(input1, output2);
@ -82,13 +82,13 @@ public final class PlainSwitch implements NodeInterface {
static SwitchModel createSwitchModel(
ObservableValue input1, ObservableValue input2,
ObservableValue output1, ObservableValue output2,
boolean setOpenContactToHighZ, boolean optimizeConstants) throws NodeException {
boolean isDoubleThrow) throws NodeException {
if (input1 instanceof CommonBusValue) {
if (input2 instanceof CommonBusValue) {
final CommonBusValue in1 = (CommonBusValue) input1;
final CommonBusValue in2 = (CommonBusValue) input2;
if (optimizeConstants) {
if (!isDoubleThrow) {
ObservableValue constant = in1.searchConstant();
if (constant != null)
return new UniDirectionalSwitch(constant, output2);
@ -105,7 +105,7 @@ public final class PlainSwitch implements NodeInterface {
return new UniDirectionalSwitch(input1, output2);
} else {
if (input2 instanceof CommonBusValue) {
return new UniDirectionalSwitch(input2, output1, setOpenContactToHighZ);
return new UniDirectionalSwitch(input2, output1, !isDoubleThrow);
} else {
throw new NodeException(Lang.get("err_switchHasNoNet"), output1, output2);
}

View File

@ -42,11 +42,11 @@ public final class PlainSwitchDT implements NodeInterface {
if (inA != null && inB != null) {
inB.addObserverToValue(this).checkBits(bits, null);
s1 = PlainSwitch.createSwitchModel(inA, inB, outputA, outputB, inC == null, false);
s1 = PlainSwitch.createSwitchModel(inA, inB, outputA, outputB, inC != null);
}
if (inA != null && inC != null) {
inC.addObserverToValue(this).checkBits(bits, null);
s2 = PlainSwitch.createSwitchModel(inA, inC, outputA, outputC, inB == null, false);
s2 = PlainSwitch.createSwitchModel(inA, inC, outputA, outputC, inB != null);
}
}