Qt 6.x
The Qt SDK
Loading...
Searching...
No Matches
QArrayDataPointer< T > Struct Template Reference

#include <qarraydatapointer.h>

+ Inheritance diagram for QArrayDataPointer< T >:
+ 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 () noexcept
 
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 (QPair< QTypedArrayData< T > *, T * > adata, qsizetype n=0) noexcept
 
QArrayDataPointeroperator= (const QArrayDataPointer &other) noexcept
 
Q_NODISCARD_CTOR QArrayDataPointer (QArrayDataPointer &&other) noexcept
 
DataOpsoperator* () noexcept
 
DataOpsoperator-> () noexcept
 
const DataOpsoperator* () const noexcept
 
const DataOpsoperator-> () const noexcept
 
 ~QArrayDataPointer ()
 
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)
 
template<typename InputIterator , typename Projection = q20::identity>
void assign (InputIterator first, InputIterator last, Projection proj={})
 
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

Datad
 
T * ptr
 
qsizetype size
 

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 16 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 28 of file qarraydatapointer.h.

Member Enumeration Documentation

◆ anonymous enum

template<class T >
anonymous enum
Enumerator
pass_parameter_by_value 

Definition at line 23 of file qarraydatapointer.h.

Constructor & Destructor Documentation

◆ QArrayDataPointer() [1/5]

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

Definition at line 31 of file qarraydatapointer.h.

Referenced by QArrayDataPointer< T >::allocateGrow().

+ Here is the caller graph for this function:

◆ QArrayDataPointer() [2/5]

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

Definition at line 37 of file qarraydatapointer.h.

References QArrayDataPointer< T >::ref().

+ Here is the call graph for this function:

◆ QArrayDataPointer() [3/5]

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

Definition at line 44 of file qarraydatapointer.h.

◆ QArrayDataPointer() [4/5]

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

Definition at line 50 of file qarraydatapointer.h.

◆ QArrayDataPointer() [5/5]

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

Definition at line 70 of file qarraydatapointer.h.

References other().

+ Here is the call graph for this function:

◆ ~QArrayDataPointer()

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

Definition at line 100 of file qarraydatapointer.h.

References QArrayDataPointer< T >::d, and QArrayDataPointer< T >::deref().

+ Here is the call graph for this function:

Member Function Documentation

◆ allocatedCapacity()

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

Definition at line 412 of file qarraydatapointer.h.

References QArrayData::allocatedCapacity(), and QArrayDataPointer< T >::d.

Referenced by QtPrivate::QCommonArrayOps< T >::appendIteratorRange(), QByteArray::operator=(), QByteArray::resize(), and QString::resize().

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

◆ allocateGrow()

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

Definition at line 443 of file qarraydatapointer.h.

References QArrayDataPointer< T >::QArrayDataPointer(), QTypedArrayData< T >::allocate(), capacity, QArrayDataPointer< T >::constAllocatedCapacity(), QArrayDataPointer< T >::detachCapacity(), QArrayDataPointer< T >::flags(), QArrayDataPointer< T >::freeSpaceAtBegin(), QArrayDataPointer< T >::freeSpaceAtEnd(), QArrayData::Grow, QArrayData::GrowsAtBeginning, QArrayData::GrowsAtEnd, header(), QArrayData::KeepSize, position(), qMax(), and QArrayDataPointer< T >::size.

Referenced by QArrayDataPointer< T >::reallocateAndGrow().

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

◆ assign()

template<class T >
template<typename InputIterator , typename Projection = q20::identity>
void QArrayDataPointer< T >::assign ( InputIterator  first,
InputIterator  last,
Projection  proj = {} 
)
inline

Definition at line 318 of file qarraydatapointer.h.

◆ begin() [1/2]

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

Definition at line 118 of file qarraydatapointer.h.

References QArrayDataPointer< T >::data().

+ Here is the call graph for this function:

◆ begin() [2/2]

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

Definition at line 116 of file qarraydatapointer.h.

