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());
 }
 
 
