forked from qt-creator/qt-creator
Debugger[CDB]: Fix setting individual formats by iname.
Do not hex-decode names. Change-Id: I0b9b6df2524cdf66bc34958bbab5bbc28f8a73db Reviewed-on: http://codereview.qt.nokia.com/3172 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
This commit is contained in:
@@ -35,6 +35,7 @@
|
||||
#include <cctype>
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
#include <iomanip>
|
||||
|
||||
static const char whiteSpace[] = " \t\r\n";
|
||||
|
||||
@@ -239,7 +240,7 @@ std::string stringFromHex(const char *p, const char *end)
|
||||
|
||||
std::string rc;
|
||||
rc.reserve((end - p) / 2);
|
||||
for ( ; p < end; p++) {
|
||||
for ( ; p < end; ++p) {
|
||||
unsigned c = 16 * hexDigit(*p);
|
||||
c += hexDigit(*++p);
|
||||
rc.push_back(char(c));
|
||||
@@ -247,9 +248,40 @@ std::string stringFromHex(const char *p, const char *end)
|
||||
return rc;
|
||||
}
|
||||
|
||||
// Helper for dumping memory
|
||||
std::string dumpMemory(const unsigned char *p, size_t size,
|
||||
bool wantQuotes)
|
||||
{
|
||||
std::ostringstream str;
|
||||
str << std::oct << std::setfill('0');
|
||||
if (wantQuotes)
|
||||
str << '"';
|
||||
const unsigned char *end = p + size;
|
||||
for ( ; p < end; ++p) {
|
||||
const unsigned char u = *p;
|
||||
switch (u) {
|
||||
case '\t':
|
||||
str << "\\t";
|
||||
case '\r':
|
||||
str << "\\r";
|
||||
case '\n':
|
||||
str << "\\n";
|
||||
default:
|
||||
if (u >= 32 && u < 128) {
|
||||
str << (char(u));
|
||||
} else {
|
||||
str << '\\' << std::setw(3) << unsigned(u);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (wantQuotes)
|
||||
str << '"';
|
||||
return str.str();
|
||||
}
|
||||
|
||||
void decodeHex(const char *p, const char *end, unsigned char *target)
|
||||
{
|
||||
for ( ; p < end; p++) {
|
||||
for ( ; p < end; ++p) {
|
||||
unsigned c = 16 * hexDigit(*p);
|
||||
c += hexDigit(*++p);
|
||||
*target++ = c;
|
||||
@@ -263,7 +295,7 @@ std::wstring dataToHexW(const unsigned char *p, const unsigned char *end)
|
||||
|
||||
std::wstring rc;
|
||||
rc.reserve(2 * (end - p));
|
||||
for ( ; p < end ; p++) {
|
||||
for ( ; p < end ; ++p) {
|
||||
const unsigned c = *p;
|
||||
rc.push_back(toHexDigit(c / 16));
|
||||
rc.push_back(toHexDigit(c &0xF));
|
||||
@@ -279,7 +311,7 @@ std::wstring dataToReadableHexW(const unsigned char *begin, const unsigned char
|
||||
|
||||
std::wstring rc;
|
||||
rc.reserve(5 * (end - begin));
|
||||
for (const unsigned char *p = begin; p < end ; p++) {
|
||||
for (const unsigned char *p = begin; p < end ; ++p) {
|
||||
rc.append(p == begin ? L"0x" : L" 0x");
|
||||
const unsigned c = *p;
|
||||
rc.push_back(toHexDigit(c / 16));
|
||||
|
||||
Reference in New Issue
Block a user