Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qdebug.h File Reference

(7e8196510df88bc956492593c27da1af7b31b8ef)

#include <QtCore/qcontainerfwd.h>
#include <QtCore/qtextstream.h>
#include <QtCore/qtypes.h>
#include <QtCore/qstring.h>
#include <QtCore/qcontiguouscache.h>
#include <QtCore/qsharedpointer.h>
#include <chrono>
#include <list>
#include <map>
#include <optional>
#include <string>
#include <string_view>
#include <utility>
#include <vector>
#include <QtCore/qlist.h>
#include <QtCore/qmap.h>
#include <QtCore/qset.h>
#include <QtCore/qvarlengtharray.h>
+ Include dependency graph for qdebug.h:

Go to the source code of this file.

Namespaces

namespace  QtPrivate
 \macro QT_NO_KEYWORDS >
 

Typedefs

template<typename ... T>
using QDebugIfHasDebugStream
 
template<typename Container , typename ... T>
using QDebugIfHasDebugStreamContainer
 

Functions

template<typename SequentialContainer >
QDebug QtPrivate::printSequentialContainer (QDebug debug, const char *which, const SequentialContainer &c)
 
template<typename AssociativeContainer >
QDebug QtPrivate::printAssociativeContainer (QDebug debug, const char *which, const AssociativeContainer &c)
 
template<typename T >
QDebugIfHasDebugStreamContainer< QList< T >, T > operator<< (QDebug debug, const QList< T > &vec)
 
template<typename T , qsizetype P>
QDebugIfHasDebugStream< T > operator<< (QDebug debug, const QVarLengthArray< T, P > &vec)
 
template<typename T , typename Alloc >
QDebugIfHasDebugStream< T > operator<< (QDebug debug, const std::vector< T, Alloc > &vec)
 
template<typename T , typename Alloc >
QDebugIfHasDebugStream< T > operator<< (QDebug debug, const std::list< T, Alloc > &vec)
 
template<typename T >
QDebugIfHasDebugStream< T > operator<< (QDebug debug, std::initializer_list< T > list)
 
template<typename Key , typename T , typename Compare , typename Alloc >
QDebugIfHasDebugStream< Key, T > operator<< (QDebug debug, const std::map< Key, T, Compare, Alloc > &map)
 
template<typename Key , typename T , typename Compare , typename Alloc >
QDebugIfHasDebugStream< Key, T > operator<< (QDebug debug, const std::multimap< Key, T, Compare, Alloc > &map)
 
template<class Key , class T >
QDebugIfHasDebugStreamContainer< QMap< Key, T >, Key, T > operator<< (QDebug debug, const QMap< Key, T > &map)
 
template<class Key , class T >
QDebugIfHasDebugStreamContainer< QMultiMap< Key, T >, Key, T > operator<< (QDebug debug, const QMultiMap< Key, T > &map)
 
template<class Key , class T >
QDebugIfHasDebugStreamContainer< QHash< Key, T >, Key, T > operator<< (QDebug debug, const QHash< Key, T > &hash)
 
template<class Key , class T >
QDebugIfHasDebugStreamContainer< QMultiHash< Key, T >, Key, T > operator<< (QDebug debug, const QMultiHash< Key, T > &hash)
 
template<class T >
QDebugIfHasDebugStream< T > operator<< (QDebug debug, const std::optional< T > &opt)
 
template<class T1 , class T2 >
QDebugIfHasDebugStream< T1, T2 > operator<< (QDebug debug, const std::pair< T1, T2 > &pair)
 
template<typename T >
QDebugIfHasDebugStreamContainer< QSet< T >, T > operator<< (QDebug debug, const QSet< T > &set)
 
template<class T >
QDebugIfHasDebugStream< T > operator<< (QDebug debug, const QContiguousCache< T > &cache)
 
template<class T >
QDebug operator<< (QDebug debug, const QSharedPointer< T > &ptr)
 
template<typename T , typename Tag >
QDebug operator<< (QDebug debug, const QTaggedPointer< T, Tag > &ptr)
 
Q_CORE_EXPORT void qt_QMetaEnum_flagDebugOperator (QDebug &debug, size_t sizeofT, int value)
 
template<typename Int >
void qt_QMetaEnum_flagDebugOperator (QDebug &debug, size_t sizeofT, Int value)
 
Q_CORE_EXPORT QDebug qt_QMetaEnum_debugOperator (QDebug &, qint64 value, const QMetaObject *meta, const char *name)
 
Q_CORE_EXPORT QDebug qt_QMetaEnum_flagDebugOperator (QDebug &dbg, quint64 value, const QMetaObject *meta, const char *name)
 
