X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.ui%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fui%2Fmodeladapter%2Fcomponentadapters%2FNandGateAdapter.java;fp=net.mograsim.logic.ui%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fui%2Fmodeladapter%2Fcomponentadapters%2FNandGateAdapter.java;h=761689a3d56520f487f6e5d7d4ca4f2bc2a6d0b6;hb=054e77aca4d4de146205ea64edd60923db5e23d9;hp=0000000000000000000000000000000000000000;hpb=996ddc75e1cbf99b266976b1c5827db75cc902be;p=Mograsim.git diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/componentadapters/NandGateAdapter.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/componentadapters/NandGateAdapter.java new file mode 100644 index 00000000..761689a3 --- /dev/null +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/componentadapters/NandGateAdapter.java @@ -0,0 +1,34 @@ +package net.mograsim.logic.ui.modeladapter.componentadapters; + +import java.util.Map; + +import net.mograsim.logic.core.components.gates.AndGate; +import net.mograsim.logic.core.components.gates.NotGate; +import net.mograsim.logic.core.timeline.Timeline; +import net.mograsim.logic.core.wires.Wire; +import net.mograsim.logic.ui.model.components.GUINandGate; +import net.mograsim.logic.ui.model.wires.Pin; +import net.mograsim.logic.ui.modeladapter.LogicModelParameters; + +public class NandGateAdapter implements ComponentAdapter +{ + @Override + public Class getSupportedClass() + { + return GUINandGate.class; + } + + @Override + @SuppressWarnings("unused") // AndGate and NotGate + public void createAndLinkComponent(Timeline timeline, LogicModelParameters params, GUINandGate guiComponent, + Map logicWiresPerPin) + { + Wire i0 = logicWiresPerPin.get(guiComponent.getInputPins().get(0)); + Wire i1 = logicWiresPerPin.get(guiComponent.getInputPins().get(1)); + Wire o = logicWiresPerPin.get(guiComponent.getOutputPin()); + Wire w = new Wire(timeline, guiComponent.getOutputPin().logicWidth, 1); + + new AndGate(timeline, 1, w.createReadWriteEnd(), i0.createReadOnlyEnd(), i1.createReadOnlyEnd()); + new NotGate(timeline, Math.max(1, params.gateProcessTime - 2), w.createReadOnlyEnd(), o.createReadWriteEnd()); + } +} \ No newline at end of file