refs #214, fixed hash for variant map

* hash based on convertToQString
* fixed convertToQString
This commit is contained in:
Klaus Basan
2014-04-21 11:30:37 +02:00
parent 2fd80694a6
commit d95c86d094
2 changed files with 14 additions and 5 deletions

View File

@@ -38,12 +38,16 @@ namespace BlackMisc
*/
QString CIndexVariantMap::convertToQString(bool i18n) const
{
if (this->isEmpty()) return "{}";
if (this->isEmpty()) return QString("{wildcard: %1}").arg(this->m_wildcard ? "true" : "false");
QString s;
foreach(int index, this->m_values.keys())
{
QVariant qv = this->m_values.value(index);
s.isEmpty() ? s.append("{") : s.append(", ");
s.isEmpty() ?
s.append("{wildcard: ").append(this->m_wildcard ? "true" : "false").append(" ") :
s.append(", ");
s.append('{').append(QString::number(index)).append(": ");
s.append("(").append(QString::number(qv.userType())).append(") ");
QString qvs = BlackMisc::qVariantToString(qv, i18n);
@@ -155,8 +159,10 @@ namespace BlackMisc
*/
uint CIndexVariantMap::getValueHash() const
{
return qHash(this);
// there is no hash for map, so I use this workaround here
const QString s = this->toQString(false);
QList<uint> h;
h << qHash(s);
return BlackMisc::calculateHash(h, "CIndexVariantMap");
}
} // namespace

View File

@@ -61,6 +61,9 @@ namespace BlackMisc
//! \brief Wildcard, only relevant when used in search
bool isWildcard() const { return this->m_wildcard; }
//! \brief Wildcard, only relevant when used in search
void setWildcard(bool wildcard) { this->m_wildcard = wildcard; }
//! clear
void clear() { this->m_values.clear(); }