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 : 4761591 : BaseHash() : m_hash() {}
16 : 16916713 : explicit BaseHash(const HashType& in) : m_hash(in) {}
17 : :
18 : 291982 : unsigned char* begin()
19 : : {
20 : 291982 : return m_hash.begin();
21 : : }
22 : :
23 : 5884012 : const unsigned char* begin() const
24 : : {
25 : 5884012 : return m_hash.begin();
26 : : }
27 : :
28 : : unsigned char* end()
29 : : {
30 : : return m_hash.end();
31 : : }
32 : :
33 : 5884012 : const unsigned char* end() const
34 : : {
35 : 5884012 : return m_hash.end();
36 : : }
37 : :
38 : 3080 : operator std::vector<unsigned char>() const
39 : : {
40 [ + - ]: 3080 : 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 : 49202 : bool operator==(const BaseHash<HashType>& other) const noexcept
49 : : {
50 [ + - + - ]: 49202 : return m_hash == other.m_hash;
[ + - ]
51 : : }
52 : :
53 : 39 : bool operator!=(const BaseHash<HashType>& other) const noexcept
54 : : {
55 : 39 : return !(m_hash == other.m_hash);
56 : : }
57 : :
58 : 30529333 : bool operator<(const BaseHash<HashType>& other) const noexcept
59 : : {
60 [ + - ]: 30529333 : return m_hash < other.m_hash;
[ + - + - ]
61 : : }
62 : :
63 : 7248 : size_t size() const
64 : : {
65 : 7248 : return m_hash.size();
66 : : }
67 : :
68 : : unsigned char* data() { return m_hash.data(); }
69 : 7055 : const unsigned char* data() const { return m_hash.data(); }
70 : : };
71 : :
72 : : #endif // BITCOIN_UTIL_HASH_TYPE_H
|