From af32768f18f8fed1ce3d06a6bad5fd65d0574a3a Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Wed, 28 Jun 2023 14:52:43 +0200 Subject: [PATCH] QDebug: add getter/setter for noQuotes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There were setters (quote(), noquote()), but, unlike space()/nospace(), there was no getter. Add the getter, and, for symmetry, a parametrized setter, too. [ChangeLog][QtCore][QDebug] Added setQuoteStrings()/quoteStrings() to access and manipulate the quote()/noquote() state. Change-Id: I1b73138819b4d02726a6ef862c190206431ccebc Reviewed-by: MÃ¥rten Nordheim Reviewed-by: Thiago Macieira --- src/corelib/io/qdebug.cpp | 23 +++++++++++++++++++++ src/corelib/io/qdebug.h | 3 +++ tests/auto/corelib/io/qdebug/tst_qdebug.cpp | 8 ++++++- 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/corelib/io/qdebug.cpp b/src/corelib/io/qdebug.cpp index 56deeb7cf75..f8402dfedae 100644 --- a/src/corelib/io/qdebug.cpp +++ b/src/corelib/io/qdebug.cpp @@ -506,6 +506,29 @@ QDebug &QDebug::resetFormat() */ +/*! + \fn bool QDebug::quoteStrings() const + \since 6.7 + + Returns \c true if this QDebug instance will quote strings streamed into + it (which is the default). + + \sa QDebugStateSaver, quote(), noquote(), setQuoteStrings() +*/ + +/*! + \fn void QDebug::setQuoteStrings(bool b) + \since 6.7 + + Enables quoting of strings streamed into this QDebug instance if \a b is + \c true; otherwise quoting is disabled. + + The default is to quote strings. + + \sa QDebugStateSaver, quote(), noquote(), quoteStrings() +*/ + + /*! \fn QDebug &QDebug::quote() \since 5.4 diff --git a/src/corelib/io/qdebug.h b/src/corelib/io/qdebug.h index 7390a9c8bce..39f706b0648 100644 --- a/src/corelib/io/qdebug.h +++ b/src/corelib/io/qdebug.h @@ -93,6 +93,9 @@ public: bool autoInsertSpaces() const { return stream->space; } void setAutoInsertSpaces(bool b) { stream->space = b; } + [[nodiscard]] bool quoteStrings() const noexcept { return !stream->noQuotes; } + void setQuoteStrings(bool b) { stream->noQuotes = !b; } + inline QDebug "e() { stream->noQuotes = false; return *this; } inline QDebug &noquote() { stream->noQuotes = true; return *this; } inline QDebug &maybeQuote(char c = '"') { if (!stream->noQuotes) stream->ts << c; return *this; } diff --git a/tests/auto/corelib/io/qdebug/tst_qdebug.cpp b/tests/auto/corelib/io/qdebug/tst_qdebug.cpp index 37bb6aa65a3..6c976e4a63f 100644 --- a/tests/auto/corelib/io/qdebug/tst_qdebug.cpp +++ b/tests/auto/corelib/io/qdebug/tst_qdebug.cpp @@ -318,11 +318,17 @@ void tst_QDebug::debugNoQuotes() const MessageHandlerSetter mhs(myMessageHandler); { QDebug d = qDebug(); + QVERIFY(d.quoteStrings()); d << QStringLiteral("Hello"); + QVERIFY(d.quoteStrings()); d.noquote(); + QVERIFY(!d.quoteStrings()); d << QStringLiteral("Hello"); + QVERIFY(!d.quoteStrings()); d.quote(); + QVERIFY(d.quoteStrings()); d << QStringLiteral("Hello"); + QVERIFY(d.quoteStrings()); } QCOMPARE(s_msg, QString::fromLatin1("\"Hello\" Hello \"Hello\"")); @@ -331,7 +337,7 @@ void tst_QDebug::debugNoQuotes() const d << QChar('H'); d << QLatin1String("Hello"); d << QByteArray("Hello"); - d.noquote(); + d.setQuoteStrings(false); d << QChar('H'); d << QLatin1String("Hello"); d << QByteArray("Hello");