summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Schanda <schanda@itestra.de>2013-02-26 17:48:27 +0100
committerJohannes Schanda <schanda@itestra.de>2013-02-26 17:48:27 +0100
commitd5c7d8da8c5590cd94f4e4d6e502a867876d5e8e (patch)
treeaf2690ca6b95678f240b9cdf26b820bde8b2fc10
parent1ec50022e7c935006f4419b56578e35ecc94f216 (diff)
downloadgenivi-common-api-dbus-runtime-d5c7d8da8c5590cd94f4e4d6e502a867876d5e8e.tar.gz
Add hash specialization for dbus service tuple
-rw-r--r--src/CommonAPI/DBus/DBusFunctionalHash.cpp15
-rw-r--r--src/CommonAPI/DBus/DBusFunctionalHash.h6
2 files changed, 21 insertions, 0 deletions
diff --git a/src/CommonAPI/DBus/DBusFunctionalHash.cpp b/src/CommonAPI/DBus/DBusFunctionalHash.cpp
index 2369446..a4c82fd 100644
--- a/src/CommonAPI/DBus/DBusFunctionalHash.cpp
+++ b/src/CommonAPI/DBus/DBusFunctionalHash.cpp
@@ -60,6 +60,21 @@ size_t hash< tuple<string, string, string> >::operator()(const tuple<string, str
return static_cast<size_t>(seed);
}
+size_t hash< tuple<string, string, string, bool> >::operator()(const tuple<string, string, string, bool>& t) const {
+ const string& a = get<0>(t);
+ const string& b = get<1>(t);
+ const string& c = get<2>(t);
+ const bool d = get<3>(t);
+
+ uint32_t seed = static_cast<uint32_t>(SMHASHER_SEED_VALUE);
+ MurmurHash3_x86_32(a.c_str(), a.length(), seed, &seed);
+ MurmurHash3_x86_32(b.c_str(), b.length(), seed, &seed);
+ MurmurHash3_x86_32(c.c_str(), c.length(), seed, &seed);
+ seed + (int)d;
+
+ return static_cast<size_t>(seed);
+}
+
size_t hash< tuple<string, string, string, string> >::operator()(const tuple<string, string, string, string>& t) const {
const string& a = get<0>(t);
diff --git a/src/CommonAPI/DBus/DBusFunctionalHash.h b/src/CommonAPI/DBus/DBusFunctionalHash.h
index 5867110..9736ac9 100644
--- a/src/CommonAPI/DBus/DBusFunctionalHash.h
+++ b/src/CommonAPI/DBus/DBusFunctionalHash.h
@@ -36,6 +36,12 @@ struct hash< tuple<string, string, string> >:
size_t operator()(const tuple<string, string, string>& t) const;
};
+template<>
+struct hash< tuple<string, string, string, bool> >:
+ public unary_function< tuple<string, string, string, bool>, size_t > {
+
+ size_t operator()(const tuple<string, string, string, bool>& t) const;
+};
template<>
struct hash< tuple<string, string, string, string> >: