From 4e05484ab2475cd50572a81e831235f916e8b7ba Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Remko=20Tron=C3=A7on?= <git@el-tramo.be>
Date: Mon, 23 May 2011 21:09:49 +0200
Subject: Added makeString().


diff --git a/Swiften/Base/String.h b/Swiften/Base/String.h
index 0de6cac..db6c28b 100644
--- a/Swiften/Base/String.h
+++ b/Swiften/Base/String.h
@@ -8,6 +8,7 @@
 
 #include <string>
 #include <vector>
+#include <sstream>
 
 #define SWIFTEN_STRING_TO_CFSTRING(a) \
 	CFStringCreateWithBytes(NULL, reinterpret_cast<const UInt8*>(a.c_str()), a.size(), kCFStringEncodingUTF8, false)
@@ -18,11 +19,28 @@ namespace Swift {
 			std::pair<std::string, std::string> getSplittedAtFirst(const std::string&, char c);
 			std::vector<std::string> split(const std::string&, char c);
 			void replaceAll(std::string&, char c, const std::string& s);
+
 			inline bool beginsWith(const std::string& s, char c) { 
 				return s.size() > 0 && s[0] == c; 
 			}
+
 			inline bool endsWith(const std::string& s, char c) { 
 				return s.size() > 0 && s[s.size()-1] == c; 
 			}
 	};
+
+	class makeString {
+		public:
+			 template <typename T> makeString& operator<<(T const& v) {
+					stream << v;
+					return *this;
+			 }
+
+			 operator std::string() const {
+					return stream.str();
+			 }
+
+		private:
+			 std::ostringstream stream;
+	};
 }
diff --git a/Swiften/JID/JID.cpp b/Swiften/JID/JID.cpp
index 9fa0574..2ebbdd6 100644
--- a/Swiften/JID/JID.cpp
+++ b/Swiften/JID/JID.cpp
@@ -24,6 +24,8 @@
 #include <Swiften/JID/JID.h>
 #include <Swiften/IDN/StringPrep.h>
 
+using namespace Swift;
+
 #ifdef SWIFTEN_CACHE_JID_PREP
 typedef boost::unordered_map<std::string, std::string> PrepCache;
 
@@ -35,9 +37,7 @@ static PrepCache resourcePrepCache;
 static const std::list<char> escapedChars = boost::assign::list_of(' ')('"')('&')('\'')('/')('<')('>')('@')(':');
 
 static std::string getEscaped(char c) {
-	std::ostringstream s;
-	s << '\\' << std::hex << static_cast<int>(c);
-	return s.str();
+	return makeString() << '\\' << std::hex << static_cast<int>(c);
 }
 
 static bool getEscapeSequenceValue(const std::string& sequence, unsigned char& value) {
@@ -110,8 +110,6 @@ struct EscapedCharacterFormatter {
 };
 #endif
 
-using namespace Swift;
-
 JID::JID(const char* jid) {
 	initializeFromString(std::string(jid));
 }
-- 
cgit v0.10.2-6-g49f6