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
QArrayDataPointer< T > Struct Template Reference

#include <qarraydatapointer.h>

Collaboration diagram for QArrayDataPointer< T >:

Public Types

enum  { pass_parameter_by_value }
typedef std::conditional< pass_parameter_by_value, T, constT & >::type parameter_type

Public Member Functions

Q_NODISCARD_CTOR constexpr QArrayDataPointer ()=default
Q_NODISCARD_CTOR QArrayDataPointer (const QArrayDataPointer &other) noexcept
Q_NODISCARD_CTOR constexpr QArrayDataPointer (Data *header, T *adata, qsizetype n=0) noexcept
Q_NODISCARD_CTOR QArrayDataPointer (QTypedArrayAllocationResult< T > adata, qsizetype n=0) noexcept
Q_NODISCARD_CTOR QArrayDataPointer (qsizetype alloc, qsizetype n=0, QArrayData::AllocationOption option=QArrayData::KeepSize)
QArrayDataPointeroperator= (const QArrayDataPointer &other) noexcept
Q_NODISCARD_CTOR QArrayDataPointer (QArrayDataPointer &&other) noexcept
DataOps operator* () noexcept
DataOps operator-> () noexcept
 ~QArrayDataPointer ()
constexpr bool isNull () const noexcept
T * data () noexcept
const T * data () const noexcept
T * begin () noexcept
T * end () noexcept
const T * begin () const noexcept
const T * end () const noexcept
const T * constBegin () const noexcept
const T * constEnd () const noexcept
void swap (QArrayDataPointer &other) noexcept
void clear () noexcept(std::is_nothrow_destructible< T >::value)
void detach (QArrayDataPointer *old=nullptr)
template<typename X>
QArrayDataPointer< Xreinterpreted () &&
void detachAndGrow (QArrayData::GrowthPosition where, qsizetype n, const T **data, QArrayDataPointer *old)
Q_NEVER_INLINE void reallocateAndGrow (QArrayData::GrowthPosition where, qsizetype n, QArrayDataPointer *old=nullptr)
bool tryReadjustFreeSpace (QArrayData::GrowthPosition pos, qsizetype n, const T **data=nullptr)
void relocate (qsizetype offset, const T **data=nullptr)
QArrayDataPointer sliced (qsizetype pos, qsizetype n) const &
QArrayDataPointer sliced (qsizetype pos, qsizetype n) &&
void appendInitialize (qsizetype newSize)
qsizetype allocatedCapacity () noexcept
qsizetype constAllocatedCapacity () const noexcept
void ref () noexcept
bool deref () noexcept
bool isMutable () const noexcept
bool isShared () const noexcept
bool isSharedWith (const QArrayDataPointer &other) const noexcept
bool needsDetach () const noexcept
qsizetype detachCapacity (qsizetype newSize) const noexcept
const Data::ArrayOptions flags () const noexcept
void setFlag (typename Data::ArrayOptions f) noexcept
void clearFlag (typename Data::ArrayOptions f) noexcept
Datad_ptr () noexcept
void setBegin (T *begin) noexcept
qsizetype freeSpaceAtBegin () const noexcept
qsizetype freeSpaceAtEnd () const noexcept

Static Public Member Functions

static Q_NODISCARD_CTOR QArrayDataPointer fromRawData (const T *rawData, qsizetype length) noexcept
static QArrayDataPointer allocateGrow (const QArrayDataPointer &from, qsizetype n, QArrayData::GrowthPosition position)

Public Attributes

T * ptr = nullptr
qsizetype size = 0
Datad = nullptr

Friends

bool operator== (const QArrayDataPointer &lhs, const QArrayDataPointer &rhs) noexcept
bool operator!= (const QArrayDataPointer &lhs, const QArrayDataPointer &rhs) noexcept

Detailed Description

template<class T>
struct QArrayDataPointer< T >

Definition at line 14 of file qarraydatapointer.h.

Member Typedef Documentation

◆ parameter_type

template<class T>
typedef std::conditional<pass_parameter_by_value,T,constT&>::type QArrayDataPointer< T >::parameter_type

Definition at line 29 of file qarraydatapointer.h.

Member Enumeration Documentation

◆ anonymous enum

template<class T>
anonymous enum
Enumerator
pass_parameter_by_value 

Definition at line 21 of file qarraydatapointer.h.

