[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[cdt-patch] Fire an Memory Change event when memory is set.
|
2002-10-26 Alain Magloire
* src/.../core/cdi/MemoryBlock.java (setValue): Generate
a MemoryChangeEvent when the value is set, gdb/mi will not
do it.
Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/ChangeLog,v
retrieving revision 1.22
diff -u -r1.22 ChangeLog
--- ChangeLog 26 Oct 2002 23:40:44 -0000 1.22
+++ ChangeLog 28 Oct 2002 20:37:40 -0000
@@ -1,3 +1,9 @@
+2002-10-26 Alain Magloire
+
+ * src/.../core/cdi/MemoryBlock.java (setValue): Generate
+ a MemoryChangeEvent when the value is set, gdb/mi will not
+ do it.
+
2002-10-25 Alain Magloire
* src/.../core/cdi/CThread.java (getStackFrames): Save the
Index: src/org/eclipse/cdt/debug/mi/core/cdi/MemoryBlock.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/MemoryBlock.java,v
retrieving revision 1.5
diff -u -r1.5 MemoryBlock.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/MemoryBlock.java 26 Oct 2002 23:40:13 -0000 1.5
+++ src/org/eclipse/cdt/debug/mi/core/cdi/MemoryBlock.java 28 Oct 2002 20:37:40 -0000
@@ -10,6 +10,7 @@
import org.eclipse.cdt.debug.mi.core.MISession;
import org.eclipse.cdt.debug.mi.core.command.CommandFactory;
import org.eclipse.cdt.debug.mi.core.command.MIDataWriteMemory;
+import org.eclipse.cdt.debug.mi.core.event.MIMemoryChangedEvent;
import org.eclipse.cdt.debug.mi.core.output.MIDataReadMemoryInfo;
import org.eclipse.cdt.debug.mi.core.output.MIInfo;
import org.eclipse.cdt.debug.mi.core.output.MIMemory;
@@ -134,8 +135,12 @@
* @see org.eclipse.cdt.debug.core.cdi.model.ICDIMemoryBlock#setValue(long, byte[])
*/
public void setValue(long offset, byte[] bytes) throws CDIException {
+ if (offset >= getLength() || offset + bytes.length > getLength()) {
+ throw new CDIException("Bad Offset");
+ }
MISession mi = getCTarget().getCSession().getMISession();
CommandFactory factory = mi.getCommandFactory();
+ Long[] addresses = new Long[bytes.length];
for (int i = 0; i < bytes.length; i++) {
long l = new Byte(bytes[i]).longValue();
String value = "0x" + Long.toHexString(l);
@@ -150,7 +155,11 @@
} catch (MIException e) {
throw new CDIException(e.getMessage());
}
+ addresses[i] = new Long(getStartAddress() + offset + i);
}
+ // If the assign was succesfull fire a MIChangedEvent()
+ MIMemoryChangedEvent change = new MIMemoryChangedEvent(addresses);
+ mi.fireEvent(change);
}
}