Branch data 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 : 0 : BaseHash() : m_hash() {} 16 : 6 : explicit BaseHash(const HashType& in) : m_hash(in) {} 17 : : 18 : 0 : unsigned char* begin() 19 : : { 20 : 0 : return m_hash.begin(); 21 : : } 22 : : 23 : 0 : const unsigned char* begin() const 24 : : { 25 : 0 : return m_hash.begin(); 26 : : } 27 : : 28 : : unsigned char* end() 29 : : { 30 : : return m_hash.end(); 31 : : } 32 : : 33 : 0 : const unsigned char* end() const 34 : : { 35 : 0 : return m_hash.end(); 36 : : } 37 : : 38 : 0 : operator std::vector<unsigned char>() const 39 : : { 40 [ # # ]: 0 : return std::vector<unsigned char>{m_hash.begin(), m_hash.end()}; 41 : 0 : } 42 : : 43 : 0 : std::string ToString() const 44 : : { 45 : 0 : return m_hash.ToString(); 46 : : } 47 : : 48 : 0 : bool operator==(const BaseHash<HashType>& other) const noexcept 49 : : { 50 [ # # ][ # # ]: 0 : return m_hash == other.m_hash; 51 : : } 52 : : 53 : 0 : bool operator!=(const BaseHash<HashType>& other) const noexcept 54 : : { 55 : 0 : return !(m_hash == other.m_hash); 56 : : } 57 : : 58 : 0 : bool operator<(const BaseHash<HashType>& other) const noexcept 59 : : { 60 [ # # ][ # # ]: 0 : return m_hash < other.m_hash; 61 : : } 62 : : 63 : 0 : size_t size() const 64 : : { 65 : 0 : return m_hash.size(); 66 : : } 67 : : 68 : : unsigned char* data() { return m_hash.data(); } 69 : 0 : const unsigned char* data() const { return m_hash.data(); } 70 : : }; 71 : : 72 : : #endif // BITCOIN_UTIL_HASH_TYPE_H