Constructor & Destructor Documentation

◆ QArrayDataPointer() [1/6]

template<class T>
Q_NODISCARD_CTOR constexpr QArrayDataPointer< T >::QArrayDataPointer ( )
constexprdefault

◆ QArrayDataPointer() [2/6]

template<class T>
Q_NODISCARD_CTOR QArrayDataPointer< T >::QArrayDataPointer ( const QArrayDataPointer< T > & other)
inlinenoexcept

Definition at line 35 of file qarraydatapointer.h.

◆ QArrayDataPointer() [3/6]

template<class T>
Q_NODISCARD_CTOR constexpr QArrayDataPointer< T >::QArrayDataPointer ( Data * header,
T * adata,
qsizetype n = 0 )
inlineconstexprnoexcept

Definition at line 42 of file qarraydatapointer.h.

◆ QArrayDataPointer() [4/6]

template<class T>
Q_NODISCARD_CTOR QArrayDataPointer< T >::QArrayDataPointer ( QTypedArrayAllocationResult< T > adata,
qsizetype n = 0 )
inlineexplicitnoexcept

Definition at line 52 of file qarraydatapointer.h.

◆ QArrayDataPointer() [5/6]

template<class T>
Q_NODISCARD_CTOR QArrayDataPointer< T >::QArrayDataPointer ( qsizetype alloc,
qsizetype n = 0,
QArrayData::AllocationOption option = QArrayData::KeepSize )
inlineexplicit

Definition at line 58 of file qarraydatapointer.h.

◆ QArrayDataPointer() [6/6]

template<class T>
Q_NODISCARD_CTOR QArrayDataPointer< T >::QArrayDataPointer ( QArrayDataPointer< T > && other)
inlinenoexcept

Definition at line 79 of file qarraydatapointer.h.

◆ ~QArrayDataPointer()

template<class T>
QArrayDataPointer< T >::~QArrayDataPointer ( )
inline

Definition at line 98 of file qarraydatapointer.h.

Member Function Documentation

◆ allocatedCapacity()

template<class T>
qsizetype QArrayDataPointer< T >::allocatedCapacity ( )
inlinenoexcept

Definition at line 349 of file qarraydatapointer.h.

◆ allocateGrow()

template<class T>
QArrayDataPointer QArrayDataPointer< T >::allocateGrow ( const QArrayDataPointer< T > & from,
qsizetype n,
QArrayData::GrowthPosition position )
inlinestatic

Definition at line 380 of file qarraydatapointer.h.

◆ appendInitialize()

template<class T>
void QArrayDataPointer< T >::appendInitialize ( qsizetype newSize)
inline

Definition at line 335 of file qarraydatapointer.h.

◆ begin() [1/2]

template<class T>
const T * QArrayDataPointer< T >::begin ( ) const
inlinenoexcept

Definition at line 116 of file qarraydatapointer.h.

◆ begin() [2/2]

template<class T>
T * QArrayDataPointer< T >::begin ( )
inlinenoexcept

Definition at line 114 of file qarraydatapointer.h.

◆ clear()

template<class T>
void QArrayDataPointer< T >::clear ( )
inlinenoexcept

Definition at line 128 of file qarraydatapointer.h.

◆ clearFlag()

template<class T>
void QArrayDataPointer< T >::clearFlag ( typename Data::ArrayOptions f)
inlinenoexcept

Definition at line 360 of file qarraydatapointer.h.

◆ constAllocatedCapacity()

template<class T>
qsizetype QArrayDataPointer< T >::constAllocatedCapacity ( ) const
inlinenoexcept

Definition at line 350 of file qarraydatapointer.h.

◆ constBegin()

template<class T>
const T * QArrayDataPointer< T >::constBegin ( ) const
inlinenoexcept

Definition at line 118 of file qarraydatapointer.h.

◆ constEnd()

template<class T>
const T * QArrayDataPointer< T >::constEnd ( ) const
inlinenoexcept

Definition at line 119 of file qarraydatapointer.h.

◆ d_ptr()

template<class T>
Data * QArrayDataPointer< T >::d_ptr ( )
inlinenoexcept

Definition at line 362 of file qarraydatapointer.h.

◆ data() [1/2]

template<class T>
const T * QArrayDataPointer< T >::data ( ) const
inlinenoexcept

Definition at line 112 of file qarraydatapointer.h.

◆ data() [2/2]