References QArrayDataPointer< T >::data().

Referenced by QtPrivate::QGenericArrayOps< T >::appendInitialize(), QString::assign(), QByteArray::assign(), QtPrivate::QGenericArrayOps< T >::assign(), QtPrivate::QPodArrayOps< T >::assign(), QtPrivate::QGenericArrayOps< T >::copyAppend(), QtPrivate::QGenericArrayOps< T >::copyAppend(), QtPrivate::QPodArrayOps< T >::copyRanges(), QtPrivate::QGenericArrayOps< T >::destroyAll(), QtPrivate::QPodArrayOps< T >::emplace(), QtPrivate::QGenericArrayOps< T >::emplace(), QtPrivate::QMovableArrayOps< T >::emplace(), QtPrivate::QPodArrayOps< T >::erase(), QtPrivate::QGenericArrayOps< T >::erase(), QtPrivate::QMovableArrayOps< T >::erase(), QtPrivate::QGenericArrayOps< T >::eraseFirst(), QtPrivate::QPodArrayOps< T >::eraseIf(), QtPrivate::QGenericArrayOps< T >::insert(), QtPrivate::QMovableArrayOps< T >::insert(), QtPrivate::QGenericArrayOps< T >::insert(), QtPrivate::QMovableArrayOps< T >::insert(), QtPrivate::QGenericArrayOps< T >::moveAppend(), QArrayDataPointer< T >::reallocateAndGrow(), QString::remove(), QString::remove(), QByteArray::remove(), removeStringImpl(), QString::replace(), QString::replace(), replace_in_place(), replace_with_copy(), QArrayDataPointer< T >::setBegin(), and QtPrivate::QGenericArrayOps< T >::truncate().

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

◆ clear()

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

Definition at line 130 of file qarraydatapointer.h.

References QArrayDataPointer< T >::swap().

Referenced by QString::QString(), QByteArray::clear(), and QByteArray::operator=().

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

◆ clearFlag()

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

Definition at line 423 of file qarraydatapointer.h.

References QArrayDataPointer< T >::d, and QArrayData::flags.

◆ constAllocatedCapacity()

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

Definition at line 413 of file qarraydatapointer.h.

References QArrayData::constAllocatedCapacity(), and QArrayDataPointer< T >::d.

Referenced by QArrayDataPointer< T >::allocateGrow(), QByteArray::prepend(), QArrayDataPointer< T >::reallocateAndGrow(), and QArrayDataPointer< T >::tryReadjustFreeSpace().

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

◆ constBegin()

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

Definition at line 120 of file qarraydatapointer.h.

References QArrayDataPointer< T >::data().

+ Here is the call graph for this function:

◆ constEnd()

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

Definition at line 121 of file qarraydatapointer.h.

References QArrayDataPointer< T >::data(), and QArrayDataPointer< T >::size.

+ Here is the call graph for this function:

◆ d_ptr()

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

Definition at line 425 of file qarraydatapointer.h.

References QArrayDataPointer< T >::d.

Referenced by QStringHash< T >::initializeNode(), QList< T >::reserve(), and StringOrTranslation::setString().

+ Here is the caller graph for this function:

◆ data() [1/2]

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

Definition at line 114 of file qarraydatapointer.h.

References QArrayDataPointer< T >::ptr.

◆ data() [2/2]

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

◆ deref()

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

Definition at line 415 of file qarraydatapointer.h.

References QArrayDataPointer< T >::d, and QArrayData::deref().

Referenced by QArrayDataPointer< T >::~QArrayDataPointer().

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

◆ detach()

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

Definition at line 136 of file qarraydatapointer.h.

References QArrayData::GrowsAtEnd, QArrayDataPointer< T >::needsDetach(), and QArrayDataPointer< T >::reallocateAndGrow().

Referenced by QArrayDataPointer< T >::detachAndGrow(), QtPrivate::QPodArrayOps< T >::emplace(), QtPrivate::QGenericArrayOps< T >::emplace(), and QtPrivate::QMovableArrayOps< T >::emplace().

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

