summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemko Tronçon <git@el-tramo.be>2013-04-18 20:27:42 (GMT)
committerRemko Tronçon <git@el-tramo.be>2013-04-18 20:27:42 (GMT)
commit603f4622bad15da3b800bab5277091904a47f972 (patch)
treed5d454b13515cdc1ff290a6d77736dde8c6f2d8f /Swiften/IDN/ICUConverter.h
parent2a1b34a623e6e4f28481400637a3a99d5f7adc53 (diff)
downloadswift-603f4622bad15da3b800bab5277091904a47f972.zip
swift-603f4622bad15da3b800bab5277091904a47f972.tar.bz2
Fix ICU compilation.
Change-Id: I87be125a96f3b9f6755c52c58ba02bb85d945bf9
Diffstat (limited to 'Swiften/IDN/ICUConverter.h')
-rw-r--r--Swiften/IDN/ICUConverter.h71
1 files changed, 8 insertions, 63 deletions
diff --git a/Swiften/IDN/ICUConverter.h b/Swiften/IDN/ICUConverter.h
index c476b54..8ba9bb5 100644
--- a/Swiften/IDN/ICUConverter.h
+++ b/Swiften/IDN/ICUConverter.h
@@ -1,77 +1,22 @@
/*
- * Copyright (c) 2012 Remko Tronçon
+ * Copyright (c) 2012-2013 Remko Tronçon
* Licensed under the GNU General Public License v3.
* See Documentation/Licenses/GPLv3.txt for more information.
*/
#pragma once
-#pragma GCC diagnostic ignored "-Wold-style-cast"
-
-#include <unicode/ustring.h>
-#include <cassert>
#include <string>
-#include <vector>
-#include <Swiften/Base/ByteArray.h>
-#include <Swiften/Base/SafeByteArray.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Base/Override.h>
+#include <Swiften/IDN/IDNConverter.h>
namespace Swift {
-
- class ICUConverter {
+ class SWIFTEN_API ICUConverter : public IDNConverter {
public:
- typedef std::vector<UChar, SafeAllocator<UChar> > ICUString;
-
- template<typename T>
- ICUString convertToICUString(const T& s) {
- ICUString result;
- result.resize(s.size());
- UErrorCode status = U_ZERO_ERROR;
- int icuResultLength = result.size();
- u_strFromUTF8Lenient(vecptr(result), result.size(), &icuResultLength, toConstCharArray(s), s.size(), &status);
- if (status == U_BUFFER_OVERFLOW_ERROR) {
- status = U_ZERO_ERROR;
- result.resize(icuResultLength);
- u_strFromUTF8Lenient(vecptr(result), result.size(), &icuResultLength, toConstCharArray(s), s.size(), &status);
- }
- if (U_FAILURE(status)) {
- return ICUString();
- }
- result.resize(icuResultLength);
- return result;
- }
-
- std::string convertToString(const ICUString& input) {
- return std::string(vecptr(convertToArray(input)));
- }
+ virtual std::string getStringPrepared(const std::string& s, StringPrepProfile profile) SWIFTEN_OVERRIDE;
+ virtual SafeByteArray getStringPrepared(const SafeByteArray& s, StringPrepProfile profile) SWIFTEN_OVERRIDE;
- std::vector<char, SafeAllocator<char> > convertToArray(const ICUString& input) {
- std::vector<char, SafeAllocator<char> > result;
- result.resize(input.size());
- UErrorCode status = U_ZERO_ERROR;
- int inputLength = result.size();
- u_strToUTF8(vecptr(result), result.size(), &inputLength, vecptr(input), input.size(), &status);
- if (status == U_BUFFER_OVERFLOW_ERROR) {
- status = U_ZERO_ERROR;
- result.resize(inputLength);
- u_strToUTF8(vecptr(result), result.size(), &inputLength, vecptr(input), input.size(), &status);
- }
- if (U_FAILURE(status)) {
- return std::vector<char, SafeAllocator<char> >();
- }
-
- result.resize(inputLength + 1);
- result[result.size() - 1] = '\0';
- return result;
- }
-
- private:
- static const char* toConstCharArray(const std::string& input) {
- return input.c_str();
- }
-
- static const char* toConstCharArray(const std::vector<unsigned char, SafeAllocator<unsigned char> >& input) {
- return reinterpret_cast<const char*>(vecptr(input));
- }
+ virtual std::string getIDNAEncoded(const std::string& s) SWIFTEN_OVERRIDE;
};
-
}