4#ifndef QSTRINGBUILDER_H
5#define QSTRINGBUILDER_H
10#pragma qt_class(QStringBuilder)
11#pragma qt_sync_stop_processing
14#include <QtCore/qstring.h>
15#include <QtCore/qbytearray.h>
44 template <
typename T>
using HasIsNull =
decltype(std::declval<const T &>().isNull());
45 template <
typename T>
bool isNull(
const T &
t)
47 if constexpr (qxp::is_detected_v<HasIsNull, T>)
54template<
typename Builder,
typename T>
61 T
resolved()
const {
return *
static_cast<const Builder*
>(
this); }
64template<
typename Builder,
typename T>
69template<
typename Builder>
77template <
typename A,
typename B>
79 typename QtStringBuilder::ConvertToTypeHelper<
80 typename QConcatenableEx<A>::ConvertTo,
81 typename QConcatenableEx<B>::ConvertTo
95 template <
typename T> T convertTo()
const
108 typename T::iterator
d =
const_cast<typename T::iterator
>(
s.constData());
109 typename T::const_iterator
const start =
d;
123 operator ConvertTo()
const {
return convertTo<ConvertTo>(); }
144 enum { ExactSize =
true };
146#ifndef QT_NO_CAST_FROM_ASCII
160 enum { ExactSize =
true };
162#ifndef QT_NO_CAST_FROM_ASCII
181 enum { ExactSize =
true };
191 enum { ExactSize =
true };
196 { *
out++ =
c.toLatin1(); }
203 enum { ExactSize =
true };
213 enum { ExactSize =
true };
223 enum { ExactSize =
true };
227 appendLatin1To(
a,
out);
232 if (
const char *
data =
a.data()) {
243 enum { ExactSize =
true };
249 memcpy(
out,
reinterpret_cast<const char*
>(
a.constData()),
sizeof(
QChar) *
n);
258 enum { ExactSize =
true };
262 const auto n =
a.size();
273 enum { ExactSize =
false };
275#ifndef QT_NO_CAST_FROM_ASCII
297 enum { ExactSize =
false };
299#ifndef QT_NO_CAST_FROM_ASCII
319 using type =
const char16_t[N];
321 enum { ExactSize =
true };
325 memcpy(
static_cast<void *
>(
out),
a, (N - 1) *
sizeof(
char16_t));
339 enum { ExactSize =
true };
359 enum { ExactSize =
false };
361#ifndef QT_NO_CAST_FROM_ASCII
377template <
typename A,
typename B>
397template <
typename A,
typename B,
406#if defined(QT_USE_FAST_OPERATOR_PLUS) || defined(QT_USE_QSTRINGBUILDER)
407template <
typename A,
typename B,
411 return std::forward<A>(
a) % std::forward<B>(
b);
416template <
typename A,
typename B>
422 if (
len >
a.data_ptr().freeSpaceAtEnd())
430#ifndef QT_NO_CAST_TO_ASCII
431template <
typename A,
typename B>
439template <
typename A,
typename B>
446template <
typename A,
typename B>
451 if (
len >
a.data_ptr().freeSpaceAtEnd())
456 a.resize(
it -
a.constData());
constexpr qsizetype size() const noexcept
constexpr const_pointer data() const noexcept
qsizetype size() const noexcept
Returns the number of bytes in this byte array.
const char * constData() const noexcept
Returns a pointer to the const data stored in the byte array.
iterator end()
Returns an \l{STL-style iterators}{STL-style iterator} pointing just after the last byte in the byte-...
SpecialCharacter
\value Null A QChar with this value isNull().
QStringBuilder(A &&a_, B &&b_)
QStringBuilder(QStringBuilder &&)=default
QStringBuilder(const QStringBuilder &)=default
~QStringBuilder()=default
Concatenable::ConvertTo ConvertTo
constexpr qsizetype size() const noexcept
Returns the size of this string view, in UTF-16 code units (that is, surrogate pairs count as two for...
\macro QT_RESTRICTED_CAST_FROM_ASCII
QByteArray toUtf8() const &
QSet< QString >::iterator it
Combined button and popup list for selecting options.
decltype(std::declval< const T & >().isNull()) HasIsNull
QByteArray & appendToByteArray(QByteArray &a, const QStringBuilder< A, B > &b, char)
constexpr Initialization Uninitialized
size_t qstrlen(const char *str)
constexpr timespec operator+(const timespec &t1, const timespec &t2)
constexpr const T & qMax(const T &a, const T &b)
GLboolean GLboolean GLboolean b
GLboolean GLboolean GLboolean GLboolean a
[7]
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
QByteArray & operator+=(QByteArray &a, const QStringBuilder< A, B > &b)
auto operator%(A &&a, B &&b)
#define QT_ASCII_CAST_WARN
QTextStream out(stdout)
[7]
static void convertFromAscii(char a, QChar *&out) noexcept
static void convertFromUtf8(QByteArrayView in, QChar *&out) noexcept
static QT_ASCII_CAST_WARN void appendTo(QByteArrayView bav, QChar *&out)
static void appendTo(QByteArrayView bav, char *&out)
static qsizetype size(QByteArrayView bav)
static void appendTo(const QByteArray &ba, char *&out)
static QT_ASCII_CAST_WARN void appendTo(const QByteArray &ba, QChar *&out)
static qsizetype size(const QByteArray &ba)
static void appendTo(const QChar c, QChar *&out)
static qsizetype size(const QChar)
static qsizetype size(const QChar::SpecialCharacter)
static void appendTo(const QChar::SpecialCharacter c, QChar *&out)
QChar::SpecialCharacter type
static void appendTo(const QLatin1Char c, QChar *&out)
static qsizetype size(const QLatin1Char)
static void appendTo(const QLatin1Char c, char *&out)
static void appendTo(const QLatin1StringView a, QChar *&out)
static qsizetype size(const QLatin1StringView a)
static void appendTo(const QLatin1StringView a, char *&out)
static void appendTo(const type &p, T *&out)
static qsizetype size(const type &p)
typename QtStringBuilder::ConvertToTypeHelper< typename QConcatenableEx< A >::ConvertTo, typename QConcatenableEx< B >::ConvertTo >::ConvertTo ConvertTo
QStringBuilder< A, B > type
static qsizetype size(QStringView a)
static void appendTo(QStringView a, QChar *&out)
static qsizetype size(const QString &a)
static void appendTo(const QString &a, QChar *&out)
static void appendTo(char16_t c, QChar *&out)
static constexpr qsizetype size(char16_t)
static QT_ASCII_CAST_WARN void appendTo(const char c, QChar *&out)
static qsizetype size(const char)
static void appendTo(const char c, char *&out)
static QT_ASCII_CAST_WARN void appendTo(const char16_t *a, QChar *&out)
static qsizetype size(const char16_t *a)
static qsizetype size(const char16_t[N])
static void appendTo(const char16_t a[N], QChar *&out)
static QT_ASCII_CAST_WARN void appendTo(const char *a, QChar *&out)
static void appendTo(const char *a, char *&out)
static qsizetype size(const char *a)
static void appendTo(const char a[N], char *&out)
static qsizetype size(const char[N])
static QT_ASCII_CAST_WARN void appendTo(const char a[N], QChar *&out)
\inmodule QtCore \reentrant
QByteArray toLocal8Bit() const
QByteArray toUtf8() const
QByteArray toLatin1() const