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
QTaggedPointer< T, Tag > Class Template Reference

#include <qtaggedpointer.h>

+ Collaboration diagram for QTaggedPointer< T, Tag >:

Public Types

using Type = T
 
using TagType = Tag
 

Public Member Functions

Q_NODISCARD_CTOR constexpr QTaggedPointer () noexcept
 
Q_NODISCARD_CTOR constexpr QTaggedPointer (std::nullptr_t) noexcept
 
Q_NODISCARD_CTOR QTaggedPointer (T *pointer, Tag tag=Tag()) noexcept
 
Typeoperator* () const noexcept
 
Typeoperator-> () const noexcept
 
 operator bool () const noexcept
 
template<typename U , std::enable_if_t< std::is_convertible_v< U *, T * >, bool > = false>
QTaggedPointeroperator= (U *other) noexcept
 
template<typename U , std::enable_if_t< std::is_null_pointer_v< U >, bool > = false>
QTaggedPointeroperator= (U) noexcept
 
void setTag (Tag tag)
 
Tag tag () const noexcept
 
T * data () const noexcept
 
bool isNull () const noexcept
 
void swap (QTaggedPointer &other) noexcept
 

Static Public Member Functions

static constexpr quintptr tagMask ()
 
static constexpr quintptr pointerMask ()
 
static constexpr Tag maximumTag () noexcept
 

Protected Attributes

quintptr d
 

Friends

bool operator== (QTaggedPointer lhs, QTaggedPointer rhs) noexcept
 
bool operator!= (QTaggedPointer lhs, QTaggedPointer rhs) noexcept
 
bool operator== (QTaggedPointer lhs, std::nullptr_t) noexcept
 
bool operator== (std::nullptr_t, QTaggedPointer rhs) noexcept
 
bool operator!= (QTaggedPointer lhs, std::nullptr_t) noexcept
 
bool operator!= (std::nullptr_t, QTaggedPointer rhs) noexcept
 
bool operator! (QTaggedPointer ptr) noexcept
 
void swap (QTaggedPointer &p1, QTaggedPointer &p2) noexcept
 

Detailed Description

template<typename T, typename Tag = typename QtPrivate::TagInfo<T>::TagType>
class QTaggedPointer< T, Tag >

Definition at line 37 of file qtaggedpointer.h.

Member Typedef Documentation

◆ TagType

template<typename T , typename Tag = typename QtPrivate::TagInfo<T>::TagType>
using QTaggedPointer< T, Tag >::TagType = Tag

Definition at line 41 of file qtaggedpointer.h.

◆ Type

template<typename T , typename Tag = typename QtPrivate::TagInfo<T>::TagType>
using QTaggedPointer< T, Tag >::Type = T

Definition at line 40 of file qtaggedpointer.h.

Constructor & Destructor Documentation

◆ QTaggedPointer() [1/3]

template<typename T , typename Tag = typename QtPrivate::TagInfo<T>::TagType>
Q_NODISCARD_CTOR constexpr QTaggedPointer< T, Tag >::QTaggedPointer ( )
inlineconstexprnoexcept

Definition at line 46 of file qtaggedpointer.h.

◆ QTaggedPointer() [2/3]

template<typename T , typename Tag = typename QtPrivate::TagInfo<T>::TagType>
Q_NODISCARD_CTOR constexpr QTaggedPointer< T, Tag >::QTaggedPointer ( std::nullptr_t )
inlineconstexprnoexcept

Definition at line 47 of file qtaggedpointer.h.

◆ QTaggedPointer() [3/3]

template<typename T , typename Tag = typename QtPrivate::TagInfo<T>::TagType>
Q_NODISCARD_CTOR QTaggedPointer< T, Tag >::QTaggedPointer ( T * pointer,
Tag tag = Tag() )
inlineexplicitnoexcept

Definition at line 49 of file qtaggedpointer.h.

References QTaggedPointer< T, Tag >::pointerMask(), Q_ASSERT_X, QTaggedPointer< T, Tag >::tag(), and QTaggedPointer< T, Tag >::tagMask().