◆ 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();
Definition qlist.h:74
iterator insert(qsizetype i, parameter_type t)
Definition qlist.h:471
iterator end()
Definition qlist.h:609
iterator begin()
Definition qlist.h:608
ptrdiff_t qsizetype
Definition qtypes.h:70
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 187 of file qarraydatapointer.h.

References QArrayDataPointer< T >::detach(), QArrayDataPointer< T >::freeSpaceAtBegin(), QArrayDataPointer< T >::freeSpaceAtEnd(), QArrayData::GrowsAtBeginning, QArrayData::GrowsAtEnd, QArrayDataPointer< T >::needsDetach(), Q_ASSERT, QArrayDataPointer< T >::reallocateAndGrow(), and QArrayDataPointer< T >::tryReadjustFreeSpace().

Referenced by QByteArray::append(), QString::append(), QtPrivate::QPodArrayOps< T >::emplace(), QtPrivate::QGenericArrayOps< T >::emplace(), QtPrivate::QMovableArrayOps< T >::emplace(), QtPrivate::QCommonArrayOps< T >::growAppend(), QtPrivate::QPodArrayOps< T >::insert(), QtPrivate::QGenericArrayOps< T >::insert(), QtPrivate::QMovableArrayOps< T >::insert(), QByteArray::insert(), QByteArray::insert(), QtPrivate::QPodArrayOps< T >::insert(), QtPrivate::QGenericArrayOps< T >::insert(), QtPrivate::QMovableArrayOps< T >::insert(), and QString::insert().

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

◆ detachCapacity()

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

Definition at line 420 of file qarraydatapointer.h.

References QArrayDataPointer< T >::d, and QArrayData::detachCapacity().

Referenced by QArrayDataPointer< T >::allocateGrow().

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

◆ end() [1/2]

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

Definition at line 119 of file qarraydatapointer.h.

References QArrayDataPointer< T >::data(), and QArrayDataPointer< T >::size.

+ Here is the call graph for this function:

◆ end() [2/2]

◆ flags()

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

Definition at line 421 of file qarraydatapointer.h.

References QArrayData::ArrayOptionDefault, QArrayDataPointer< T >::d, and QArrayData::flags.

Referenced by QArrayDataPointer< T >::allocateGrow().

+ Here is the caller graph for this function:

◆ freeSpaceAtBegin()

◆ freeSpaceAtEnd()

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

Definition at line 435 of file qarraydatapointer.h.

References QArrayData::constAllocatedCapacity(), QArrayDataPointer< T >::d, QArrayDataPointer< T >::freeSpaceAtBegin(), and QArrayDataPointer< T >::size.

Referenced by QArrayDataPointer< T >::allocateGrow(), QByteArray::append(), QtPrivate::QGenericArrayOps< T >::appendInitialize(), QtPrivate::QPodArrayOps< T >::appendInitialize(), QtPrivate::QGenericArrayOps< T >::copyAppend(), QtPrivate::QPodArrayOps< T >::copyAppend(), QtPrivate::QGenericArrayOps< T >::copyAppend(), QtPrivate::QPodArrayOps< T >::copyAppend(), QtPrivate::QPodArrayOps< T >::createHole(), QArrayDataPointer< T >::detachAndGrow(), QtPrivate::QPodArrayOps< T >::emplace(), QtPrivate::QGenericArrayOps< T >::emplace(), QtPrivate::QMovableArrayOps< T >::emplace(), QtPrivate::QCommonArrayOps< T >::growAppend(), QtPrivate::QPodArrayOps< T >::insert(), QtPrivate::QGenericArrayOps< T >::insert(), QtPrivate::QMovableArrayOps< T >::insert(), QtPrivate::QPodArrayOps< T >::insert(), QtPrivate::QGenericArrayOps< T >::insert(), QtPrivate::QMovableArrayOps< T >::insert(), QtPrivate::QGenericArrayOps< T >::moveAppend(), QArrayDataPointer< T >::reallocateAndGrow(), and QArrayDataPointer< T >::tryReadjustFreeSpace().

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

