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