Coverage Report

Created: 2026-05-06 07:53

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
471k
    BaseHash() : m_hash() {}
BaseHash<uint160>::BaseHash()
Line
Count
Source
15
451k
    BaseHash() : m_hash() {}
BaseHash<uint256>::BaseHash()
Line
Count
Source
15
19.5k
    BaseHash() : m_hash() {}
16
883k
    explicit BaseHash(const HashType& in) : m_hash(in) {}
BaseHash<uint160>::BaseHash(uint160 const&)
Line
Count
Source
16
851k
    explicit BaseHash(const HashType& in) : m_hash(in) {}
BaseHash<uint256>::BaseHash(uint256 const&)
Line
Count
Source
16
31.9k
    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.5k
    {
20
19.5k
        return m_hash.begin();
21
19.5k
    }
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
832k
    {
25
832k
        return m_hash.begin();
26
832k
    }
BaseHash<uint160>::begin() const
Line
Count
Source
24
813k
    {
25
813k
        return m_hash.begin();
26
813k
    }
BaseHash<uint256>::begin() const
Line
Count
Source
24
19.6k
    {
25
19.6k
        return m_hash.begin();
26
19.6k
    }
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
832k
    {
35
832k
        return m_hash.end();
36
832k
    }
BaseHash<uint160>::end() const
Line
Count
Source
34
813k
    {
35
813k
        return m_hash.end();
36
813k
    }
BaseHash<uint256>::end() const
Line
Count
Source
34
19.5k
    {
35
19.5k
        return m_hash.end();
36
19.5k
    }
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.42k
    {
50
8.42k
        return m_hash == other.m_hash;
51
8.42k
    }
BaseHash<uint160>::operator==(BaseHash<uint160> const&) const
Line
Count
Source
49
8.38k
    {
50
8.38k
        return m_hash == other.m_hash;
51
8.38k
    }
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.61M
    {
55
1.61M
        return m_hash < other.m_hash;
56
1.61M
    }
BaseHash<uint160>::operator<(BaseHash<uint160> const&) const
Line
Count
Source
54
1.61M
    {
55
1.61M
        return m_hash < other.m_hash;
56
1.61M
    }
BaseHash<uint256>::operator<(BaseHash<uint256> const&) const
Line
Count
Source
54
1.27k
    {
55
1.27k
        return m_hash < other.m_hash;
56
1.27k
    }
57
58
    size_t size() const
59
25.0k
    {
60
25.0k
        return m_hash.size();
61
25.0k
    }
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
24.0k
    {
60
24.0k
        return m_hash.size();
61
24.0k
    }
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
11.7k
    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
11.6k
    const unsigned char* data() const { return m_hash.data(); }
65
};
66
67
#endif // BITCOIN_UTIL_HASH_TYPE_H