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
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 (std::pair< QTypedArrayData< T > *, 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
 
const DataOps & operator* () const noexcept
 
const DataOps * operator-> () 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={})
 
QArrayDataPointer sliced (qsizetype pos, qsizetype n) const &
 
QArrayDataPointer sliced (qsizetype pos, qsizetype n) &&
 
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
 
Data * d_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

Data * d
 
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/6]

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/6]

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/6]

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/6]

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

Definition at line 50 of file qarraydatapointer.h.

◆ QArrayDataPointer() [5/6]

Definition at line 56 of file qarraydatapointer.h.

◆ QArrayDataPointer() [6/6]

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

Definition at line 77 of file qarraydatapointer.h.

◆ ~QArrayDataPointer()

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

Definition at line 106 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 436 of file qarraydatapointer.h.

References QArrayDataPointer< T >::d.

Referenced by QtPrivate::QCommonArrayOps< T >::appendIteratorRange().

+ 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 467 of file qarraydatapointer.h.

References QArrayDataPointer< T >::QArrayDataPointer(), 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 324 of file qarraydatapointer.h.

◆ begin() [1/2]

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

Definition at line 124 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 122 of file qarraydatapointer.h.

References QArrayDataPointer< T >::data().

Referenced by QtPrivate::QGenericArrayOps< T >::appendInitialize(), QtPrivate::QCommonArrayOps< T >::appendUninitialized(), 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(), QByteArray::remove(), removeStringImpl(), replace_in_place(), replace_with_copy(), QArrayDataPointer< T >::setBegin(), QArrayDataPointer< T >::sliced(), QArrayDataPointer< T >::sliced(), 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 136 of file qarraydatapointer.h.

References QArrayDataPointer< T >::swap().

Referenced by 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 447 of file qarraydatapointer.h.

References QArrayDataPointer< T >::d.

◆ constAllocatedCapacity()

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

Definition at line 437 of file qarraydatapointer.h.

References QArrayDataPointer< T >::d.

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

+ Here is the caller graph for this function:

◆ constBegin()

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

Definition at line 126 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 127 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 449 of file qarraydatapointer.h.

References QArrayDataPointer< T >::d.

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

+ Here is the caller graph for this function:

◆ data() [1/2]

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

Definition at line 120 of file qarraydatapointer.h.

References QArrayDataPointer< T >::ptr.

◆ data() [2/2]

◆ deref()

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

Definition at line 439 of file qarraydatapointer.h.

References QArrayDataPointer< T >::d.

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

+ Here is the caller graph for this function:

◆ detach()

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

Definition at line 142 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(), QtPrivate::QMovableArrayOps< T >::emplace(), QList< T >::replace(), and QList< T >::replace().

+ 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:

QList<T> list(5);
qsizetype pos = getArbitraryPos();
iterator insert(qsizetype i, parameter_type t)
Definition qlist.h:488
iterator end()
Definition qlist.h:626
iterator begin()
Definition qlist.h:625
ptrdiff_t qsizetype
Definition qtypes.h:165
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 193 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(), 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(), and QtPrivate::QMovableArrayOps< T >::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 444 of file qarraydatapointer.h.

References QArrayDataPointer< T >::d.

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

+ Here is the caller graph for this function:

◆ end() [1/2]

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

Definition at line 125 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 445 of file qarraydatapointer.h.

References QArrayDataPointer< T >::d.

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

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

Referenced by QArrayDataPointer< T >::allocateGrow(), QtPrivate::QGenericArrayOps< T >::appendInitialize(), QtPrivate::QPodArrayOps< T >::appendInitialize(), QtPrivate::QCommonArrayOps< T >::appendUninitialized(), 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 63 of file qarraydatapointer.h.

References Q_ASSERT.

Referenced by QByteArray::QByteArray(), QByteArray::QByteArray(), QByteArray::QByteArray(), 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 114 of file qarraydatapointer.h.

References QArrayDataPointer< T >::ptr.

◆ isShared()

◆ isSharedWith()

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

Definition at line 442 of file qarraydatapointer.h.

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

+ Here is the call graph for this function:

◆ needsDetach()

◆ operator*() [1/2]

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

Definition at line 96 of file qarraydatapointer.h.

◆ operator*() [2/2]

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

Definition at line 86 of file qarraydatapointer.h.

◆ operator->() [1/2]

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

Definition at line 101 of file qarraydatapointer.h.

◆ operator->() [2/2]

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

Definition at line 91 of file qarraydatapointer.h.

◆ operator=()

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

Definition at line 69 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 218 of file qarraydatapointer.h.

References QArrayDataPointer< T >::allocateGrow(), QArrayDataPointer< T >::begin(), QArrayDataPointer< T >::constAllocatedCapacity(), QArrayDataPointer< T >::freeSpaceAtEnd(), QArrayData::Grow, QArrayData::GrowsAtBeginning, QArrayData::GrowsAtEnd, 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 438 of file qarraydatapointer.h.

References QArrayDataPointer< T >::d.

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

+ 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 159 of file qarraydatapointer.h.

References QArrayDataPointer< T >::d, QArrayDataPointer< T >::ptr, and Q_ASSERT.

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

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

Referenced by QByteArray::assign(), QtPrivate::XmlStringRef::operator QXmlString(), and QArrayDataPointer< T >::sliced().

+ 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 446 of file qarraydatapointer.h.

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

◆ sliced() [1/2]

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

Definition at line 423 of file qarraydatapointer.h.

References QArrayDataPointer< T >::begin(), QArrayDataPointer< T >::end(), QArrayDataPointer< T >::needsDetach(), pos, QArrayDataPointer< T >::setBegin(), and QArrayDataPointer< T >::sliced().

+ Here is the call graph for this function:

◆ sliced() [2/2]

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

Definition at line 415 of file qarraydatapointer.h.

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

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

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

◆ swap()

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

Definition at line 129 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=(), and QArrayDataPointer< T >::reallocateAndGrow().

+ 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 269 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 498 of file qarraydatapointer.h.

◆ operator==

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

Definition at line 493 of file qarraydatapointer.h.

Member Data Documentation

◆ d

◆ ptr

◆ size


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