+ Here is the call graph for this function:

Member Function Documentation

◆ data()

◆ isNull()

template<typename T , typename Tag = typename QtPrivate::TagInfo<T>::TagType>
bool QTaggedPointer< T, Tag >::isNull ( ) const
inlinenoexcept

Definition at line 125 of file qtaggedpointer.h.

References QTaggedPointer< T, Tag >::data().

Referenced by QQmlJavaScriptExpression::hasDelayedError(), QQmlJavaScriptExpression::hasError(), and QTaggedPointer< T, Tag >::operator bool().

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

◆ maximumTag()

template<typename T , typename Tag = typename QtPrivate::TagInfo<T>::TagType>
static constexpr Tag QTaggedPointer< T, Tag >::maximumTag ( )
inlinestaticconstexprnoexcept

Definition at line 100 of file qtaggedpointer.h.

References QTaggedPointer< T, Tag >::tagMask().

+ Here is the call graph for this function:

◆ operator bool()

template<typename T , typename Tag = typename QtPrivate::TagInfo<T>::TagType>
QTaggedPointer< T, Tag >::operator bool ( ) const
inlineexplicitnoexcept

Definition at line 70 of file qtaggedpointer.h.

References QTaggedPointer< T, Tag >::isNull().

+ Here is the call graph for this function:

◆ operator*()

template<typename T , typename Tag = typename QtPrivate::TagInfo<T>::TagType>
Type & QTaggedPointer< T, Tag >::operator* ( ) const
inlinenoexcept

Definition at line 59 of file qtaggedpointer.h.

References QTaggedPointer< T, Tag >::data(), and Q_ASSERT.

+ Here is the call graph for this function:

◆ operator->()

template<typename T , typename Tag = typename QtPrivate::TagInfo<T>::TagType>
Type * QTaggedPointer< T, Tag >::operator-> ( ) const
inlinenoexcept

Definition at line 65 of file qtaggedpointer.h.

References QTaggedPointer< T, Tag >::data().

+ Here is the call graph for this function:

◆ operator=() [1/2]

template<typename T , typename Tag = typename QtPrivate::TagInfo<T>::TagType>
template<typename U , std::enable_if_t< std::is_convertible_v< U *, T * >, bool > = false>
QTaggedPointer & QTaggedPointer< T, Tag >::operator= ( U * other)
inlinenoexcept

Definition at line 84 of file qtaggedpointer.h.

References QTaggedPointer< T, Tag >::d, other(), and QTaggedPointer< T, Tag >::tagMask().

+ Here is the call graph for this function:

◆ operator=() [2/2]

template<typename T , typename Tag = typename QtPrivate::TagInfo<T>::TagType>
template<typename U , std::enable_if_t< std::is_null_pointer_v< U >, bool > = false>
QTaggedPointer & QTaggedPointer< T, Tag >::operator= ( U )
inlinenoexcept

Definition at line 93 of file qtaggedpointer.h.

References QTaggedPointer< T, Tag >::d, and QTaggedPointer< T, Tag >::tagMask().

+ Here is the call graph for this function:

◆ pointerMask()

template<typename T , typename Tag = typename QtPrivate::TagInfo<T>::TagType>
static constexpr quintptr QTaggedPointer< T, Tag >::pointerMask ( )
inlinestaticconstexpr

Definition at line 44 of file qtaggedpointer.h.

Referenced by QTaggedPointer< T, Tag >::QTaggedPointer(), QTaggedPointer< T, Tag >::data(), QtPrivate::QTagPreservingPointerToPointer< T, Tag >::get(), and QTaggedPointer< T, Tag >::setTag().

+ Here is the caller graph for this function:

◆ setTag()

template<typename T , typename Tag = typename QtPrivate::TagInfo<T>::TagType>
void QTaggedPointer< T, Tag >::setTag ( Tag tag)
inline

Definition at line 105 of file qtaggedpointer.h.

References QTaggedPointer< T, Tag >::d, QTaggedPointer< T, Tag >::pointerMask(), Q_ASSERT_X, and QTaggedPointer< T, Tag >::tag().

