20 return QIterablePrivate::retrieveElement(
21 metaContainer().keyMetaType(), [
this](
void *dataPtr) {
22 metaContainer().keyAtIterator(constIterator(), dataPtr);
64QVariant QAssociativeConstIterator::key()
const
66 return QIterablePrivate::retrieveElement(
67 metaContainer().keyMetaType(), [
this](
void *dataPtr) {
68 metaContainer().keyAtConstIterator(constIterator(), dataPtr);
76QVariant QAssociativeConstIterator::value()
const
78 return QIterablePrivate::retrieveElement(
79 metaContainer().mappedMetaType(), [
this](
void *dataPtr) {
80 metaContainer().mappedAtConstIterator(constIterator(), dataPtr);
166QAssociativeIterable::const_iterator QAssociativeIterable::find(
const QVariant &key)
const
168 const QMetaAssociation meta = metaContainer();
169 QtPrivate::QVariantTypeCoercer coercer;
170 if (
const void *keyData = coercer.convert(key, meta.keyMetaType())) {
171 return const_iterator(QConstIterator(
this, meta.createConstIteratorAtKey(
172 constIterable(), keyData)));
182QAssociativeIterable::iterator QAssociativeIterable::mutableFind(
const QVariant &key)
184 const QMetaAssociation meta = metaContainer();
185 QtPrivate::QVariantTypeCoercer coercer;
186 if (
const void *keyData = coercer.convert(key, meta.keyMetaType()))
187 return iterator(QIterator(
this, meta.createIteratorAtKey(mutableIterable(), keyData)));
196bool QAssociativeIterable::containsKey(
const QVariant &key)
198 QtPrivate::QVariantTypeCoercer keyCoercer;
199 QMetaAssociation meta = metaContainer();
200 if (
const void *keyData = keyCoercer.convert(key, meta.keyMetaType()))
201 return meta.containsKey(constIterable(), keyData);
211void QAssociativeIterable::insertKey(
const QVariant &key)
213 QMetaAssociation meta = metaContainer();
214 QtPrivate::QVariantTypeCoercer keyCoercer;
215 meta.insertKey(mutableIterable(), keyCoercer.coerce(key, meta.keyMetaType()));
223void QAssociativeIterable::removeKey(
const QVariant &key)
225 QMetaAssociation meta = metaContainer();
226 QtPrivate::QVariantTypeCoercer keyCoercer;
227 meta.removeKey(mutableIterable(), keyCoercer.coerce(key, meta.keyMetaType()));
237QVariant QAssociativeIterable::value(
const QVariant &key)
const
239 const QMetaAssociation meta = metaContainer();
240 const QMetaType mappedMetaType = meta.mappedMetaType();
242 QtPrivate::QVariantTypeCoercer coercer;
243 const void *keyData = coercer.coerce(key, meta.keyMetaType());
245 if (mappedMetaType == QMetaType::fromType<QVariant>()) {
247 meta.mappedAtKey(constIterable(), keyData, &result);
251 QVariant result(mappedMetaType);
252 meta.mappedAtKey(constIterable(), keyData, result.data());
262void QAssociativeIterable::setValue(
const QVariant &key,
const QVariant &mapped)
264 QtPrivate::QVariantTypeCoercer keyCoercer;
265 QtPrivate::QVariantTypeCoercer mappedCoercer;
266 QMetaAssociation meta = metaContainer();
267 meta.setMappedAtKey(mutableIterable(), keyCoercer.coerce(key, meta.keyMetaType()),
268 mappedCoercer.coerce(mapped, meta.mappedMetaType()));