Bitcoin Core  22.99.0
P2P Digital Currency
hash_type.h
Go to the documentation of this file.
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  BaseHash() : m_hash() {}
16  explicit BaseHash(const HashType& in) : m_hash(in) {}
17 
18  unsigned char* begin()
19  {
20  return m_hash.begin();
21  }
22 
23  const unsigned char* begin() const
24  {
25  return m_hash.begin();
26  }
27 
28  unsigned char* end()
29  {
30  return m_hash.end();
31  }
32 
33  const unsigned char* end() const
34  {
35  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  std::string ToString() const
44  {
45  return m_hash.ToString();
46  }
47 
48  bool operator==(const BaseHash<HashType>& other) const noexcept
49  {
50  return m_hash == other.m_hash;
51  }
52 
53  bool operator!=(const BaseHash<HashType>& other) const noexcept
54  {
55  return !(m_hash == other.m_hash);
56  }
57 
58  bool operator<(const BaseHash<HashType>& other) const noexcept
59  {
60  return m_hash < other.m_hash;
61  }
62 
63  size_t size() const
64  {
65  return m_hash.size();
66  }
67 
68  unsigned char* data() { return m_hash.data(); }
69  const unsigned char* data() const { return m_hash.data(); }
70 };
71 
72 #endif // BITCOIN_UTIL_HASH_TYPE_H
BaseHash::operator==
bool operator==(const BaseHash< HashType > &other) const noexcept
Definition: hash_type.h:48
BaseHash::m_hash
HashType m_hash
Definition: hash_type.h:12
BaseHash::begin
unsigned char * begin()
Definition: hash_type.h:18
BaseHash::data
unsigned char * data()
Definition: hash_type.h:68
BaseHash
Definition: hash_type.h:9
BaseHash::ToString
std::string ToString() const
Definition: hash_type.h:43
BaseHash::operator!=
bool operator!=(const BaseHash< HashType > &other) const noexcept
Definition: hash_type.h:53
BaseHash::end
const unsigned char * end() const
Definition: hash_type.h:33
BaseHash::BaseHash
BaseHash(const HashType &in)
Definition: hash_type.h:16
BaseHash::BaseHash
BaseHash()
Definition: hash_type.h:15
BaseHash::size
size_t size() const
Definition: hash_type.h:63
BaseHash::operator<
bool operator<(const BaseHash< HashType > &other) const noexcept
Definition: hash_type.h:58
BaseHash::begin
const unsigned char * begin() const
Definition: hash_type.h:23
BaseHash::data
const unsigned char * data() const
Definition: hash_type.h:69
BaseHash::end
unsigned char * end()
Definition: hash_type.h:28