63 lines
1.5 KiB
Diff
63 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
|
|
@@ -19,6 +19,8 @@
|
|
|
|
#include "Poco/NumberFormatter.h"
|
|
#include "Poco/MemoryStream.h"
|
|
+#include <ios>
|
|
+#include <sstream>
|
|
#include <iomanip>
|
|
#if !defined(POCO_NO_LOCALE)
|
|
#include <locale>
|
|
@@ -27,16 +29,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 {
|
|
|
|
|
|
@@ -475,13 +467,15 @@
|
|
|
|
void NumberFormatter::append(std::string& str, const void* ptr)
|
|
{
|
|
- char buffer[24];
|
|
-#if defined(POCO_PTR_IS_64_BIT)
|
|
- std::snprintf(buffer, sizeof(buffer), "%016" PRIXPTR, (UIntPtr) ptr);
|
|
-#else
|
|
- std::snprintf(buffer, sizeof(buffer), "%08" PRIXPTR, (UIntPtr) ptr);
|
|
-#endif
|
|
- str.append(buffer);
|
|
+ std::ostringstream os;
|
|
+
|
|
+ os << std::hex
|
|
+ << std::setw(sizeof(ptr) * 2)
|
|
+ << std::setfill('0')
|
|
+ << std::setiosflags(std::ios::uppercase)
|
|
+ << ptr;
|
|
+
|
|
+ str.append(os.str());
|
|
}
|
|
|
|
|