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 [ + + + + ]: 601567 : BaseHash() : m_hash() {}
[ + - + -
+ - + - +
- + - + -
+ - + - +
- + - + -
+ - + - ]
16 [ + - + - : 460475 : explicit BaseHash(const HashType& in) : m_hash(in) {}
+ - + - ]
[ - - + -
+ - ][ + - ]
[ + - + - ]
17 : :
18 : 223982 : unsigned char* begin()
19 : : {
20 [ + - ]: 223982 : return m_hash.begin();
21 : : }
22 : :
23 : 860959 : const unsigned char* begin() const
24 : : {
25 [ + - + - : 860959 : return m_hash.begin();
+ - + - ]
[ + - ]
26 : : }
27 : :
28 : : unsigned char* end()
29 : : {
30 : : return m_hash.end();
31 : : }
32 : :
33 : 829325 : const unsigned char* end() const
34 : : {
35 [ + - + - : 860949 : 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 : 14 : std::string ToString() const
44 : : {
45 [ + - ]: 14 : return m_hash.ToString();
[ + - + - ]
[ + - + -
+ - ]
46 : : }
47 : :
48 : 7232 : bool operator==(const BaseHash<HashType>& other) const noexcept
49 : : {
50 [ + + ]: 7232 : return m_hash == other.m_hash;
[ + + + + ]
[ + - + -
+ - + - ]
51 : : }
52 : :
53 : 31 : bool operator!=(const BaseHash<HashType>& other) const noexcept
54 : : {
55 [ + + + + ]: 31 : return !(m_hash == other.m_hash);
56 : : }
57 : :
58 : 1733439 : bool operator<(const BaseHash<HashType>& other) const noexcept
59 : : {
60 [ - - - - : 1733439 : return m_hash < other.m_hash;
- - - - -
- - - - -
- - - - +
- - - ][ -
- - - - -
- - + + -
- - - - -
- - - - -
- - - - -
+ + - - +
+ ][ + + +
+ + + + +
+ - + - +
+ - + + -
+ + ][ - +
- - - - +
+ + - - -
- - - - -
- - - - -
- - - + -
- ]
[ # # # # ]
61 : : }
62 : :
63 [ + - + - ]: 6830 : size_t size() const
[ + - ]
64 : : {
65 : : return m_hash.size();
66 : : }
67 : :
68 [ + - ]: 601 : unsigned char* data() { return m_hash.data(); }
69 [ + - + - ]: 6829 : const unsigned char* data() const { return m_hash.data(); }
70 : : };
71 : :
72 : : #endif // BITCOIN_UTIL_HASH_TYPE_H
|