16 CPropertyIndexVariantMap::CPropertyIndexVariantMap(
const CPropertyIndex &index,
const CVariant &value)
19 this->addValue(index, value);
22 bool operator==(
const CPropertyIndexVariantMap &a,
const CPropertyIndexVariantMap &b)
24 return a.m_wildcard == b.m_wildcard && a.m_values == b.m_values;
27 bool operator!=(
const CPropertyIndexVariantMap &a,
const CPropertyIndexVariantMap &b) {
return !(b == a); }
29 bool CPropertyIndexVariantMap::matchesVariant(
const CVariant &variant)
const
31 if (this->isEmpty()) {
return this->isWildcard(); }
32 const auto &map = this->map();
33 for (
auto it = map.begin(); it != map.end(); ++it)
36 const CVariant p = variant.propertyByIndex(it.key());
37 const CVariant v = it.value();
38 if (p != v)
return false;
43 QString CPropertyIndexVariantMap::convertToQString(
bool i18n)
const
45 if (this->isEmpty())
return QStringLiteral(
"{wildcard: %1}").arg(m_wildcard ?
"true" :
"false");
49 CVariant v = m_values.value(index);
51 s.isEmpty() ? s.append(
"{wildcard: ").append(m_wildcard ?
"true" :
"false").append(
" ") : s.append(
", ");
53 s.append(
'{').append(index.toQString(i18n)).append(
": ");
54 s.append(
"(").append(QString::number(v.userType())).append(
") ");
55 QString vs = v.toQString(i18n);
63 void CPropertyIndexVariantMap::marshallToDbus(QDBusArgument &argument)
const
65 argument << m_values.keys();
66 argument << m_values.values();
69 void CPropertyIndexVariantMap::unmarshallFromDbus(
const QDBusArgument &argument)
71 QList<CPropertyIndex> indexes;
72 QList<CVariant> values;
75 Q_ASSERT(indexes.size() == values.size());
77 for (
int i = 0; i < indexes.size(); i++) { newMap.insert(indexes[i], values[i]); }
79 m_values.swap(newMap);
82 void CPropertyIndexVariantMap::marshalToDataStream(QDataStream &stream)
const
84 stream << m_values.keys();
85 stream << m_values.values();
88 void CPropertyIndexVariantMap::unmarshalFromDataStream(QDataStream &stream)
90 QList<CPropertyIndex> indexes;
91 QList<CVariant> values;
94 Q_ASSERT(indexes.size() == values.size());
96 for (
int i = 0; i < indexes.size(); i++) { newMap.insert(indexes[i], values[i]); }
98 m_values.swap(newMap);
101 void CPropertyIndexVariantMap::addValue(
const CPropertyIndex &index,
const CVariant &value)
103 m_values.insert(index, value);
106 void CPropertyIndexVariantMap::addValue(
const CPropertyIndex &index,
const char *str)
108 this->addValue(index, QString(str));
111 void CPropertyIndexVariantMap::prependIndex(
int index)
114 for (
const CPropertyIndex &pi : this->indexes())
116 CPropertyIndex newPi(pi);
117 newPi.prepend(index);
118 newMap.insert(newPi, m_values[pi]);
123 CPropertyIndexList CPropertyIndexVariantMap::indexes()
const {
return m_values.keys(); }
125 int CPropertyIndexVariantMap::size()
const {
return m_values.size(); }
127 size_t CPropertyIndexVariantMap::getValueHash()
const
130 return qHash(this->toQString(
false));
bool operator!=(const AddAtc &lhs, const AddAtc &rhs)
Not equal operator.
CPropertyIndexVariantMap(bool wildcard=false)
Constructor.
Free functions in swift::misc.
auto makeKeysRange(const T &container)
Returns a const CRange for iterating over the keys of a Qt associative container.