◆ fromRawData()

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

Definition at line 56 of file qarraydatapointer.h.

References Q_ASSERT.

Referenced by QByteArray::QByteArray(), QByteArray::QByteArray(), QByteArray::QByteArray(), QByteArray::mid(), and QByteArray::operator=().

+ Here is the caller graph for this function:

◆ isMutable()

◆ isNull()

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

Definition at line 108 of file qarraydatapointer.h.

References QArrayDataPointer< T >::ptr.

◆ isShared()

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

◆ isSharedWith()

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

Definition at line 418 of file qarraydatapointer.h.

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

+ Here is the call graph for this function:

◆ needsDetach()

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

Definition at line 419 of file qarraydatapointer.h.

References QArrayDataPointer< T >::d, and QArrayData::needsDetach().

Referenced by QArrayDataPointer< T >::detach(), QArrayDataPointer< T >::detachAndGrow(), QtPrivate::QPodArrayOps< T >::emplace(), QtPrivate::QGenericArrayOps< T >::emplace(), QtPrivate::QMovableArrayOps< T >::emplace(), QtPrivate::QPodArrayOps< T >::eraseIf(), QString::insert(), QByteArray::insert(), QString::insert(), QByteArray::operator=(), QArrayDataPointer< T >::reallocateAndGrow(), removeStringImpl(), QString::replace(), replace_helper(), QByteArray::resize(), QString::resize(), and QArrayDataPointer< T >::tryReadjustFreeSpace().

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

◆ operator*() [1/2]

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

Definition at line 90 of file qarraydatapointer.h.

◆ operator*() [2/2]

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

Definition at line 80 of file qarraydatapointer.h.

◆ operator->() [1/2]

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

Definition at line 95 of file qarraydatapointer.h.

◆ operator->() [2/2]

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

Definition at line 85 of file qarraydatapointer.h.

◆ operator=()

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

Definition at line 62 of file qarraydatapointer.h.

References other(), and QArrayDataPointer< T >::swap().

+ Here is the call graph for this function:

◆ 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 212 of file qarraydatapointer.h.

References QArrayDataPointer< T >::allocateGrow(), QArrayDataPointer< T >::begin(), QArrayDataPointer< T >::constAllocatedCapacity(), QtPrivate::QGenericArrayOps< T >::copyAppend(), QArrayDataPointer< T >::data(), QArrayDataPointer< T >::freeSpaceAtBegin(), QArrayDataPointer< T >::freeSpaceAtEnd(), QArrayData::Grow, QArrayData::GrowsAtBeginning, QArrayData::GrowsAtEnd, QtPrivate::QGenericArrayOps< T >::moveAppend(), QArrayDataPointer< T >::needsDetach(), Q_ASSERT, Q_CHECK_PTR(), QArrayDataPointer< T >::size, and QArrayDataPointer< T >::swap().

Referenced by QArrayDataPointer< T >::detach(), and QArrayDataPointer< T >::detachAndGrow().

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

◆ ref()

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

Definition at line 414 of file qarraydatapointer.h.

References QArrayDataPointer< T >::d, and QArrayData::ref().

Referenced by QArrayDataPointer< T >::QArrayDataPointer().

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

◆ 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 153 of file qarraydatapointer.h.

References QArrayData::alloc, QArrayDataPointer< T >::d, QArrayData::isShared(), QArrayDataPointer< T >::ptr, Q_ASSERT, and X.

+ Here is the call graph for this function:

◆ 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 307 of file qarraydatapointer.h.

References QArrayDataPointer< T >::ptr, QtPrivate::q_points_into_range(), and QtPrivate::q_relocate_overlap_n().

Referenced by QArrayDataPointer< T >::tryReadjustFreeSpace().

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

◆ setBegin()

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

Definition at line 426 of file qarraydatapointer.h.