template<typename T >
std::enable_if< QtPrivate::IsQEnumHelper< T >::Value, QDebug >::type operator<< (QDebug dbg, T value)
 

Typedef Documentation

◆ QDebugIfHasDebugStream

template<typename ... T>
using QDebugIfHasDebugStream
Initial value:
std::enable_if_t<std::conjunction_v<QTypeTraits::has_ostream_operator<QDebug, T>...>, QDebug>
\inmodule QtCore

Definition at line 309 of file qdebug.h.

◆ QDebugIfHasDebugStreamContainer

template<typename Container , typename ... T>
using QDebugIfHasDebugStreamContainer
Initial value:
std::enable_if_t<std::conjunction_v<QTypeTraits::has_ostream_operator_container<QDebug, Container, T>...>, QDebug>

Definition at line 313 of file qdebug.h.

Function Documentation

◆ operator<<() [1/18]

template<typename T >
std::enable_if< QtPrivate::IsQEnumHelper< T >::Value, QDebug >::type operator<< ( QDebug dbg,
T value )

Definition at line 509 of file qdebug.h.

References qt_QMetaEnum_debugOperator().

+ Here is the call graph for this function:

◆ operator<<() [2/18]

template<class T >
QDebugIfHasDebugStream< T > operator<< ( QDebug debug,
const QContiguousCache< T > & cache )
related

Definition at line 267 of file qdebug.h.

◆ operator<<() [3/18]

template<class Key , class T >
QDebugIfHasDebugStreamContainer< QHash< Key, T >, Key, T > operator<< ( QDebug debug,
const QHash< Key, T > & hash )
related

Definition at line 267 of file qdebug.h.

◆ operator<<() [4/18]

template<typename T >
QDebugIfHasDebugStreamContainer< QList< T >, T > operator<< ( QDebug debug,
const QList< T > & vec )
related

Definition at line 267 of file qdebug.h.

◆ operator<<() [5/18]

template<class Key , class T >
QDebugIfHasDebugStreamContainer< QMap< Key, T >, Key, T > operator<< ( QDebug debug,
const QMap< Key, T > & map )
related

Definition at line 267 of file qdebug.h.

◆ operator<<() [6/18]

template<class Key , class T >
QDebugIfHasDebugStreamContainer< QMultiHash< Key, T >, Key, T > operator<< ( QDebug debug,
const QMultiHash< Key, T > & hash )
related

Definition at line 267 of file qdebug.h.

◆ operator<<() [7/18]

template<class Key , class T >
QDebugIfHasDebugStreamContainer< QMultiMap< Key, T >, Key, T > operator<< ( QDebug debug,
const QMultiMap< Key, T > & map )
related

Definition at line 267 of file qdebug.h.

◆ operator<<() [8/18]

template<typename T >
QDebugIfHasDebugStreamContainer< QSet< T >, T > operator<< ( QDebug debug,
const QSet< T > & set )
related

Definition at line 267 of file qdebug.h.

◆ operator<<() [9/18]

template<class T >
QDebug operator<< ( QDebug debug,
const QSharedPointer< T > & ptr )
related

Definition at line 466 of file qdebug.h.

◆ operator<<() [10/18]

template<typename T , typename Tag >
QDebug operator<< ( QDebug debug,
const QTaggedPointer< T, Tag > & ptr )
inline

Definition at line 476 of file qdebug.h.

References debug, and ptr().

+ Here is the call graph for this function:

◆ operator<<() [11/18]

template<typename T , qsizetype P>
QDebugIfHasDebugStream< T > operator<< ( QDebug debug,
const QVarLengthArray< T, P > & vec )
related

Definition at line 267 of file qdebug.h.

◆ operator<<() [12/18]

template<typename T , typename Alloc >
QDebugIfHasDebugStream< T > operator<< ( QDebug debug,
const std::list< T, Alloc > & vec )
related

Definition at line 267 of file qdebug.h.

◆ operator<<() [13/18]

template<typename Key , typename T , typename Compare , typename Alloc >
QDebugIfHasDebugStream< Key, T > operator<< ( QDebug debug,
const std::map< Key, T, Compare, Alloc > & map )
related

Definition at line 267 of file qdebug.h.

◆ operator<<() [14/18]

template<typename Key , typename T , typename Compare , typename Alloc >
QDebugIfHasDebugStream< Key, T > operator<< ( QDebug debug,
const std::multimap< Key, T, Compare, Alloc > & map )
related

Definition at line 267 of file qdebug.h.

◆ operator<<() [15/18]

