289 using MapKey = QPair<QNdefRecord::TypeNameFormat, QByteArray>;
292 QMap<MapKey, Record> joinedFilterRecords;
294 const auto key =
qMakePair(rec.typeNameFormat, rec.type);
295 if (joinedFilterRecords.contains(
key)) {
296 joinedFilterRecords[
key].minimum += rec.minimum;
297 joinedFilterRecords[
key].maximum += rec.maximum;
299 joinedFilterRecords.insert(
key, rec);
303 QMap<MapKey, unsigned int> counts;
309 if (joinedFilterRecords.contains(
key))
311 else if (joinedFilterRecords.contains(emptyTypeKey))
312 counts[emptyTypeKey] += 1;
315 for (
auto it = joinedFilterRecords.
cbegin();
it != joinedFilterRecords.
cend(); ++
it) {
316 const auto count = counts.value(
it.key(), 0);
327 QList<Record> mergedRecords;
332 if (rec.typeNameFormat == currentRecord.typeNameFormat
333 && rec.type == currentRecord.type) {
334 currentRecord.
minimum += rec.minimum;
335 currentRecord.maximum += rec.maximum;
337 mergedRecords.push_back(currentRecord);
341 mergedRecords.push_back(currentRecord);
344 QList<unsigned int> counts(mergedRecords.size(), 0);
348 for (
qsizetype messageIndex = 0; matched && messageIndex <
message.size(); ++messageIndex) {
349 const auto &messageRec =
message.at(messageIndex);
354 for (; idx < mergedRecords.size(); ++idx) {
355 const auto &filterRec = mergedRecords.at(idx);
356 if (filterRec.typeNameFormat == messageRec.typeNameFormat()
357 && (filterRec.type == messageRec.type() || filterRec.type.isEmpty())) {
360 }
else if (counts[idx] < filterRec.minimum || counts[idx] > filterRec.maximum) {
374 const auto &rec = mergedRecords.at(
i);
375 totalCount += counts[
i];
376 if (counts[
i] < rec.minimum || counts[
i] > rec.maximum) {
388 if (matched && (totalCount !=
message.size())) {