References QArrayDataPointer< T >::begin(), and QArrayDataPointer< T >::ptr.

Referenced by QString::assign(), and QByteArray::assign().

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

◆ setFlag()

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

Definition at line 422 of file qarraydatapointer.h.

References QArrayDataPointer< T >::d, QArrayData::flags, and Q_ASSERT.

Referenced by QList< T >::reserve().

+ Here is the caller graph for this function:

◆ swap()

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

Definition at line 123 of file qarraydatapointer.h.

References QArrayDataPointer< T >::d, other(), QArrayDataPointer< T >::ptr, and qt_ptr_swap().

Referenced by QArrayDataPointer< T >::clear(), QtPrivate::QPodArrayOps< T >::eraseIf(), QArrayDataPointer< T >::operator=(), QtPrivate::QXmlString::operator=(), QArrayDataPointer< T >::reallocateAndGrow(), and QtPrivate::QXmlString::swap().

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

◆ 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 263 of file qarraydatapointer.h.

References capacity, QArrayDataPointer< T >::constAllocatedCapacity(), QArrayDataPointer< T >::freeSpaceAtBegin(), QArrayDataPointer< T >::freeSpaceAtEnd(), QArrayData::GrowsAtBeginning, QArrayData::GrowsAtEnd, QArrayDataPointer< T >::needsDetach(), pos, Q_ASSERT, qMax(), and QArrayDataPointer< T >::relocate().

Referenced by QArrayDataPointer< T >::detachAndGrow().

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

Friends And Related Symbol Documentation

◆ operator!=

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

Definition at line 474 of file qarraydatapointer.h.

◆ operator==

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

Definition at line 469 of file qarraydatapointer.h.

Member Data Documentation

◆ d

◆ ptr

◆ size

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

Definition at line 481 of file qarraydatapointer.h.

Referenced by QArrayDataPointer< T >::allocateGrow(), QByteArray::append(), QString::append(), QString::append(), QtPrivate::QGenericArrayOps< T >::appendInitialize(), QtPrivate::QCommonArrayOps< T >::appendIteratorRange(), QByteArray::assign(), QString::chop(), QArrayDataPointer< T >::constEnd(), QtPrivate::QGenericArrayOps< T >::copyAppend(), QtPrivate::QGenericArrayOps< T >::copyAppend(), QtPrivate::QPodArrayOps< T >::emplace(), QtPrivate::QGenericArrayOps< T >::emplace(), QtPrivate::QMovableArrayOps< T >::emplace(), QArrayDataPointer< T >::end(), QArrayDataPointer< T >::end(), QtPrivate::QPodArrayOps< T >::eraseFirst(), QtPrivate::QGenericArrayOps< T >::eraseFirst(), QtPrivate::QPodArrayOps< T >::eraseLast(), QtPrivate::QGenericArrayOps< T >::eraseLast(), QString::fill(), QArrayDataPointer< T >::freeSpaceAtEnd(), QtPrivate::QGenericArrayOps< T >::insert(), QtPrivate::QMovableArrayOps< T >::insert(), QByteArray::insert(), QString::insert(), QByteArray::insert(), QtPrivate::QGenericArrayOps< T >::insert(), QtPrivate::QMovableArrayOps< T >::insert(), QString::insert(), QString::isSimpleText(), QtPrivate::lastIndexOf(), QtPrivate::QGenericArrayOps< T >::moveAppend(), QtPrivate::QXmlString::operator QStringView(), QByteArray::operator=(), QString::operator=(), QString::operator=(), QArrayDataPointer< T >::reallocateAndGrow(), QString::remove(), QString::remove(), QByteArray::remove(), QString::repeated(), QString::replace(), QString::replace(), QString::replace(), QString::replace(), QString::replace(), replace_helper(), replace_in_place(), replace_with_copy(), QByteArray::resize(), QString::resize(), QByteArray::resize(), QtPrivate::QXmlString::size(), and QString::utf16().


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