Line data Source code
1 : // Copyright (c) 2020-2021 The Bitcoin Core developers 2 : // Distributed under the MIT software license, see the accompanying 3 : // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 : 5 : #ifndef BITCOIN_UTIL_HASH_TYPE_H 6 : #define BITCOIN_UTIL_HASH_TYPE_H 7 : 8 : template<typename HashType> 9 : class BaseHash 10 : { 11 : protected: 12 : HashType m_hash; 13 : 14 : public: 15 21907 : BaseHash() : m_hash() {} 16 118345 : explicit BaseHash(const HashType& in) : m_hash(in) {} 17 : 18 : unsigned char* begin() 19 : { 20 : return m_hash.begin(); 21 : } 22 : 23 150865 : const unsigned char* begin() const 24 : { 25 150865 : return m_hash.begin(); 26 : } 27 : 28 : unsigned char* end() 29 : { 30 : return m_hash.end(); 31 : } 32 : 33 150865 : const unsigned char* end() const 34 : { 35 150865 : return m_hash.end(); 36 : } 37 : 38 : operator std::vector<unsigned char>() const 39 : { 40 : return std::vector<unsigned char>{m_hash.begin(), m_hash.end()}; 41 : } 42 : 43 6 : std::string ToString() const 44 : { 45 6 : return m_hash.ToString(); 46 : } 47 : 48 439 : bool operator==(const BaseHash<HashType>& other) const noexcept 49 : { 50 439 : return m_hash == other.m_hash; 51 : } 52 : 53 3 : bool operator!=(const BaseHash<HashType>& other) const noexcept 54 : { 55 3 : return !(m_hash == other.m_hash); 56 : } 57 : 58 522292 : bool operator<(const BaseHash<HashType>& other) const noexcept 59 : { 60 522292 : return m_hash < other.m_hash; 61 : } 62 : 63 15 : size_t size() const 64 : { 65 15 : return m_hash.size(); 66 : } 67 : 68 : unsigned char* data() { return m_hash.data(); } 69 15 : const unsigned char* data() const { return m_hash.data(); } 70 : }; 71 : 72 : #endif // BITCOIN_UTIL_HASH_TYPE_H