From cad974b45c0fb9355e68d9728e42c9ae3dbcebc7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Remko=20Tron=C3=A7on?= <git@el-tramo.be>
Date: Mon, 14 Feb 2011 18:58:02 +0100
Subject: String refactoring.

Removed String::getLength().
Rewrote String::removeAll().

diff --git a/Swiften/Base/String.cpp b/Swiften/Base/String.cpp
index 17d49c2..460df36 100644
--- a/Swiften/Base/String.cpp
+++ b/Swiften/Base/String.cpp
@@ -69,24 +69,6 @@ std::pair<String,String> String::getSplittedAtFirst(char c) const {
 	}
 }
 
-size_t String::getLength() const {
-	size_t size = 0, current = 0, end = data_.size();
-	while (current < end) {
-		size++;
-		current += sequenceLength(data_[current]);
-	}
-	return size;
-}
-
-void String::removeAll(char c) {
-	size_t lastPos = 0;
-	size_t matchingIndex = 0;
-	while ((matchingIndex = data_.find(c, lastPos)) != data_.npos) {
-		data_.erase(matchingIndex, 1);
-		lastPos = matchingIndex;
-	}
-}
-
 void String::replaceAll(char c, const String& s) {
 	size_t lastPos = 0;
 	size_t matchingIndex = 0;
diff --git a/Swiften/Base/String.h b/Swiften/Base/String.h
index c87d82b..7d2f928 100644
--- a/Swiften/Base/String.h
+++ b/Swiften/Base/String.h
@@ -13,6 +13,7 @@
 #include <utility>
 #include <vector>
 #include <cassert>
+#include <algorithm>
 
 #define SWIFTEN_STRING_TO_CFSTRING(a) \
 	CFStringCreateWithBytes(NULL, reinterpret_cast<const UInt8*>(a.getUTF8Data()), a.getUTF8Size(), kCFStringEncodingUTF8, false)
@@ -48,13 +49,13 @@ namespace Swift {
 
 			std::vector<String> split(char c) const;
 
-			size_t getLength() const;
-
 			String getLowerCase() const {
 				return boost::to_lower_copy(data_);
 			}
 
-			void removeAll(char c);
+			void removeAll(char c) {
+				data_.erase(std::remove(data_.begin(), data_.end(), c), data_.end());
+			}
 
 			void replaceAll(char c, const String& s);
 
diff --git a/Swiften/Base/UnitTest/StringTest.cpp b/Swiften/Base/UnitTest/StringTest.cpp
index eff7b80..161b4f1 100644
--- a/Swiften/Base/UnitTest/StringTest.cpp
+++ b/Swiften/Base/UnitTest/StringTest.cpp
@@ -14,10 +14,6 @@ using namespace Swift;
 class StringTest : public CppUnit::TestFixture
 {
 		CPPUNIT_TEST_SUITE(StringTest);
-		CPPUNIT_TEST(testGetLength);
-		CPPUNIT_TEST(testGetLength_EncodedLength2);
-		CPPUNIT_TEST(testGetLength_EncodedLength3);
-		CPPUNIT_TEST(testGetLength_EncodedLength4);
 		CPPUNIT_TEST(testGetUnicodeCodePoints);
 		CPPUNIT_TEST(testGetSplittedAtFirst);
 		CPPUNIT_TEST(testGetSplittedAtFirst_CharacterAtEnd);
@@ -39,30 +35,6 @@ class StringTest : public CppUnit::TestFixture
 		CPPUNIT_TEST_SUITE_END();
 
 	public:
-		void testGetLength() {
-			String testling("xyz$xyz");
-
-			CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(7), testling.getLength());
-		}
-
-		void testGetLength_EncodedLength2() {
-			String testling("xyz\xC2\xA2xyz");
-
-			CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(7), testling.getLength());
-		}
-
-		void testGetLength_EncodedLength3() {
-			String testling("xyz\xE2\x82\xACxyz");
-
-			CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(7), testling.getLength());
-		}
-
-		void testGetLength_EncodedLength4() {
-			String testling("xyz\xf4\x8a\xaf\x8dxyz");
-
-			CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(7), testling.getLength());
-		}
-
 		void testGetUnicodeCodePoints() {
 			String testling("$\xc2\xa2\xe2\x82\xac\xf4\x8a\xaf\x8d");
 			std::vector<unsigned int> points = testling.getUnicodeCodePoints();
diff --git a/Swiften/LinkLocal/LinkLocalServiceInfo.cpp b/Swiften/LinkLocal/LinkLocalServiceInfo.cpp
index d89b6f9..cdde354 100644
--- a/Swiften/LinkLocal/LinkLocalServiceInfo.cpp
+++ b/Swiften/LinkLocal/LinkLocalServiceInfo.cpp
@@ -46,7 +46,6 @@ ByteArray LinkLocalServiceInfo::toTXTRecord() const {
 ByteArray LinkLocalServiceInfo::getEncoded(const String& s) {
 	ByteArray sizeByte;
 	sizeByte.resize(1);
-	assert(s.getLength() < 256);
 	sizeByte[0] = s.getUTF8Size();
 	return sizeByte + ByteArray(s);
 }
diff --git a/Swiften/Session/SessionTracer.h b/Swiften/Session/SessionTracer.h
index 13348fb..9315d2f 100644
--- a/Swiften/Session/SessionTracer.h
+++ b/Swiften/Session/SessionTracer.h
@@ -23,7 +23,7 @@ namespace Swift {
 		private:
 			void printData(char direction, const ByteArray& data) {
 				std::cerr << direction << direction << " " << session->getLocalJID() << " ";
-				for (unsigned int i = 0; i < 72 - session->getLocalJID().toString().getLength() - session->getRemoteJID().toString().getLength(); ++i) {
+				for (unsigned int i = 0; i < 72 - session->getLocalJID().toString().getUTF8Size() - session->getRemoteJID().toString().getUTF8Size(); ++i) {
 					std::cerr << direction;
 				}
 				std::cerr << " " << session->getRemoteJID()<< " " << direction << direction << std::endl;
-- 
cgit v0.10.2-6-g49f6