diff options
author | Johannes Schanda <schanda@itestra.de> | 2013-02-26 17:48:27 +0100 |
---|---|---|
committer | Johannes Schanda <schanda@itestra.de> | 2013-02-26 17:48:27 +0100 |
commit | d5c7d8da8c5590cd94f4e4d6e502a867876d5e8e (patch) | |
tree | af2690ca6b95678f240b9cdf26b820bde8b2fc10 | |
parent | 1ec50022e7c935006f4419b56578e35ecc94f216 (diff) | |
download | genivi-common-api-dbus-runtime-d5c7d8da8c5590cd94f4e4d6e502a867876d5e8e.tar.gz |
Add hash specialization for dbus service tuple
-rw-r--r-- | src/CommonAPI/DBus/DBusFunctionalHash.cpp | 15 | ||||
-rw-r--r-- | src/CommonAPI/DBus/DBusFunctionalHash.h | 6 |
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> >: |