62 lines
1.5 KiB
Diff
62 lines
1.5 KiB
Diff
From 91c8f61a89346c5874a4009bfb6950db8f560377 Mon Sep 17 00:00:00 2001
|
|
From: Luigi 'Comio' Mantellini <luigi.mantellini@gmail.com>
|
|
Date: Mon, 24 Mar 2014 08:35:25 +0100
|
|
Subject: [PATCH] Format string using ostringstream and avoiding #if/#endef
|
|
|
|
---
|
|
Foundation/src/NumberFormatter.cpp | 31 +++++++++++--------------------
|
|
1 file changed, 11 insertions(+), 20 deletions(-)
|
|
|
|
diff --git a/Foundation/src/NumberFormatter.cpp b/Foundation/src/NumberFormatter.cpp
|
|
index b7b27e7..714acab 100644
|
|
--- a/Foundation/src/NumberFormatter.cpp
|
|
+++ b/Foundation/src/NumberFormatter.cpp
|
|
@@ -36,6 +36,8 @@
|
|
|
|
#include "Poco/NumberFormatter.h"
|
|
#include "Poco/MemoryStream.h"
|
|
+#include <ios>
|
|
+#include <sstream>
|
|
#include <iomanip>
|
|
#if !defined(POCO_NO_LOCALE)
|
|
#include <locale>
|
|
@@ -43,15 +45,6 @@
|
|
#include <cinttypes>
|
|
|
|
|
|
-#if defined(_MSC_VER) || defined(__MINGW32__)
|
|
- #define I64_FMT "I64"
|
|
-#elif defined(__APPLE__)
|
|
- #define I64_FMT "q"
|
|
-#else
|
|
- #define I64_FMT "ll"
|
|
-#endif
|
|
-
|
|
-
|
|
namespace Poco {
|
|
|
|
|
|
@@ -384,13 +377,15 @@ void NumberFormatter::append(std::string& str, double value, int width, int prec
|
|
|
|
void NumberFormatter::append(std::string& str, const void* ptr)
|
|
{
|
|
- char buffer[24];
|
|
-#if defined(POCO_PTR_IS_64_BIT)
|
|
- std::sprintf(buffer, "%016" PRIXPTR, (UIntPtr) ptr);
|
|
-#else
|
|
- std::sprintf(buffer, "%08" PRIXPTR, (UIntPtr) ptr);
|
|
-#endif
|
|
- str.append(buffer);
|
|
+ std::ostringstream os;
|
|
+
|
|
+ os << std::hex
|
|
+ << std::setw(sizeof(ptr) * 2)
|
|
+ << std::setfill('0')
|
|
+ << setiosflags(std::ios::uppercase)
|
|
+ << ptr;
|
|
+
|
|
+ str.append(os.str());
|
|
}
|
|
|
|
|