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
qtypeinfo.h File Reference

(97f3d41fa15a1dcaa17993436b9385ebd0fd274b)

#include <QtCore/qcompilerdetection.h>
#include <QtCore/qcontainerfwd.h>
#include <type_traits>
Include dependency graph for qtypeinfo.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  QTypeInfo< T >
class  QTypeInfo< void >
class  QTypeInfoMerger< T, Ts >
 \inmodule QtCore More...
class  QTypeInfo< std::pair< T1, T2 > >

Namespaces

namespace  QtPrivate

Macros

#define Q_DECLARE_MOVABLE_CONTAINER(CONTAINER)
#define Q_DECLARE_TYPEINFO_BODY(TYPE, FLAGS)
#define Q_DECLARE_TYPEINFO(TYPE, FLAGS)

Enumerations

enum  {
  Q_COMPLEX_TYPE = 0 , Q_PRIMITIVE_TYPE = 0x1 , Q_RELOCATABLE_TYPE = 0x2 , Q_MOVABLE_TYPE = 0x2 ,
  Q_DUMMY_TYPE = 0x4
}

Functions

 Q_DECLARE_MOVABLE_CONTAINER (QList)
 Q_DECLARE_MOVABLE_CONTAINER (QQueue)
 Q_DECLARE_MOVABLE_CONTAINER (QStack)
 Q_DECLARE_MOVABLE_CONTAINER (QSet)
 Q_DECLARE_MOVABLE_CONTAINER (QMap)
 Q_DECLARE_MOVABLE_CONTAINER (QMultiMap)
 Q_DECLARE_MOVABLE_CONTAINER (QHash)
 Q_DECLARE_MOVABLE_CONTAINER (QMultiHash)
 Q_DECLARE_MOVABLE_CONTAINER (QCache)
template<typename T>
 Q_DECLARE_TYPEINFO_BODY (QFlags< T >, Q_PRIMITIVE_TYPE)

Variables

template<typename T>
constexpr bool QtPrivate::qIsComplex
template<typename T>
constexpr bool QtPrivate::qIsRelocatable = std::is_trivially_copyable_v<T> && std::is_trivially_destructible_v<T>
template<typename T>
constexpr bool QtPrivate::qIsValueInitializationBitwiseZero

Macro Definition Documentation

◆ Q_DECLARE_MOVABLE_CONTAINER

#define Q_DECLARE_MOVABLE_CONTAINER ( CONTAINER)
Value:
template <typename ...T> \
class QTypeInfo<CONTAINER<T...>> \
{ \
public: \
enum { \
isPointer [[deprecated("Use std::is_pointer instead")]] = false, \
isIntegral [[deprecated("Use std::is_integral instead")]] = false, \
isComplex = true, \
isRelocatable = true, \
isValueInitializationBitwiseZero = false, \
}; \
}

Definition at line 130 of file qtypeinfo.h.

◆ Q_DECLARE_TYPEINFO

#define Q_DECLARE_TYPEINFO ( TYPE,
FLAGS )
Value:
template<> \
Q_DECLARE_TYPEINFO_BODY(TYPE, FLAGS)
const char * FLAGS
const char * TYPE

Definition at line 189 of file qtypeinfo.h.

◆ Q_DECLARE_TYPEINFO_BODY

#define Q_DECLARE_TYPEINFO_BODY ( TYPE,
FLAGS )
Value:
class QTypeInfo<TYPE > \
{ \
public: \
enum { \
isComplex = (((FLAGS) & Q_PRIMITIVE_TYPE) == 0) && QtPrivate::qIsComplex<TYPE>, \
isRelocatable = !isComplex || ((FLAGS) & Q_RELOCATABLE_TYPE) || QtPrivate::qIsRelocatable<TYPE>, \
isPointer [[deprecated("Use std::is_pointer instead")]] = std::is_pointer_v< TYPE >, \
isIntegral [[deprecated("Use std::is_integral instead")]] = std::is_integral< TYPE >::value, \
isValueInitializationBitwiseZero = QtPrivate::qIsValueInitializationBitwiseZero<TYPE>, \
}; \
static_assert(!QTypeInfo<TYPE>::isRelocatable || \
std::is_copy_constructible_v<TYPE > || \
std::is_move_constructible_v<TYPE >, \
#TYPE " is neither copy- nor move-constructible, so cannot be Q_RELOCATABLE_TYPE"); \
}
@ isRelocatable
Definition qtypeinfo.h:69
constexpr bool qIsRelocatable
Definition qtypeinfo.h:43
constexpr bool qIsValueInitializationBitwiseZero
Definition qtypeinfo.h:52
constexpr bool qIsComplex
Definition qtypeinfo.h:32
@ Q_PRIMITIVE_TYPE
Definition qtypeinfo.h:166
@ Q_RELOCATABLE_TYPE
Definition qtypeinfo.h:167

Definition at line 172 of file qtypeinfo.h.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
Q_COMPLEX_TYPE 
Q_PRIMITIVE_TYPE 
Q_RELOCATABLE_TYPE 
Q_MOVABLE_TYPE 
Q_DUMMY_TYPE 

Definition at line 164 of file qtypeinfo.h.

Function Documentation

◆ Q_DECLARE_MOVABLE_CONTAINER() [1/9]

Q_DECLARE_MOVABLE_CONTAINER ( QCache )

◆ Q_DECLARE_MOVABLE_CONTAINER() [2/9]

Q_DECLARE_MOVABLE_CONTAINER ( QHash )

◆ Q_DECLARE_MOVABLE_CONTAINER() [3/9]

Q_DECLARE_MOVABLE_CONTAINER ( QList )

◆ Q_DECLARE_MOVABLE_CONTAINER() [4/9]

Q_DECLARE_MOVABLE_CONTAINER ( QMap )

◆ Q_DECLARE_MOVABLE_CONTAINER() [5/9]

Q_DECLARE_MOVABLE_CONTAINER ( QMultiHash )

◆ Q_DECLARE_MOVABLE_CONTAINER() [6/9]

Q_DECLARE_MOVABLE_CONTAINER ( QMultiMap )

◆ Q_DECLARE_MOVABLE_CONTAINER() [7/9]

Q_DECLARE_MOVABLE_CONTAINER ( QQueue )

◆ Q_DECLARE_MOVABLE_CONTAINER() [8/9]

Q_DECLARE_MOVABLE_CONTAINER ( QSet )

◆ Q_DECLARE_MOVABLE_CONTAINER() [9/9]

Q_DECLARE_MOVABLE_CONTAINER ( QStack )

◆ Q_DECLARE_TYPEINFO_BODY()

template<typename T>
Q_DECLARE_TYPEINFO_BODY ( QFlags< T > ,
Q_PRIMITIVE_TYPE  )