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 4 : explicit BaseHash(const HashType& in) : m_hash(in) {} 17 : 18 0 : unsigned char* begin() 19 : { 20 0 : return m_hash.begin(); 21 : } 22 : 23 7788 : const unsigned char* begin() const 24 : { 25 7788 : 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 3 : size_t size() const 64 : { 65 3 : return m_hash.size(); 66 : } 67 : 68 : unsigned char* data() { return m_hash.data(); } 69 1 : const unsigned char* data() const { return m_hash.data(); } 70 : }; 71 : 72 : #endif // BITCOIN_UTIL_HASH_TYPE_H