import java.util.Arrays;
import java.util.function.Consumer;
+import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.PlatformObject;
import org.eclipse.core.runtime.Status;
import org.eclipse.debug.core.DebugEvent;
import org.eclipse.swt.SWT;
import net.mograsim.logic.core.types.BitVector;
+import net.mograsim.logic.core.types.BitVectorFormatter;
import net.mograsim.machine.Machine;
import net.mograsim.machine.registers.Register;
import net.mograsim.plugin.MograsimActivator;
public String getValueString()
{
- return getMachine().getRegister(machineRegister).toString();
+ return BitVectorFormatter.formatAsString(getMachine().getRegister(machineRegister), false);
}
@Override
public void setValue(String expression) throws DebugException
{
- // TODO exception handling
- getMachine().setRegister(machineRegister, BitVector.parse(expression));
+ BitVector bitvector = BitVectorFormatter.parseUserBitVector(expression, machineRegister.getWidth());
+ if (bitvector == null)
+ throw new DebugException(
+ new Status(IStatus.ERROR, MograsimActivator.PLUGIN_ID, "Couldn't parse value string: " + expression, null));
+ getMachine().setRegister(machineRegister, bitvector);
}
@Override
@Override
public boolean verifyValue(String expression) throws DebugException
{
- // TODO do this prettier; also check length too
- try
- {
- BitVector.parse(expression);
- }
- catch (@SuppressWarnings("unused") Exception e)
- {
- return false;
- }
- return true;
+ return BitVectorFormatter.parseUserBitVector(expression, machineRegister.getWidth()) != null;
}
@Override