From cb7fdf6ad8c66a79b88993681da16f4bfc4b8b15 Mon Sep 17 00:00:00 2001 From: Arthur Britto Date: Thu, 26 Apr 2012 15:18:10 -0700 Subject: [PATCH] Make CBase58Data (and NewcoinAddress) hashable. --- src/base58.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/base58.h b/src/base58.h index f2603e6f6..53d13d704 100644 --- a/src/base58.h +++ b/src/base58.h @@ -18,6 +18,8 @@ #include #include #include +#include +#include #include "bignum.h" #include "BitcoinUtil.h" @@ -241,7 +243,21 @@ public: bool operator>=(const CBase58Data& b58) const { return CompareTo(b58) >= 0; } bool operator< (const CBase58Data& b58) const { return CompareTo(b58) < 0; } bool operator> (const CBase58Data& b58) const { return CompareTo(b58) > 0; } + + friend std::size_t hash_value(CBase58Data const& b58); }; +inline std::size_t hash_value(CBase58Data const& b58) +{ + std::size_t seed = 0; + + boost::hash_combine(seed, b58.nVersion); + BOOST_FOREACH(const unsigned char& x, b58.vchData) + { + boost::hash_combine(seed, x); + } + + return seed; +} #endif // vim:ts=4