Skip to content

Commit 13b4472

Browse files
committedApr 25, 2017
Add a simple qHash for QVariant
Allows creation of QSet<QVariant>
1 parent 66f4ff9 commit 13b4472

File tree

2 files changed

+49
-0
lines changed

2 files changed

+49
-0
lines changed
 

‎src/core/qgis.cpp

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,3 +222,49 @@ QString qgsVsiPrefix( const QString &path )
222222
else
223223
return QLatin1String( "" );
224224
}
225+
226+
uint qHash( const QVariant &variant )
227+
{
228+
if ( !variant.isValid() || variant.isNull() )
229+
return -1;
230+
231+
switch ( variant.type() )
232+
{
233+
case QVariant::Int:
234+
return qHash( variant.toInt() );
235+
case QVariant::UInt:
236+
return qHash( variant.toUInt() );
237+
case QVariant::Bool:
238+
return qHash( variant.toBool() );
239+
case QVariant::Double:
240+
return qHash( variant.toDouble() );
241+
case QVariant::LongLong:
242+
return qHash( variant.toLongLong() );
243+
case QVariant::ULongLong:
244+
return qHash( variant.toULongLong() );
245+
case QVariant::String:
246+
return qHash( variant.toString() );
247+
case QVariant::Char:
248+
return qHash( variant.toChar() );
249+
case QVariant::List:
250+
return qHash( variant.toList() );
251+
case QVariant::StringList:
252+
return qHash( variant.toStringList() );
253+
case QVariant::ByteArray:
254+
return qHash( variant.toByteArray() );
255+
case QVariant::Date:
256+
return qHash( variant.toDate() );
257+
case QVariant::Time:
258+
return qHash( variant.toTime() );
259+
case QVariant::DateTime:
260+
return qHash( variant.toDateTime() );
261+
case QVariant::Url:
262+
case QVariant::Locale:
263+
case QVariant::RegExp:
264+
return qHash( variant.toString() );
265+
default:
266+
return -1;
267+
}
268+
269+
return -1;
270+
}

‎src/core/qgis.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,9 @@ template<class Object> inline QgsSignalBlocker<Object> whileBlocking( Object *ob
180180
return QgsSignalBlocker<Object>( object );
181181
}
182182

183+
//! Hash for QVariant
184+
uint qHash( const QVariant &variant );
185+
183186
//! Returns a string representation of a double
184187
//! \param a double value
185188
//! \param precision number of decimal places to retain

0 commit comments

Comments
 (0)
Please sign in to comment.