template<class T>
T * QArrayDataPointer< T >::data ( )
inlinenoexcept

Definition at line 111 of file qarraydatapointer.h.

◆ deref()

template<class T>
bool QArrayDataPointer< T >::deref ( )
inlinenoexcept

Definition at line 352 of file qarraydatapointer.h.

◆ detach()

template<class T>
void QArrayDataPointer< T >::detach ( QArrayDataPointer< T > * old = nullptr)
inline

Definition at line 134 of file qarraydatapointer.h.

◆ detachAndGrow()

template<class T>
void QArrayDataPointer< T >::detachAndGrow ( QArrayData::GrowthPosition where,
qsizetype n,
const T ** data,
QArrayDataPointer< T > * old )
inline

Detaches this (optionally) and grows to accommodate the free space for n elements at the required side. The side is determined from pos.

data pointer can be provided when the caller knows that data points into range [this->begin(), this->end()). In case it is, *data would be updated so that it continues to point to the element it was pointing to before the data move. if data does not point into range, one can/should pass nullptr.

Similarly to data, old, pointer to a default-constructed QADP, can be provided when the caller expects to e.g. copy the data from this to itself:

qsizetype pos = getArbitraryPos();
list.insert(pos, list.begin(), list.end());
Definition qlist.h:81
ptrdiff_t qsizetype
Definition qtypes.h:184
QList< int > list
[14]

The default rule would be: data and old must either both be valid pointers, or both equal to nullptr.

Definition at line 185 of file qarraydatapointer.h.

◆ detachCapacity()

template<class T>
qsizetype QArrayDataPointer< T >::detachCapacity ( qsizetype newSize) const
inlinenoexcept

Definition at line 357 of file qarraydatapointer.h.

◆ end() [1/2]

template<class T>
const T * QArrayDataPointer< T >::end ( ) const
inlinenoexcept

Definition at line 117 of file qarraydatapointer.h.

◆ end() [2/2]

template<class T>
T * QArrayDataPointer< T >::end ( )
inlinenoexcept

Definition at line 115 of file qarraydatapointer.h.

◆ flags()

template<class T>
const Data::ArrayOptions QArrayDataPointer< T >::flags ( ) const
inlinenoexcept

Definition at line 358 of file qarraydatapointer.h.

◆ freeSpaceAtBegin()

template<class T>
qsizetype QArrayDataPointer< T >::freeSpaceAtBegin ( ) const
inlinenoexcept

Definition at line 365 of file qarraydatapointer.h.

◆ freeSpaceAtEnd()

template<class T>
qsizetype QArrayDataPointer< T >::freeSpaceAtEnd ( ) const
inlinenoexcept

Definition at line 372 of file qarraydatapointer.h.

◆ fromRawData()

template<class T>
Q_NODISCARD_CTOR QArrayDataPointer QArrayDataPointer< T >::fromRawData ( const T * rawData,
qsizetype length )
inlinestaticnoexcept

Definition at line 65 of file qarraydatapointer.h.

◆ isMutable()

template<class T>
bool QArrayDataPointer< T >::isMutable ( ) const
inlinenoexcept

Definition at line 353 of file qarraydatapointer.h.

◆ isNull()

template<class T>
bool QArrayDataPointer< T >::isNull ( ) const
inlineconstexprnoexcept

Definition at line 106 of file qarraydatapointer.h.

◆ isShared()

template<class T>
bool QArrayDataPointer< T >::isShared ( ) const
inlinenoexcept

Definition at line 354 of file qarraydatapointer.h.

◆ isSharedWith()

template<class T>
bool QArrayDataPointer< T >::isSharedWith ( const QArrayDataPointer< T > & other) const
inlinenoexcept

Definition at line 355 of file qarraydatapointer.h.

◆ needsDetach()

template<class T>
bool QArrayDataPointer< T >::needsDetach ( ) const
inlinenoexcept

Definition at line 356 of file qarraydatapointer.h.

◆ operator*()

template<class T>
DataOps QArrayDataPointer< T >::operator* ( )
inlinenoexcept

Definition at line 88 of file qarraydatapointer.h.

◆ operator->()

template<class T>
DataOps QArrayDataPointer< T >::operator-> ( )
inlinenoexcept

Definition at line 93 of file qarraydatapointer.h.

◆ operator=()

