Coverage Report

Created: 2026-09-02 14:16

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
489k
    BaseHash() : m_hash() {}
BaseHash<uint160>::BaseHash()
Line
Count
Source
15
469k
    BaseHash() : m_hash() {}
BaseHash<uint256>::BaseHash()
Line
Count
Source
15
20.1k
    BaseHash() : m_hash() {}
16
856k
    explicit BaseHash(const HashType& in) : m_hash(in) {}
BaseHash<uint160>::BaseHash(uint160 const&)
Line
Count
Source
16
822k
    explicit BaseHash(const HashType& in) : m_hash(in) {}
BaseHash<uint256>::BaseHash(uint256 const&)
Line
Count
Source
16
34.0k
    explicit BaseHash(const HashType& in) : m_hash(in) {}
17
18
    unsigned char* begin()
19
76.2k
    {
20
76.2k
        return m_hash.begin();
21
76.2k
    }
BaseHash<uint256>::begin()
Line
Count
Source
19
20.1k
    {
20
20.1k
        return m_hash.begin();
21
20.1k
    }
BaseHash<uint160>::begin()
Line
Count
Source
19
56.1k
    {
20
56.1k
        return m_hash.begin();
21
56.1k
    }
22
23
    const unsigned char* begin() const
24
831k
    {
25
831k
        return m_hash.begin();
26
831k
    }
BaseHash<uint160>::begin() const
Line
Count
Source
24
810k
    {
25
810k
        return m_hash.begin();
26
810k
    }
BaseHash<uint256>::begin() const
Line
Count
Source
24
20.2k
    {
25
20.2k
        return m_hash.begin();
26
20.2k
    }
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
831k
    {
35
831k
        return m_hash.end();
36
831k
    }
BaseHash<uint160>::end() const
Line
Count
Source
34
810k
    {
35
810k
        return m_hash.end();
36
810k
    }
BaseHash<uint256>::end() const
Line
Count
Source
34
20.1k
    {
35
20.1k
        return m_hash.end();
36
20.1k
    }
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.63k
    {
50
8.63k
        return m_hash == other.m_hash;
51
8.63k
    }
BaseHash<uint160>::operator==(BaseHash<uint160> const&) const
Line
Count
Source
49
8.59k
    {
50
8.59k
        return m_hash == other.m_hash;
51
8.59k
    }
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.42M
    {
55
1.42M
        return m_hash < other.m_hash;
56
1.42M
    }
BaseHash<uint160>::operator<(BaseHash<uint160> const&) const
Line
Count
Source
54
1.42M
    {
55
1.42M
        return m_hash < other.m_hash;
56
1.42M
    }
BaseHash<uint256>::operator<(BaseHash<uint256> const&) const
Line
Count
Source
54
1.28k
    {
55
1.28k
        return m_hash < other.m_hash;
56
1.28k
    }
57
58
    size_t size() const
59
15.3k
    {
60
15.3k
        return m_hash.size();
61
15.3k
    }
BaseHash<uint256>::size() const
Line
Count
Source
59
995
    {
60
995
        return m_hash.size();
61
995
    }
BaseHash<uint160>::size() const
Line
Count
Source
59
14.3k
    {
60
14.3k
        return m_hash.size();
61
14.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
1.85k
    const unsigned char* data() const { return m_hash.data(); }
BaseHash<uint256>::data() const
Line
Count
Source
64
78
    const unsigned char* data() const { return m_hash.data(); }
BaseHash<uint160>::data() const
Line
Count
Source
64
1.77k
    const unsigned char* data() const { return m_hash.data(); }
65
};
66
67
#endif // BITCOIN_UTIL_HASH_TYPE_H