Added support of the formatting actions of the Memory view.
Index:
ChangeLog
===================================================================
RCS
file: /home/tools/org.eclipse.cdt.debug.core/ChangeLog,v
retrieving revision
1.45
diff -u -r1.45 ChangeLog
--- ChangeLog 1 Nov 2002 23:21:32
-0000 1.45
+++ ChangeLog 4 Nov 2002 01:39:25 -0000
@@ -1,3 +1,10
@@
+2002-11-03 Mikhail Khodjaiants
+ Added support of the formatting
actions of the Memory view.
+ * IFormattedMemoryBlock.java
+ *
CFormattedMemoryBlock.java
+ * CDebugTarget.java
+ *
CDebugUtils.java
+
2002-11-01 Mikhail
Khodjaiants
Added conversion utilities to support decimal format
in the Memory View.
* CDebugUtils.java
Index:
src/org/eclipse/cdt/debug/core/IFormattedMemoryBlock.java
===================================================================
RCS
file:
/home/tools/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/IFormattedMemoryBlock.java,v
retrieving
revision 1.12
diff -u -r1.12 IFormattedMemoryBlock.java
---
src/org/eclipse/cdt/debug/core/IFormattedMemoryBlock.java 30 Oct 2002
23:36:18 -0000 1.12
+++
src/org/eclipse/cdt/debug/core/IFormattedMemoryBlock.java 4 Nov 2002
01:39:25 -0000
@@ -130,4 +130,8 @@
void saveChanges() throws
DebugException;
void refresh() throws
DebugException;
+
+ boolean canChangeFormat( int format
);
+
+ boolean isLittleEndian();
}
Index:
src/org/eclipse/cdt/debug/internal/core/CDebugUtils.java
===================================================================
RCS
file:
/home/tools/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CDebugUtils.java,v
retrieving
revision 1.6
diff -u -r1.6 CDebugUtils.java
---
src/org/eclipse/cdt/debug/internal/core/CDebugUtils.java 1 Nov 2002
23:21:32 -0000 1.6
+++
src/org/eclipse/cdt/debug/internal/core/CDebugUtils.java 4 Nov 2002
01:39:26 -0000
@@ -135,42 +135,58 @@
return
0;
}
- public static short toShort(
char[] bytes, boolean le )
+ public static byte toByte( char[] bytes,
boolean le )
{
if ( bytes.length != 2
)
return 0;
- return Short.parseShort(
bytesToString( bytes, le, true ), 16 );
+ return
(byte)Long.parseLong( bytesToString( bytes, le, true ), 16
);
}
- public static int
toUnsignedShort( char[] bytes, boolean le )
+ public static short
toUnsignedByte( char[] bytes, boolean le
)
{
if ( bytes.length != 2
)
return 0;
- return Integer.parseInt(
bytesToString( bytes, le, false ), 16 );
+ return
(short)Long.parseLong( bytesToString( bytes, le, false ), 16
);
}
- public static int toInt(
char[] bytes, boolean le )
+ public static short toShort( char[] bytes,
boolean le )
{
if ( bytes.length != 4
)
return 0;
- return Integer.parseInt(
bytesToString( bytes, le, true ), 16 );
+ return
(short)Long.parseLong( bytesToString( bytes, le, true ), 16
);
}
- public static long
toUnsignedInt( char[] bytes, boolean le )
+ public static int
toUnsignedShort( char[] bytes, boolean le
)
{
if ( bytes.length != 4
)
return 0;
- return Long.parseLong(
bytesToString( bytes, le, false ), 16 );
+ return
(int)Long.parseLong( bytesToString( bytes, le, false ), 16
);
}
- public static long toLong(
char[] bytes, boolean le )
+ public static int toInt( char[] bytes,
boolean le )
{
- return toInt( bytes, le
);
+ if ( bytes.length != 8 )
+ return
0;
+ return (int)Long.parseLong( bytesToString( bytes, le, true ),
16 );
+ }
+
+ public static long toUnsignedInt(
char[] bytes, boolean le )
+ {
+ if ( bytes.length != 8
)
+ return 0;
+ return (long)Long.parseLong(
bytesToString( bytes, le, false ), 16 );
+ }
+
+ public static long toLongLong( char[] bytes, boolean le
)
+ {
+ if ( bytes.length != 16
)
+ return 0;
+ return (long)Long.parseLong(
bytesToString( bytes, le, false ), 16
);
}
- public static long toUnsignedLong(
char[] bytes, boolean le )
+ public static long toUnsignedLongLong(
char[] bytes, boolean le )
{
- return
toUnsignedInt( bytes, le );
+ return
0;
}
private static String
bytesToString( char[] bytes, boolean le, boolean signed )
@@ -188,41 +204,7
@@
{
System.arraycopy( bytes, 0,
copy, 0, copy.length );
}
- StringBuffer sb =
new StringBuffer( copy.length );
- if ( signed
)
- {
- switch( copy[0]
)
- {
- case
'0':
- case '1':
- case
'2':
- case '3':
- case
'4':
- case '5':
- case
'6':
- case
'7':
- break;
- case
'8':
- case '9':
- case
'a':
- case 'A':
- case
'b':
- case 'B':
- case
'c':
- case 'C':
- case
'd':
- case 'D':
- case
'e':
- case 'E':
- case
'f':
- case
'F':
- sb.append( '-'
);
- copy[0] -=
'8';
- break;
- }
- }
- sb.append(
copy );
- return sb.toString();
+ return new
String( copy );
}
public static
String prependString( String text, int length, char ch )
Index:
src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java
===================================================================
RCS
file:
/home/tools/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java,v
retrieving
revision 1.52
diff -u -r1.52 CDebugTarget.java
---
src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java 1 Nov 2002
23:17:17 -0000 1.52
+++
src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java 4 Nov 2002
01:39:29 -0000
@@ -845,6 +845,8 @@
return
getMemoryManager();
if ( adapter.equals(
IDebuggerProcessSupport.class ) )
return
this;
+ if ( adapter.equals( IExecFileInfo.class )
)
+ return this;
return
super.getAdapter( adapter );
}
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.13
diff -u -r1.13 CFormattedMemoryBlock.java
---
src/org/eclipse/cdt/debug/internal/core/model/CFormattedMemoryBlock.java 31
Oct 2002 22:28:21 -0000 1.13
+++
src/org/eclipse/cdt/debug/internal/core/model/CFormattedMemoryBlock.java 4
Nov 2002 01:39:27 -0000
@@ -10,6 +10,7 @@
import
java.util.List;
import
org.eclipse.cdt.debug.core.CDebugCorePlugin;
+import
org.eclipse.cdt.debug.core.IExecFileInfo;
import
org.eclipse.cdt.debug.core.IFormattedMemoryBlock;
import
org.eclipse.cdt.debug.core.IFormattedMemoryBlockRow;
import
org.eclipse.cdt.debug.core.cdi.CDIException;
@@ -264,7 +265,9
@@
*/
public boolean
displayASCII()
{
- return ( getWordSize() ==
IFormattedMemoryBlock.MEMORY_SIZE_BYTE && fDisplayAscii
);
+ return ( getWordSize() ==
IFormattedMemoryBlock.MEMORY_SIZE_BYTE &&
+
/*getFormat() == IFormattedMemoryBlock.MEMORY_FORMAT_HEX &&*/
+ fDisplayAscii
);
}
/* (non-Javadoc)
@@ -351,6
+354,7 @@
int
numberOfColumns ) throws
DebugException
{
resetRows();
+ fFormat
= format;
fWordSize =
wordSize;
fNumberOfRows =
numberOfRows;
fNumberOfColumns = numberOfColumns;
@@
-366,6 +370,7 @@
char
paddingChar ) throws
DebugException
{
resetRows();
+ fFormat
= format;
fWordSize =
wordSize;
fNumberOfRows =
numberOfRows;
fNumberOfColumns = numberOfColumns;
@@
-692,5 +697,37 @@
private DirtyBytes createDirtyBytes( int size
)
{
return new DirtyBytes( size
);
+ }
+
+ /**
+ * @see
org.eclipse.cdt.debug.core.IFormattedMemoryBlock#canChangeFormat(int)
+
*/
+ public boolean canChangeFormat( int format
)
+ {
+ switch( format
)
+ {
+ case
IFormattedMemoryBlock.MEMORY_FORMAT_HEX:
+ return
true;
+ case
IFormattedMemoryBlock.MEMORY_FORMAT_SIGNED_DECIMAL:
+ return
( /*getWordSize() != IFormattedMemoryBlock.MEMORY_SIZE_BYTE
&&*/
+ getWordSize() !=
IFormattedMemoryBlock.MEMORY_SIZE_DOUBLE_WORD );
+ case
IFormattedMemoryBlock.MEMORY_FORMAT_UNSIGNED_DECIMAL:
+ return
( /*getWordSize() != IFormattedMemoryBlock.MEMORY_SIZE_BYTE
&&*/
+ getWordSize() !=
IFormattedMemoryBlock.MEMORY_SIZE_DOUBLE_WORD
);
+ }
+ return
false;
+ }
+
+ /**
+ * @see
org.eclipse.cdt.debug.core.IFormattedMemoryBlock#isLittleEndian()
+
*/
+ public boolean
isLittleEndian()
+ {
+ IExecFileInfo info =
(IExecFileInfo)getDebugTarget().getAdapter( IExecFileInfo.class
);
+ if ( info != null
)
+ {
+ return
info.isLittleEndian();
+ }
+ return
true;
}
}