Serializing now serializes everything; among many other things:
[Mograsim.git] / net.mograsim.logic.model / src / net / mograsim / logic / model / snippets / highlevelstatehandlers / standard / atomic / WireForcingAtomicHighLevelStateHandler.java
index 2a18646..b800934 100644 (file)
@@ -10,7 +10,10 @@ import net.mograsim.logic.core.types.Bit;
 import net.mograsim.logic.core.types.BitVector;
 import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
 import net.mograsim.logic.model.model.wires.GUIWire;
+import net.mograsim.logic.model.serializing.IdentifierGetter;
+import net.mograsim.logic.model.snippets.SnippetDefinintion;
 import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.HighLevelStateHandlerContext;
+import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandlerSnippetSuppliers;
 
 public class WireForcingAtomicHighLevelStateHandler implements AtomicHighLevelStateHandler
 {
@@ -75,7 +78,7 @@ public class WireForcingAtomicHighLevelStateHandler implements AtomicHighLevelSt
        @Override
        public Object getHighLevelState()
        {
-               BitVector result = BitVector.of(Bit.U, logicWidth);
+               BitVector result = BitVector.of(Bit.ZERO, logicWidth);
                for (GUIWire wire : wiresToForceInverted)
                        if (wire.hasLogicModelBinding())
                                result = result.or(wire.getWireValues());
@@ -103,9 +106,25 @@ public class WireForcingAtomicHighLevelStateHandler implements AtomicHighLevelSt
                                wire.forceWireValues(vector);
        }
 
+       @Override
+       public WireForcingAtomicHighLevelStateHandlerParams getParamsForSerializing(IdentifierGetter idGetter)
+       {
+               WireForcingAtomicHighLevelStateHandlerParams params = new WireForcingAtomicHighLevelStateHandlerParams();
+               params.wiresToForce = wiresToForce.stream().map(w -> w.name).collect(Collectors.toList());
+               params.wiresToForceInverted = wiresToForceInverted.stream().map(w -> w.name).collect(Collectors.toList());
+               return params;
+       }
+
        public static class WireForcingAtomicHighLevelStateHandlerParams
        {
                public List<String> wiresToForce;
                public List<String> wiresToForceInverted;
        }
+
+       static
+       {
+               StandardHighLevelStateHandlerSnippetSuppliers.atomicHandlerSupplier.setSnippetSupplier(
+                               WireForcingAtomicHighLevelStateHandler.class.getCanonicalName(),
+                               SnippetDefinintion.create(WireForcingAtomicHighLevelStateHandlerParams.class, WireForcingAtomicHighLevelStateHandler::new));
+       }
 }
\ No newline at end of file