knowL: Knowledge Libraries
Loading...
Searching...
No Matches
VariantHash_p.h
1#include <QVariant>
2#include <QHash>
3
4#include "Logging.h"
5
6inline uint qHash(const QVariant& var, uint seed = 0)
7{
8 switch(var.userType())
9 {
10 case QVariant::Int:
11 return qHash(var.toInt(), seed);
12 case QVariant::UInt:
13 return qHash(var.toUInt(), seed);
14 case QVariant::Bool:
15 return qHash(var.toUInt(), seed);
16 case QVariant::Double:
17 return qHash(var.toUInt(), seed);
18 case QVariant::LongLong:
19 return qHash(var.toLongLong(), seed);
20 case QVariant::ULongLong:
21 return qHash(var.toULongLong(), seed);
22 case QVariant::String:
23 return qHash(var.toString(), seed);
24 case QVariant::Char:
25 return qHash(var.toChar(), seed);
26 case QVariant::StringList:
27 return qHash(var.toString(), seed);
28 case QVariant::ByteArray:
29 return qHash(var.toByteArray(), seed);
30 case QVariant::Date:
31 case QVariant::Time:
32 case QVariant::DateTime:
33 case QVariant::Url:
34 case QVariant::Locale:
35 case QVariant::RegExp:
36 return qHash(var.toString(), seed);
37 case QVariant::Map:
38 case QVariant::List:
39 case QVariant::BitArray:
40 case QVariant::Size:
41 case QVariant::SizeF:
42 case QVariant::Rect:
43 case QVariant::LineF:
44 case QVariant::Line:
45 case QVariant::RectF:
46 case QVariant::Point:
47 case QVariant::PointF:
48 default:
49 // not supported yet
50 break;
51 case QVariant::UserType:
52 case QVariant::Invalid:
53 return -1;
54 }
55 KNOWCORE_LOG_WARNING("qHash(QVariant) unkwown type: {}", var.userType());
56 // could not generate a hash for the given variant
57 return -1;
58}