template<class T >
QDebugIfHasDebugStream< T > operator<< ( QDebug debug,
const std::optional< T > & opt )
related

Definition at line 267 of file qdebug.h.

◆ operator<<() [16/18]

template<class T1 , class T2 >
QDebugIfHasDebugStream< T1, T2 > operator<< ( QDebug debug,
const std::pair< T1, T2 > & pair )
related

Definition at line 267 of file qdebug.h.

◆ operator<<() [17/18]

template<typename T , typename Alloc >
QDebugIfHasDebugStream< T > operator<< ( QDebug debug,
const std::vector< T, Alloc > & vec )
related

Definition at line 267 of file qdebug.h.

◆ operator<<() [18/18]

template<typename T >
QDebugIfHasDebugStream< T > operator<< ( QDebug debug,
std::initializer_list< T > list )
inline

Definition at line 267 of file qdebug.h.

◆ qt_QMetaEnum_debugOperator()

Q_CORE_EXPORT QDebug qt_QMetaEnum_debugOperator ( QDebug & dbg,
qint64 value,
const QMetaObject * meta,
const char * name )

Formats the given enum value for debug output.

The supported verbosity are:

0: Just the key, or value with enum name if no key is found:

MyEnum2 MyEnum(123) MyScopedEnum::Enum3 MyScopedEnum(456)

1: Same as 0, but treating all enums as scoped:

MyEnum::MyEnum2 MyEnum(123) MyScopedEnum::Enum3 MyScopedEnum(456)

2: The QDebug default. Same as 0, and includes class/namespace scope:

MyNamespace::MyClass::MyEnum2 MyNamespace::MyClass::MyEnum(123) MyNamespace::MyClass::MyScopedEnum::Enum3 MyNamespace::MyClass::MyScopedEnum(456)

3: Same as 2, but treating all enums as scoped:

MyNamespace::MyClass::MyEnum::MyEnum2 MyNamespace::MyClass::MyEnum(123) MyNamespace::MyClass::MyScopedEnum::Enum3 MyNamespace::MyClass::MyScopedEnum(456)

Definition at line 1287 of file qdebug.cpp.

References QMetaObject::enumerator(), QMetaEnum::enumName(), QMetaObject::indexOfEnumerator(), QMetaEnum::isScoped(), QMetaEnum::scope(), and QMetaEnum::valueToKey().

Referenced by operator<<().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ qt_QMetaEnum_flagDebugOperator() [1/3]

Q_CORE_EXPORT QDebug qt_QMetaEnum_flagDebugOperator ( QDebug & debug,
quint64 value,
const QMetaObject * meta,
const char * name )

Formats the given flag value for debug output.

The supported verbosity are:

0: Just the key(s):

MyFlag1 MyFlag2|MyFlag3 MyScopedFlag(MyFlag2) MyScopedFlag(MyFlag2|MyFlag3)

1: Same as 0, but treating all flags as scoped:

MyFlag(MyFlag1) MyFlag(MyFlag2|MyFlag3) MyScopedFlag(MyFlag2) MyScopedFlag(MyFlag2|MyFlag3)

2: The QDebug default. Same as 1, and includes class/namespace scope:

QFlags<MyNamespace::MyClass::MyFlag>(MyFlag1) QFlags<MyNamespace::MyClass::MyFlag>(MyFlag2|MyFlag3) QFlags<MyNamespace::MyClass::MyScopedFlag>(MyFlag2) QFlags<MyNamespace::MyClass::MyScopedFlag>(MyFlag2|MyFlag3)

Definition at line 1341 of file qdebug.cpp.

References debug, QMetaObject::enumerator(), QMetaEnum::enumName(), QMetaObject::indexOfEnumerator(), QMetaEnum::isScoped(), QMetaEnum::scope(), and QMetaEnum::valueToKeys().

+ Here is the call graph for this function:

◆ qt_QMetaEnum_flagDebugOperator() [2/3]

Q_CORE_EXPORT void qt_QMetaEnum_flagDebugOperator ( QDebug & debug,
size_t sizeofT,
int value )

Specialization of the primary template in qdebug.h to out-of-line the common case of QFlags<T>::Int being int.

Just call the generic version so the two don't get out of sync.

Definition at line 1246 of file qdebug.cpp.

References debug.

◆ qt_QMetaEnum_flagDebugOperator() [3/3]

template<typename Int >
void qt_QMetaEnum_flagDebugOperator ( QDebug & debug,
size_t sizeofT,
Int value )

Definition at line 486 of file qdebug.h.

References debug, Qt::hex(), i, and Qt::showbase().

+ Here is the call graph for this function: