15 return QIterablePrivate::retrieveElement(
16 metaContainer().keyMetaType(), [
this](
void *dataPtr) {
17 metaContainer().keyAtIterator(constIterator(), dataPtr);
54QVariant QAssociativeConstIterator::key()
const
56 return QIterablePrivate::retrieveElement(
57 metaContainer().keyMetaType(), [
this](
void *dataPtr) {
58 metaContainer().keyAtConstIterator(constIterator(), dataPtr);
66QVariant QAssociativeConstIterator::value()
const
68 return QIterablePrivate::retrieveElement(
69 metaContainer().mappedMetaType(), [
this](
void *dataPtr) {
70 metaContainer().mappedAtConstIterator(constIterator(), dataPtr);
156QAssociativeIterable::const_iterator QAssociativeIterable::find(
const QVariant &key)
const
158 const QMetaAssociation meta = metaContainer();
159 QtPrivate::QVariantTypeCoercer coercer;
160 if (
const void *keyData = coercer.convert(key, meta.keyMetaType())) {
161 return const_iterator(QConstIterator(
this, meta.createConstIteratorAtKey(
162 constIterable(), keyData)));
172QAssociativeIterable::iterator QAssociativeIterable::mutableFind(
const QVariant &key)
174 const QMetaAssociation meta = metaContainer();
175 QtPrivate::QVariantTypeCoercer coercer;
176 if (
const void *keyData = coercer.convert(key, meta.keyMetaType()))
177 return iterator(QIterator(
this, meta.createIteratorAtKey(mutableIterable(), keyData)));
186bool QAssociativeIterable::containsKey(
const QVariant &key)
188 QtPrivate::QVariantTypeCoercer keyCoercer;
189 QMetaAssociation meta = metaContainer();
190 if (
const void *keyData = keyCoercer.convert(key, meta.keyMetaType()))
191 return meta.containsKey(constIterable(), keyData);
201void QAssociativeIterable::insertKey(
const QVariant &key)
203 QMetaAssociation meta = metaContainer();
204 QtPrivate::QVariantTypeCoercer keyCoercer;
205 meta.insertKey(mutableIterable(), keyCoercer.coerce(key, meta.keyMetaType()));
213void QAssociativeIterable::removeKey(
const QVariant &key)
215 QMetaAssociation meta = metaContainer();
216 QtPrivate::QVariantTypeCoercer keyCoercer;
217 meta.removeKey(mutableIterable(), keyCoercer.coerce(key, meta.keyMetaType()));
227QVariant QAssociativeIterable::value(
const QVariant &key)
const
229 const QMetaAssociation meta = metaContainer();
230 const QMetaType mappedMetaType = meta.mappedMetaType();
232 QtPrivate::QVariantTypeCoercer coercer;
233 const void *keyData = coercer.coerce(key, meta.keyMetaType());
235 if (mappedMetaType == QMetaType::fromType<QVariant>()) {
237 meta.mappedAtKey(constIterable(), keyData, &result);
241 QVariant result(mappedMetaType);
242 meta.mappedAtKey(constIterable(), keyData, result.data());
252void QAssociativeIterable::setValue(
const QVariant &key,
const QVariant &mapped)
254 QtPrivate::QVariantTypeCoercer keyCoercer;
255 QtPrivate::QVariantTypeCoercer mappedCoercer;
256 QMetaAssociation meta = metaContainer();
257 meta.setMappedAtKey(mutableIterable(), keyCoercer.coerce(key, meta.keyMetaType()),
258 mappedCoercer.coerce(mapped, meta.mappedMetaType()));