template<class T>
QArrayDataPointer & QArrayDataPointer< T >::operator= ( const QArrayDataPointer< T > & other)
inlinenoexcept

Definition at line 71 of file qarraydatapointer.h.

◆ reallocateAndGrow()

template<class T>
Q_NEVER_INLINE void QArrayDataPointer< T >::reallocateAndGrow ( QArrayData::GrowthPosition where,
qsizetype n,
QArrayDataPointer< T > * old = nullptr )
inline

Reallocates to accommodate the free space for n elements at the required side. The side is determined from pos. Might also shrink when n < 0.

Definition at line 210 of file qarraydatapointer.h.

◆ ref()

template<class T>
void QArrayDataPointer< T >::ref ( )
inlinenoexcept

Definition at line 351 of file qarraydatapointer.h.

◆ reinterpreted()

template<class T>
template<typename X>
QArrayDataPointer< X > QArrayDataPointer< T >::reinterpreted ( ) &&
inline

Reinterprets the data of this QArrayDataPointer to type X. It's the caller's responsibility to ensure that the data contents are valid and properly aligned, particularly if T and X are not trivial types (i.e, don't do that). The current size is kept and the allocated capacity is updated to account for the difference in the element type's size.

This is used in QString::fromLatin1 to perform in-place conversion of QString to QByteArray.

Definition at line 151 of file qarraydatapointer.h.

◆ relocate()

template<class T>
void QArrayDataPointer< T >::relocate ( qsizetype offset,
const T ** data = nullptr )
inline

Relocates [begin(), end()) by offset and updates data if it is not nullptr and points into [begin(), end()).

Definition at line 305 of file qarraydatapointer.h.

◆ setBegin()

template<class T>
void QArrayDataPointer< T >::setBegin ( T * begin)
inlinenoexcept

Definition at line 363 of file qarraydatapointer.h.

◆ setFlag()

template<class T>
void QArrayDataPointer< T >::setFlag ( typename Data::ArrayOptions f)
inlinenoexcept

Definition at line 359 of file qarraydatapointer.h.

◆ sliced() [1/2]

template<class T>
QArrayDataPointer QArrayDataPointer< T >::sliced ( qsizetype pos,
qsizetype n ) &&
inline

Definition at line 323 of file qarraydatapointer.h.

◆ sliced() [2/2]

template<class T>
QArrayDataPointer QArrayDataPointer< T >::sliced ( qsizetype pos,
qsizetype n ) const &
inline

Definition at line 315 of file qarraydatapointer.h.

◆ swap()

template<class T>
void QArrayDataPointer< T >::swap ( QArrayDataPointer< T > & other)
inlinenoexcept

Definition at line 121 of file qarraydatapointer.h.

◆ tryReadjustFreeSpace()

template<class T>
bool QArrayDataPointer< T >::tryReadjustFreeSpace ( QArrayData::GrowthPosition pos,
qsizetype n,
const T ** data = nullptr )
inline

Attempts to relocate [begin(), end()) to accommodate the free space for n elements at the required side. The side is determined from pos.

Returns true if the internal data is moved. Returns false when there is no point in moving the data or the move is impossible. If false is returned, it is the responsibility of the caller to figure out how to accommodate the free space for n elements at pos.

This function expects that certain preconditions are met, e.g. the detach is not needed, n > 0 and so on. This is intentional to reduce the number of if-statements when the caller knows that preconditions would be satisfied.

See also
reallocateAndGrow

Definition at line 261 of file qarraydatapointer.h.

◆ operator!=

template<class T>
bool operator!= ( const QArrayDataPointer< T > & lhs,
const QArrayDataPointer< T > & rhs )
friend

Definition at line 411 of file qarraydatapointer.h.

◆ operator==

template<class T>
bool operator== ( const QArrayDataPointer< T > & lhs,
const QArrayDataPointer< T > & rhs )
friend

Definition at line 406 of file qarraydatapointer.h.

Member Data Documentation

◆ d

template<class T>
Data* QArrayDataPointer< T >::d = nullptr

Definition at line 422 of file qarraydatapointer.h.

◆ ptr

template<class T>
T* QArrayDataPointer< T >::ptr = nullptr

Definition at line 419 of file qarraydatapointer.h.

◆ size

template<class T>
qsizetype QArrayDataPointer< T >::size = 0

Definition at line 420 of file qarraydatapointer.h.


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