QMetaAssociation Class
The QMetaAssociation class allows type erased access to associative containers. More...
Header: | #include <QMetaAssociation> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
Since: | Qt 6.0 |
Inherits: | QMetaContainer |
This class is equality-comparable.
Public Functions
bool | canContainsKey() const |
bool | canCreateConstIteratorAtKey() const |
bool | canCreateIteratorAtKey() const |
bool | canGetKeyAtConstIterator() const |
bool | canGetKeyAtIterator() const |
bool | canGetMappedAtConstIterator() const |
bool | canGetMappedAtIterator() const |
bool | canGetMappedAtKey() const |
bool | canInsertKey() const |
bool | canRemoveKey() const |
bool | canSetMappedAtIterator() const |
bool | canSetMappedAtKey() const |
bool | containsKey(const void *container, const void *key) const |
void * | createConstIteratorAtKey(const void *container, const void *key) const |
void * | createIteratorAtKey(void *container, const void *key) const |
void | insertKey(void *container, const void *key) const |
void | keyAtConstIterator(const void *iterator, void *key) const |
void | keyAtIterator(const void *iterator, void *key) const |
QMetaType | keyMetaType() const |
void | mappedAtConstIterator(const void *iterator, void *mapped) const |
void | mappedAtIterator(const void *iterator, void *mapped) const |
void | mappedAtKey(const void *container, const void *key, void *mapped) const |
QMetaType | mappedMetaType() const |
void | removeKey(void *container, const void *key) const |
void | setMappedAtIterator(const void *iterator, const void *mapped) const |
void | setMappedAtKey(void *container, const void *key, const void *mapped) const |
Static Public Members
(since 6.0) QMetaAssociation | fromContainer() |
Related Non-Members
bool | operator!=(const QMetaAssociation &lhs, const QMetaAssociation &rhs) |
bool | operator==(const QMetaAssociation &lhs, const QMetaAssociation &rhs) |
Detailed Description
The class provides a number of primitive container operations, using void* as operands. This way, you can manipulate a generic container retrieved from a Variant without knowing its type.
QMetaAssociation covers both, containers with mapped values such as QMap or QHash, and containers that only hold keys such as QSet.
The void* arguments to the various methods are typically created by using a QVariant of the respective container or value type, and calling its QVariant::data() or QVariant::constData() methods. However, you can also pass plain pointers to objects of the container or value type.
Iterator invalidation follows the rules given by the underlying containers and is not expressed in the API. Therefore, for a truly generic container, any iterators should be considered invalid after any write operation.
See also QMetaContainer, QMetaSequence, QIterable, and QIterator.
Member Function Documentation
bool QMetaAssociation::canContainsKey() const
Returns true
if the container can be queried for keys using containsKey(), otherwise returns false
.
bool QMetaAssociation::canCreateConstIteratorAtKey() const
Returns true
if a const iterator pointing to an entry in the container can be created using createConstIteratorAtKey(), otherwise returns false.
bool QMetaAssociation::canCreateIteratorAtKey() const
Returns true
if an iterator pointing to an entry in the container can be created using createIteratorAtKey(), otherwise returns false.
See also createIteratorAtKey().
bool QMetaAssociation::canGetKeyAtConstIterator() const
Returns true
if a key can be retrieved from a const iterator using keyAtConstIterator(), otherwise returns false
.
See also keyAtConstIterator().
bool QMetaAssociation::canGetKeyAtIterator() const
Returns true
if a key can be retrieved from a non-const iterator using keyAtIterator(), otherwise returns false
.
See also keyAtIterator().
bool QMetaAssociation::canGetMappedAtConstIterator() const
Returns true
if a mapped value can be retrieved from a const iterator using mappedAtConstIterator(), otherwise returns false
.
See also mappedAtConstIterator().
bool QMetaAssociation::canGetMappedAtIterator() const
Returns true
if a mapped value can be retrieved from a non-const iterator using mappedAtIterator(), otherwise returns false
.
See also mappedAtIterator().
bool QMetaAssociation::canGetMappedAtKey() const
Returns true
if the container can be queried for values using mappedAtKey(), otherwise returns false
.
bool QMetaAssociation::canInsertKey() const
Returns true
if keys can be added to the container using insertKey(), otherwise returns false
.
See also insertKey().
bool QMetaAssociation::canRemoveKey() const
Returns true
if keys can be removed from the container using removeKey(), otherwise returns false
.
See also removeKey().
bool QMetaAssociation::canSetMappedAtIterator() const
Returns true
if a mapped value can be set via a non-const iterator using setMappedAtIterator(), otherwise returns false
.
See also setMappedAtIterator().
bool QMetaAssociation::canSetMappedAtKey() const
Returns true
if mapped values can be modified in the container using setMappedAtKey(), otherwise returns false
.
See also setMappedAtKey().
bool QMetaAssociation::containsKey(const void *container, const void *key) const
Returns true
if the container can be queried for keys and contains the key, otherwise returns false
.
See also canContainsKey().
void *QMetaAssociation::createConstIteratorAtKey(const void *container, const void *key) const
Returns a const iterator pointing to the entry of key in the container, if possible. If the entry doesn't exist, creates a const iterator pointing to the end of the container. If no const iterator can be created, returns nullptr
.
The const iterator has to be destroyed using destroyConstIterator().
See also canCreateConstIteratorAtKey(), constBegin(), constEnd(), and destroyConstIterator().
void *QMetaAssociation::createIteratorAtKey(void *container, const void *key) const
Returns a non-const iterator pointing to the entry of key in the container, if possible. If the entry doesn't exist, creates a non-const iterator pointing to the end of the container. If no non-const iterator can be created, returns nullptr
.
The non-const iterator has to be destroyed using destroyIterator().
See also canCreateIteratorAtKey(), begin(), end(), and destroyIterator().
[static constexpr, since 6.0]
template <typename T> QMetaAssociation QMetaAssociation::fromContainer()
Returns the QMetaAssociation corresponding to the type given as template parameter.
This function was introduced in Qt 6.0.
void QMetaAssociation::insertKey(void *container, const void *key) const
Inserts the key into the container if possible. If the container has mapped values a default-create mapped value is associated with the key.
See also canInsertKey().
void QMetaAssociation::keyAtConstIterator(const void *iterator, void *key) const
Retrieves the key pointed to by the const iterator and stores it in the memory location pointed to by key, if possible.
See also canGetKeyAtConstIterator(), constBegin(), constEnd(), and createConstIteratorAtKey().
void QMetaAssociation::keyAtIterator(const void *iterator, void *key) const
Retrieves the key pointed to by the non-const iterator and stores it in the memory location pointed to by key, if possible.
See also canGetKeyAtIterator(), begin(), end(), and createIteratorAtKey().
QMetaType QMetaAssociation::keyMetaType() const
Returns the meta type for keys in the container.
void QMetaAssociation::mappedAtConstIterator(const void *iterator, void *mapped) const
Retrieves the mapped value pointed to by the const iterator and stores it in the memory location pointed to by mapped, if possible.
See also canGetMappedAtConstIterator(), constBegin(), constEnd(), and createConstIteratorAtKey().
void QMetaAssociation::mappedAtIterator(const void *iterator, void *mapped) const
Retrieves the mapped value pointed to by the non-const iterator and stores it in the memory location pointed to by mapped, if possible.
See also setMappedAtIterator(), canGetMappedAtIterator(), begin(), end(), and createIteratorAtKey().
void QMetaAssociation::mappedAtKey(const void *container, const void *key, void *mapped) const
Retrieves the mapped value associated with the key in the container and places it in the memory location pointed to by mapped, if that is possible.
See also setMappedAtKey() and canGetMappedAtKey().
QMetaType QMetaAssociation::mappedMetaType() const
Returns the meta type for mapped values in the container.
void QMetaAssociation::removeKey(void *container, const void *key) const
Removes the key and its associated mapped value from the container if possible.
See also canRemoveKey().
void QMetaAssociation::setMappedAtIterator(const void *iterator, const void *mapped) const
Writes the mapped value to the container location pointed to by the non-const iterator, if possible.
See also mappedAtIterator(), canSetMappedAtIterator(), begin(), end(), and createIteratorAtKey().
void QMetaAssociation::setMappedAtKey(void *container, const void *key, const void *mapped) const
Overwrites the value associated with the key in the container using the mapped value passed as argument if that is possible.
See also mappedAtKey() and canSetMappedAtKey().
Related Non-Members
[noexcept]
bool operator!=(const QMetaAssociation &lhs, const QMetaAssociation &rhs)
Returns true
if the QMetaAssociation lhs represents a different container type than the QMetaAssociation rhs, otherwise returns false
.
[noexcept]
bool operator==(const QMetaAssociation &lhs, const QMetaAssociation &rhs)
Returns true
if the QMetaAssociation lhs represents the same container type as the QMetaAssociation rhs, otherwise returns false
.
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.