Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] Implementing editing features of the memory view

Implementing editing features of the memory view.

Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.core/ChangeLog,v
retrieving revision 1.34
diff -u -r1.34 ChangeLog
--- ChangeLog 28 Oct 2002 02:46:38 -0000 1.34
+++ ChangeLog 28 Oct 2002 23:29:43 -0000
@@ -1,3 +1,8 @@
+2002-10-28 Mikhail Khodjaiants
+ Implementing editing features of the memory view.
+ * IFormattedMemoryBlockRow.java
+ * CFormattedMemoryBlock.java

 2002-10-27 Mikhail Khodjaiants
  * IFormattedMemoryBlock.java: added the 'setItemValue' method.
  * CFormattedMemoryBlock.java: implementation of the 'setItemValue' method.
Index: src/org/eclipse/cdt/debug/core/IFormattedMemoryBlockRow.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/IFormattedMemoryBlockRow.java,v
retrieving revision 1.1
diff -u -r1.1 IFormattedMemoryBlockRow.java
--- src/org/eclipse/cdt/debug/core/IFormattedMemoryBlockRow.java 6 Aug 2002 18:56:15 -0000 1.1
+++ src/org/eclipse/cdt/debug/core/IFormattedMemoryBlockRow.java 28 Oct 2002 23:29:43 -0000
@@ -34,4 +34,6 @@
   * @return the ASCII dump for this row
   */
  String getASCII();

+ Integer[] getDirtyItems();
 }
Index: src/org/eclipse/cdt/debug/internal/core/model/CFormattedMemoryBlock.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CFormattedMemoryBlock.java,v
retrieving revision 1.7
diff -u -r1.7 CFormattedMemoryBlock.java
--- src/org/eclipse/cdt/debug/internal/core/model/CFormattedMemoryBlock.java 28 Oct 2002 02:46:38 -0000 1.7
+++ src/org/eclipse/cdt/debug/internal/core/model/CFormattedMemoryBlock.java 28 Oct 2002 23:29:44 -0000
@@ -6,7 +6,7 @@
 package org.eclipse.cdt.debug.internal.core.model;
 
 import java.util.ArrayList;
-import java.util.HashSet;
+import java.util.Arrays;
 import java.util.List;
 
 import org.eclipse.cdt.debug.core.CDebugCorePlugin;
@@ -38,6 +38,7 @@
   private long fAddress;
   private String[] fData;
   private String fAscii;
+  private boolean[] fDirtyItems;
 
   /**
    * Constructor for CFormattedMemoryBlockRow.
@@ -47,6 +48,8 @@
    fAddress = address;
    fData = data;
    fAscii = ascii;
+   fDirtyItems = new boolean[fData.length];
+   Arrays.fill( fDirtyItems, false );
   }
 
   /* (non-Javadoc)
@@ -72,6 +75,26 @@
   {
    return fData;
   }
+
+  protected void setData( int colIndex, String newValue )
+  {
+   if ( colIndex < fData.length )
+   {
+    fData[colIndex] = newValue;
+    fDirtyItems[colIndex] = true;
+   }
+  }
+  
+  public Integer[] getDirtyItems()
+  {
+   ArrayList list = new ArrayList( fDirtyItems.length );
+   for ( int i = 0; i < fDirtyItems.length; ++i )
+   {
+    if ( fDirtyItems[i] )
+     list.add( new Integer( i ) );
+   }
+   return (Integer[])list.toArray( new Integer[list.size()] );
+  }
  }
 
  private String fAddressExpression;
@@ -84,7 +107,6 @@
  private char fPaddingChar = '.';
  private List fRows = null;
  private Long[] fChangedAddresses = new Long[0];
- private HashSet fDirtyBytes;
 
  /**
   * Constructor for CFormattedMemoryBlock.
@@ -123,7 +145,6 @@
   fNumberOfColumns = numberOfColumns;
   fDisplayAscii = true;
   fPaddingChar = paddingChar;  
-  fDirtyBytes = new HashSet();
   getCDISession().getEventManager().addEventListener( this );
  }
 
@@ -164,7 +185,7 @@
   */
  public boolean displayASCII()
  {
-  return fDisplayAscii;
+  return ( getWordSize() == IFormattedMemoryBlock.MEMORY_SIZE_BYTE && fDisplayAscii );
  }
 
  /* (non-Javadoc)
@@ -347,8 +368,6 @@
    fCDIMemoryBlock = null;
   }
   getCDISession().getEventManager().removeEventListener( this );
-  fDirtyBytes.clear();
-  fDirtyBytes = null;
  }
 
  /* (non-Javadoc)
@@ -436,7 +455,6 @@
  private void handleChangedEvent( ICDIMemoryChangedEvent event )
  {
   resetRows();
-  resetDirtyBytes();  
   setChangedAddresses( event.getAddresses() );
   fireChangeEvent( DebugEvent.CONTENT );
  }
@@ -477,10 +495,15 @@
   */
  public void setItemValue( int index, String newValue ) throws DebugException
  {
- }

- private void resetDirtyBytes()
- {
-  fDirtyBytes.clear();
+  int rowIndex = index / getNumberOfColumns();
+  if ( rowIndex < getRows().length )
+  {
+   CFormattedMemoryBlockRow row = (CFormattedMemoryBlockRow)getRows()[rowIndex];
+   int colIndex = index % getNumberOfColumns();
+   if ( colIndex < row.getData().length )
+   {
+    row.setData( colIndex, newValue );
+   }   
+  }
  }
 }


Back to the top