Referenced by QPropertyObserverNodeProtector::QPropertyObserverNodeProtector(), QQmlPropertyBindingJS::expressionChanged(), QQmlIncubatorPrivate::incubateCppBasedComponent(), QLibrary::load(), QQmlAbstractBinding::setEnabledFlag(), QStringHashNode::setQString(), QQmlAbstractBinding::setUpdatingFlag(), QQmlVMEMetaObjectEndpoint::tryConnect(), and QLibrary::unload().

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

◆ swap()

template<typename T , typename Tag = typename QtPrivate::TagInfo<T>::TagType>
void QTaggedPointer< T, Tag >::swap ( QTaggedPointer< T, Tag > & other)
inlinenoexcept

Definition at line 130 of file qtaggedpointer.h.

References QTaggedPointer< T, Tag >::d, and other().

+ Here is the call graph for this function:

◆ tag()

template<typename T , typename Tag = typename QtPrivate::TagInfo<T>::TagType>
Tag QTaggedPointer< T, Tag >::tag ( ) const
inlinenoexcept

◆ tagMask()

template<typename T , typename Tag = typename QtPrivate::TagInfo<T>::TagType>
static constexpr quintptr QTaggedPointer< T, Tag >::tagMask ( )
inlinestaticconstexpr

Definition at line 43 of file qtaggedpointer.h.

Referenced by QTaggedPointer< T, Tag >::QTaggedPointer(), QTaggedPointer< T, Tag >::maximumTag(), QTaggedPointer< T, Tag >::operator=(), QTaggedPointer< T, Tag >::operator=(), and QTaggedPointer< T, Tag >::tag().

+ Here is the caller graph for this function:

Friends And Related Symbol Documentation

◆ operator!

template<typename T , typename Tag = typename QtPrivate::TagInfo<T>::TagType>
bool operator! ( QTaggedPointer< T, Tag > ptr)
friend

Definition at line 165 of file qtaggedpointer.h.

◆ operator!= [1/3]

template<typename T , typename Tag = typename QtPrivate::TagInfo<T>::TagType>
bool operator!= ( QTaggedPointer< T, Tag > lhs,
QTaggedPointer< T, Tag > rhs )
friend

Definition at line 140 of file qtaggedpointer.h.

◆ operator!= [2/3]

template<typename T , typename Tag = typename QtPrivate::TagInfo<T>::TagType>
bool operator!= ( QTaggedPointer< T, Tag > lhs,
std::nullptr_t  )
friend

Definition at line 155 of file qtaggedpointer.h.

◆ operator!= [3/3]

template<typename T , typename Tag = typename QtPrivate::TagInfo<T>::TagType>
bool operator!= ( std::nullptr_t ,
QTaggedPointer< T, Tag > rhs )
friend

Definition at line 160 of file qtaggedpointer.h.

◆ operator== [1/3]

template<typename T , typename Tag = typename QtPrivate::TagInfo<T>::TagType>
bool operator== ( QTaggedPointer< T, Tag > lhs,
QTaggedPointer< T, Tag > rhs )
friend

Definition at line 135 of file qtaggedpointer.h.

◆ operator== [2/3]

template<typename T , typename Tag = typename QtPrivate::TagInfo<T>::TagType>
bool operator== ( QTaggedPointer< T, Tag > lhs,
std::nullptr_t  )
friend

Definition at line 145 of file qtaggedpointer.h.

◆ operator== [3/3]

template<typename T , typename Tag = typename QtPrivate::TagInfo<T>::TagType>
bool operator== ( std::nullptr_t ,
QTaggedPointer< T, Tag > rhs )
friend

Definition at line 150 of file qtaggedpointer.h.

◆ swap

template<typename T , typename Tag = typename QtPrivate::TagInfo<T>::TagType>
void swap ( QTaggedPointer< T, Tag > & p1,
QTaggedPointer< T, Tag > & p2 )
friend

Definition at line 170 of file qtaggedpointer.h.

Member Data Documentation

◆ d


The documentation for this class was generated from the following files: