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