summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/corelib/tools/qstringbuilder.h24
-rw-r--r--tests/auto/qstringbuilder/tst_qstringbuilder.cpp35
2 files changed, 24 insertions, 35 deletions
diff --git a/src/corelib/tools/qstringbuilder.h b/src/corelib/tools/qstringbuilder.h
index 1e67b7d..7b16197 100644
--- a/src/corelib/tools/qstringbuilder.h
+++ b/src/corelib/tools/qstringbuilder.h
@@ -169,6 +169,30 @@ template <> struct QConcatenable<QStringRef>
}
};
+#ifndef QT_NO_CAST_FROM_ASCII
+template <int N> struct QConcatenable<char[N]>
+{
+ typedef char type[N];
+ static int size(const char *) { return N - 1; }
+ static inline void appendTo(const char *a, QChar *&out)
+ {
+ for (int i = 0; i < N - 1; ++i)
+ *out++ = QLatin1Char(a[i]);
+ }
+};
+
+template <> struct QConcatenable<const char *>
+{
+ typedef char const *type;
+ static int size(const char *a) { return qstrlen(a); }
+ static inline void appendTo(const char *a, QChar *&out)
+ {
+ while (*a)
+ *out++ = QLatin1Char(*a++);
+ }
+};
+#endif
+
template <typename A, typename B>
struct QConcatenable< QStringBuilder<A, B> >
{
diff --git a/tests/auto/qstringbuilder/tst_qstringbuilder.cpp b/tests/auto/qstringbuilder/tst_qstringbuilder.cpp
index f5df79e..5501204 100644
--- a/tests/auto/qstringbuilder/tst_qstringbuilder.cpp
+++ b/tests/auto/qstringbuilder/tst_qstringbuilder.cpp
@@ -95,41 +95,6 @@
#define LITERAL "some literal"
-#ifndef QT_NO_CAST_FROM_ASCII
-
-// Plan is to move the QConcatenable specialications below
-// to qstringbuilder.h as soon as the QByteArray builder is
-// implemented.
-
-QT_BEGIN_NAMESPACE
-
-template <int N> struct QConcatenable<char[N]>
-{
- typedef char type[N];
- static int size(const char *) { return N - 1; }
- static inline void appendTo(const type &a, QChar *&out)
- {
- memcpy(out, a, N - 1);
- out += N - 1;
- }
-};
-
-template <int N> struct QConcatenable<const char[N]>
-{
- typedef char type[N];
- static int size(const char *) { return N - 1; }
- static inline void appendTo(const type &a, QChar *&out)
- {
- memcpy(out, a, N - 1);
- out += N - 1;
- }
-};
-
-QT_END_NAMESPACE
-
-#endif
-
-
class tst_QStringBuilder : public QObject
{
Q_OBJECT