1
0
Fork 0

GUI: floating pointer to string conversion functions in StringUtil.h

This commit is contained in:
mrexodia 2016-01-12 03:10:28 +01:00
parent fcbdf27c55
commit 5ffe220a8d
2 changed files with 31 additions and 9 deletions

View File

@ -1,7 +1,7 @@
#include "HexDump.h"
#include <sstream>
#include "Configuration.h"
#include "Bridge.h"
#include "StringUtil.h"
HexDump::HexDump(QWidget* parent) : AbstractTableView(parent)
{
@ -568,8 +568,7 @@ QString HexDump::dwordToString(uint32 dword, DwordViewMode_e mode)
case FloatDword:
{
float* wPtr = (float*)&dword;
wStr = QString::number((double) * wPtr);
wStr = ToFloatString(&dword);
}
break;
@ -609,8 +608,7 @@ QString HexDump::qwordToString(uint64 qword, QwordViewMode_e mode)
case DoubleQword:
{
double* wPtr = (double*)&qword;
wStr = QString::number((double) * wPtr);
wStr = ToDoubleString(&qword);
}
break;
@ -632,10 +630,7 @@ QString HexDump::twordToString(long double tword, TwordViewMode_e mode)
{
case FloatTword:
{
std::stringstream wlongDoubleStr;
wlongDoubleStr << std::scientific << (long double)tword;
wStr = QString::fromStdString(wlongDoubleStr.str());
wStr = ToLongDoubleString(&tword);
}
break;

View File

@ -1,6 +1,8 @@
#ifndef STRINGUTIL_H
#define STRINGUTIL_H
#include <sstream>
#include <iomanip>
#include <QString>
#include "Imports.h"
@ -50,4 +52,29 @@ static QString ToDecString(dsint Value)
return QString(temp);
}
template<typename T>
static QString ToFloatingString(void* buffer)
{
auto value = *(T*)buffer;
std::stringstream wFloatingStr;
wFloatingStr << std::setprecision(std::numeric_limits<T>::digits10) << value;
return QString::fromStdString(wFloatingStr.str());
}
static QString ToFloatString(void* buffer)
{
return ToFloatingString<float>(buffer);
}
static QString ToDoubleString(void* buffer)
{
return ToFloatingString<double>(buffer);
}
static QString ToLongDoubleString(void* buffer)
{
//TODO: properly implement this because VS doesn't support it.
return ToDoubleString(buffer);
}
#endif // STRINGUTIL_H