Coverage Report

Created: 2026-06-03 10:44

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/tmp/bitcoin/src/util/hash_type.h
Line
Count
Source
1
// Copyright (c) 2020-present 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
477k
    BaseHash() : m_hash() {}
BaseHash<uint160>::BaseHash()
Line
Count
Source
15
457k
    BaseHash() : m_hash() {}
BaseHash<uint256>::BaseHash()
Line
Count
Source
15
19.6k
    BaseHash() : m_hash() {}
16
909k
    explicit BaseHash(const HashType& in) : m_hash(in) {}
BaseHash<uint160>::BaseHash(uint160 const&)
Line
Count
Source
16
876k
    explicit BaseHash(const HashType& in) : m_hash(in) {}
BaseHash<uint256>::BaseHash(uint256 const&)
Line
Count
Source
16
32.4k
    explicit BaseHash(const HashType& in) : m_hash(in) {}
17
18
    unsigned char* begin()
19
83.5k
    {
20
83.5k
        return m_hash.begin();
21
83.5k
    }
BaseHash<uint256>::begin()
Line
Count
Source
19
19.6k
    {
20
19.6k
        return m_hash.begin();
21
19.6k
    }
BaseHash<uint160>::begin()
Line
Count
Source
19
63.9k
    {
20
63.9k
        return m_hash.begin();
21
63.9k
    }
22
23
    const unsigned char* begin() const
24
835k
    {
25
835k
        return m_hash.begin();
26
835k
    }
BaseHash<uint160>::begin() const
Line
Count
Source
24
815k
    {
25
815k
        return m_hash.begin();
26
815k
    }
BaseHash<uint256>::begin() const
Line
Count
Source
24
19.7k
    {
25
19.7k
        return m_hash.begin();
26
19.7k
    }
27
28
    unsigned char* end()
29
0
    {
30
0
        return m_hash.end();
31
0
    }
Unexecuted instantiation: BaseHash<uint256>::end()
Unexecuted instantiation: BaseHash<uint160>::end()
32
33
    const unsigned char* end() const
34
835k
    {
35
835k
        return m_hash.end();
36
835k
    }
BaseHash<uint160>::end() const
Line
Count
Source
34
815k
    {
35
815k
        return m_hash.end();
36
815k
    }
BaseHash<uint256>::end() const
Line
Count
Source
34
19.6k
    {
35
19.6k
        return m_hash.end();
36
19.6k
    }
37
38
    operator std::vector<unsigned char>() const
39
    {
40
        return std::vector<unsigned char>{m_hash.begin(), m_hash.end()};
41
    }
42
43
    std::string ToString() const
44
14
    {
45
14
        return m_hash.ToString();
46
14
    }
BaseHash<uint256>::ToString[abi:cxx11]() const
Line
Count
Source
44
11
    {
45
11
        return m_hash.ToString();
46
11
    }
BaseHash<uint160>::ToString[abi:cxx11]() const
Line
Count
Source
44
3
    {
45
3
        return m_hash.ToString();
46
3
    }
47
48
    bool operator==(const BaseHash<HashType>& other) const noexcept
49
8.73k
    {
50
8.73k
        return m_hash == other.m_hash;
51
8.73k
    }
BaseHash<uint160>::operator==(BaseHash<uint160> const&) const
Line
Count
Source
49
8.70k
    {
50
8.70k
        return m_hash == other.m_hash;
51
8.70k
    }
BaseHash<uint256>::operator==(BaseHash<uint256> const&) const
Line
Count
Source
49
36
    {
50
36
        return m_hash == other.m_hash;
51
36
    }
52
53
    bool operator<(const BaseHash<HashType>& other) const noexcept
54
1.66M
    {
55
1.66M
        return m_hash < other.m_hash;
56
1.66M
    }
BaseHash<uint160>::operator<(BaseHash<uint160> const&) const
Line
Count
Source
54
1.66M
    {
55
1.66M
        return m_hash < other.m_hash;
56
1.66M
    }
BaseHash<uint256>::operator<(BaseHash<uint256> const&) const
Line
Count
Source
54
1.26k
    {
55
1.26k
        return m_hash < other.m_hash;
56
1.26k
    }
57
58
    size_t size() const
59
30.3k
    {
60
30.3k
        return m_hash.size();
61
30.3k
    }
BaseHash<uint256>::size() const
Line
Count
Source
59
987
    {
60
987
        return m_hash.size();
61
987
    }
BaseHash<uint160>::size() const
Line
Count
Source
59
29.3k
    {
60
29.3k
        return m_hash.size();
61
29.3k
    }
62
63
601
    unsigned char* data() { return m_hash.data(); }
BaseHash<uint256>::data()
Line
Count
Source
63
600
    unsigned char* data() { return m_hash.data(); }
BaseHash<uint160>::data()
Line
Count
Source
63
1
    unsigned char* data() { return m_hash.data(); }
64
17.0k
    const unsigned char* data() const { return m_hash.data(); }
BaseHash<uint256>::data() const
Line
Count
Source
64
75
    const unsigned char* data() const { return m_hash.data(); }
BaseHash<uint160>::data() const
Line
Count
Source
64
17.0k
    const unsigned char* data() const { return m_hash.data(); }
65
};
66
67
#endif // BITCOIN_UTIL_HASH_TYPE_H