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 [ + + + + ]: 33889 : BaseHash() : m_hash() {}
[ + - + -
+ - + - +
- + - + -
+ - + - +
- + - + -
+ - + - ]
16 [ + - + - : 179162 : explicit BaseHash(const HashType& in) : m_hash(in) {}
+ - + - ]
[ - - + -
+ - ][ + - ]
[ + - + - ]
17 : :
18 : 7633 : unsigned char* begin()
19 : : {
20 [ + - ]: 7633 : return m_hash.begin();
21 : : }
22 : :
23 : 342092 : const unsigned char* begin() const
24 : : {
25 [ + - + - : 342092 : return m_hash.begin();
+ - + - ]
[ # # ]
26 : : }
27 : :
28 : : unsigned char* end()
29 : : {
30 : : return m_hash.end();
31 : : }
32 : :
33 : 342030 : const unsigned char* end() const
34 : : {
35 [ + - + - : 342092 : 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 : 10 : std::string ToString() const
44 : : {
45 [ + - ]: 10 : return m_hash.ToString();
[ + - + - ]
[ + - + -
+ - ]
46 : : }
47 : :
48 : 622 : bool operator==(const BaseHash<HashType>& other) const noexcept
49 : : {
50 [ + + ]: 622 : return m_hash == other.m_hash;
[ + + + + ]
[ + - + -
+ - + - ]
51 : : }
52 : :
53 : 13 : bool operator!=(const BaseHash<HashType>& other) const noexcept
54 : : {
55 [ + + + + ]: 13 : return !(m_hash == other.m_hash);
56 : : }
57 : :
58 : 289328 : bool operator<(const BaseHash<HashType>& other) const noexcept
59 : : {
60 [ - - - - : 289328 : return m_hash < other.m_hash;
- - - - -
- - - - -
- - - - +
- - - ][ -
- - - - -
- - + + -
- - - - -
- - - - -
- - - - -
+ + - - +
+ ][ - + +
- + - + -
- - - - +
+ - + + -
+ + ][ - +
- - - - +
+ + - - -
- - - - -
- - - - -
- - - + -
- ]
[ # # # # ]
61 : : }
62 : :
63 [ # # # # ]: 2 : size_t size() const
[ + - ]
64 : : {
65 : : return m_hash.size();
66 : : }
67 : :
68 [ + - ]: 601 : 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
|