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
{
@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());
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