// Copyright (C) 2016 The Qt Company Ltd. // Copyright (C) 2020 Intel Corporation. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #ifndef QSTRINGLITERAL_H #define QSTRINGLITERAL_H #include #include #if 0 #pragma qt_class(QStringLiteral) #endif QT_BEGIN_NAMESPACE // all our supported compilers support Unicode string literals, // even if their Q_COMPILER_UNICODE_STRING has been revoked due // to lacking stdlib support. But QStringLiteral only needs the // core language feature, so just use u"" here unconditionally: #define QT_UNICODE_LITERAL(str) u"" str using QStringPrivate = QArrayDataPointer; namespace QtPrivate { template static Q_ALWAYS_INLINE QStringPrivate qMakeStringPrivate(const char16_t (&literal)[N]) { // NOLINTNEXTLINE(cppcoreguidelines-pro-type-const-cast) auto str = const_cast(literal); return { nullptr, str, N - 1 }; } } #define QStringLiteral(str) \ (QString(QtPrivate::qMakeStringPrivate(QT_UNICODE_LITERAL(str)))) \ /**/ QT_END_NAMESPACE #endif // QSTRINGLITERAL_H