X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.model%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2Fsnippets%2Fhighlevelstatehandlers%2Fstandard%2Fatomic%2FBitVectorSplittingAtomicHighLevelStateHandler.java;h=c4a56b0c1db02d7f044d43bf2b57b4d45651c04d;hb=5d688812b8a5c62e7b3b47464be463266f066f94;hp=4b1139beeaf02bdadde4643cb09350df458f94f0;hpb=8183e70989d1293764b045a8f8903b33fc2e8cb3;p=Mograsim.git diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/atomic/BitVectorSplittingAtomicHighLevelStateHandler.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/atomic/BitVectorSplittingAtomicHighLevelStateHandler.java index 4b1139be..c4a56b0c 100644 --- a/net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/atomic/BitVectorSplittingAtomicHighLevelStateHandler.java +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/atomic/BitVectorSplittingAtomicHighLevelStateHandler.java @@ -3,6 +3,7 @@ package net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic import java.util.ArrayList; import java.util.List; +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.snippets.highlevelstatehandlers.standard.HighLevelStateHandlerContext; @@ -60,7 +61,12 @@ public class BitVectorSplittingAtomicHighLevelStateHandler implements AtomicHigh BitVector result = BitVector.of(); for (int partIndex = 0; partIndex < vectorPartTargets.size(); partIndex++) { - BitVector vectorPart = (BitVector) component.getHighLevelState(vectorPartTargets.get(partIndex)); + Object subStateUncasted = component.getHighLevelState(vectorPartTargets.get(partIndex)); + BitVector vectorPart; + if (subStateUncasted instanceof Bit) + vectorPart = BitVector.of((Bit) subStateUncasted); + else + vectorPart = (BitVector) subStateUncasted; if (vectorPart.length() != vectorPartLengthes.get(partIndex)) throw new IllegalArgumentException( "Illegal vector part length: " + vectorPart.length() + "; expected " + vectorPartLengthes.get(partIndex));