Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qdebug.h File Reference

(b1509550436400ec9be608b5c760501d9b86912a)

#include <QtCore/qcompare.h>
#include <QtCore/qcontainerfwd.h>
#include <QtCore/qfloat16.h>
#include <QtCore/qtextstream.h>
#include <QtCore/qttypetraits.h>
#include <QtCore/qtypes.h>
#include <QtCore/qstring.h>
#include <QtCore/qcontiguouscache.h>
#include <QtCore/qsharedpointer.h>
#include <array>
#include <chrono>
#include <list>
#include <map>
#include <memory>
#include <optional>
#include <set>
#include <string>
#include <string_view>
#include <tuple>
#include <QtCore/q20type_traits.h>
#include <unordered_map>
#include <unordered_set>
#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.

Classes

struct  QtPrivate::EnumHasQFlag< T, IsEnum, bool >
 
struct  QtPrivate::EnumHasQFlag< T, true, true >
 
struct  QtPrivate::EnumHasQEnum< T, IsEnum, HasQFlag >
 
struct  QtPrivate::EnumHasQEnum< T, true, false >
 

Namespaces

namespace  QtPrivate
 

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, std::size_t N>
QDebugIfHasDebugStream< T > operator<< (QDebug debug, const std::array< T, N > &array)
 
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<typename Key, typename Compare, typename Alloc>
QDebugIfHasDebugStream< Keyoperator<< (QDebug debug, const std::multiset< Key, Compare, Alloc > &multiset)
 
template<typename Key, typename Compare, typename Alloc>
QDebugIfHasDebugStream< Keyoperator<< (QDebug debug, const std::set< Key, Compare, Alloc > &set)
 
template<typename Key, typename T, typename Hash, typename KeyEqual, typename Alloc>
QDebugIfHasDebugStream< Key, T > operator<< (QDebug debug, const std::unordered_map< Key, T, Hash, KeyEqual, Alloc > &unordered_map)
 
template<typename Key, typename Hash, typename KeyEqual, typename Alloc>
QDebugIfHasDebugStream< Keyoperator<< (QDebug debug, const std::unordered_set< Key, Hash, KeyEqual, Alloc > &unordered_set)
 
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 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 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)
 
Q_CORE_EXPORT void qt_QMetaEnum_flagDebugOperator (QDebug &debug, size_t sizeofT, uint value)
 
Q_CORE_EXPORT void qt_QMetaEnum_flagDebugOperator (QDebug &debug, size_t sizeofT, quint64 value)
 
template<typename Int>
void qt_QMetaEnum_flagDebugOperator (QDebug &debug, size_t sizeofT, Int value)
 
template<class Flags, std::enable_if_t< QtPrivate::IsQFlags< Flags >::value, bool > = true>
QDebug operator<< (QDebug debug, Flags flags)
 
template<typename T>
std::enable_if_t< QtPrivate::EnumHasQFlag< T >::Value, QDebugoperator<< (QDebug debug, T flag)
 
template<typename T>
std::enable_if_t< QtPrivate::EnumHasQEnum< T >::Value, QDebugoperator<< (QDebug dbg, T value)
 
QDebug operator<< (QDebug debug, QKeyCombination combination)
 

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 401 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 405 of file qdebug.h.

Function Documentation

◆ operator<<() [1/25]

template<typename T>
std::enable_if_t< QtPrivate::EnumHasQEnum< T >::Value, QDebug > operator<< ( QDebug dbg,
T value )

Definition at line 637 of file qdebug.h.

◆ operator<<() [2/25]

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

Definition at line 359 of file qdebug.h.

◆ operator<<() [3/25]

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

Definition at line 359 of file qdebug.h.

◆ operator<<() [4/25]

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

Definition at line 359 of file qdebug.h.

◆ operator<<() [5/25]

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

Definition at line 359 of file qdebug.h.

◆ operator<<() [6/25]

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

Definition at line 359 of file qdebug.h.

◆ operator<<() [7/25]

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

Definition at line 359 of file qdebug.h.

◆ operator<<() [8/25]

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

Definition at line 359 of file qdebug.h.

◆ operator<<() [9/25]

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

Definition at line 592 of file qdebug.h.

◆ operator<<() [10/25]

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

Definition at line 602 of file qdebug.h.

◆ operator<<() [11/25]

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

Definition at line 359 of file qdebug.h.

◆ operator<<() [12/25]

template<typename T, std::size_t N>
QDebugIfHasDebugStream< T > operator<< ( QDebug debug,
const std::array< T, N > & array )
related

Definition at line 359 of file qdebug.h.

◆ operator<<() [13/25]

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

Definition at line 359 of file qdebug.h.

◆ operator<<() [14/25]

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 359 of file qdebug.h.

◆ operator<<() [15/25]

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 359 of file qdebug.h.

◆ operator<<() [16/25]

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

Definition at line 359 of file qdebug.h.

◆ operator<<() [17/25]

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

Definition at line 359 of file qdebug.h.

◆ operator<<() [18/25]

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

Definition at line 359 of file qdebug.h.

◆ operator<<() [19/25]

template<typename Key, typename T, typename Hash, typename KeyEqual, typename Alloc>
QDebugIfHasDebugStream< Key, T > operator<< ( QDebug debug,
const std::unordered_map< Key, T, Hash, KeyEqual, Alloc > & unordered_map )
related

Definition at line 359 of file qdebug.h.

◆ operator<<() [20/25]

template<typename Key, typename Hash, typename KeyEqual, typename Alloc>
QDebugIfHasDebugStream< Key > operator<< ( QDebug debug,
const std::unordered_set< Key, Hash, KeyEqual, Alloc > & unordered_set )
related

Definition at line 359 of file qdebug.h.

◆ operator<<() [21/25]

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

Definition at line 359 of file qdebug.h.

◆ operator<<() [22/25]

template<class Flags, std::enable_if_t< QtPrivate::IsQFlags< Flags >::value, bool > = true>
QDebug operator<< ( QDebug debug,
Flags flags )
inline

Definition at line 637 of file qdebug.h.

◆ operator<<() [23/25]

QDebug operator<< ( QDebug debug,
QKeyCombination combination )
inline

Definition at line 701 of file qdebug.h.

◆ operator<<() [24/25]

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

Definition at line 359 of file qdebug.h.

◆ operator<<() [25/25]

template<typename T>
std::enable_if_t< QtPrivate::EnumHasQFlag< T >::Value, QDebug > operator<< ( QDebug debug,
T flag )

Definition at line 637 of file qdebug.h.

◆ qt_QMetaEnum_debugOperator()

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 1457 of file qdebug.cpp.

◆ qt_QMetaEnum_flagDebugOperator() [1/4]

QDebug qt_QMetaEnum_flagDebugOperator ( QDebug & dbg,
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 1511 of file qdebug.cpp.

◆ qt_QMetaEnum_flagDebugOperator() [2/4]

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

Definition at line 615 of file qdebug.h.

◆ qt_QMetaEnum_flagDebugOperator() [3/4]

void qt_QMetaEnum_flagDebugOperator ( QDebug & debug,
size_t sizeofT,
quint64 value )

Ditto, for 64-bit.

Definition at line 1415 of file qdebug.cpp.

◆ qt_QMetaEnum_flagDebugOperator() [4/4]

void qt_QMetaEnum_flagDebugOperator ( QDebug & debug,
size_t sizeofT,
uint value )

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

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

Definition at line 1406 of file qdebug.cpp.