1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

Added conversion utilities to support decimal format in the Memory View.

This commit is contained in:
Mikhail Khodjaiants 2002-11-01 23:21:32 +00:00
parent 0397c4165b
commit f1fe1808af
2 changed files with 115 additions and 2 deletions

View file

@ -1,4 +1,8 @@
2002-10-31 Mikhail Khodjaiants
2002-11-01 Mikhail Khodjaiants
Added conversion utilities to support decimal format in the Memory View.
* CDebugUtils.java
2002-11-01 Mikhail Khodjaiants
Added the 'IExecFileInfo' interface to provide access to the executable file information.
* IExecFileInfo.java: definition
* CDebugTarget.java: implementation

View file

@ -5,6 +5,8 @@
*/
package org.eclipse.cdt.debug.internal.core;
import java.util.Arrays;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.debug.core.DebugPlugin;
@ -131,5 +133,112 @@ public class CDebugUtils
{
}
return 0;
}
}
public static short toShort( char[] bytes, boolean le )
{
if ( bytes.length != 2 )
return 0;
return Short.parseShort( bytesToString( bytes, le, true ), 16 );
}
public static int toUnsignedShort( char[] bytes, boolean le )
{
if ( bytes.length != 2 )
return 0;
return Integer.parseInt( bytesToString( bytes, le, false ), 16 );
}
public static int toInt( char[] bytes, boolean le )
{
if ( bytes.length != 4 )
return 0;
return Integer.parseInt( bytesToString( bytes, le, true ), 16 );
}
public static long toUnsignedInt( char[] bytes, boolean le )
{
if ( bytes.length != 4 )
return 0;
return Long.parseLong( bytesToString( bytes, le, false ), 16 );
}
public static long toLong( char[] bytes, boolean le )
{
return toInt( bytes, le );
}
public static long toUnsignedLong( char[] bytes, boolean le )
{
return toUnsignedInt( bytes, le );
}
private static String bytesToString( char[] bytes, boolean le, boolean signed )
{
char[] copy = new char[bytes.length];
if ( le )
{
for ( int i = 0; i < bytes.length / 2; ++i )
{
copy[2 * i] = bytes[bytes.length - 2 * i - 2];
copy[2 * i + 1] = bytes[bytes.length - 2 * i - 1];
}
}
else
{
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();
}
public static String prependString( String text, int length, char ch )
{
StringBuffer sb = new StringBuffer( length );
if ( text.length() > length )
{
sb.append( text.substring( 0, length ) );
}
else
{
char[] prefix = new char[length - text.length()];
Arrays.fill( prefix, ch );
sb.append( prefix );
sb.append( text );
}
return sb.toString();
}
}