mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-10 14:08:40 +01:00
Replace uint256 specific implementations of base_uint::GetHex() and base_uint::SetHex() with proper ones that don't depend on uint256 and replace template methods instantiations of base_uint with template class instantiation
This commit is contained in:
@@ -146,13 +146,21 @@ double base_uint<BITS>::getdouble() const
|
|||||||
template <unsigned int BITS>
|
template <unsigned int BITS>
|
||||||
std::string base_uint<BITS>::GetHex() const
|
std::string base_uint<BITS>::GetHex() const
|
||||||
{
|
{
|
||||||
return ArithToUint256(*this).GetHex();
|
base_blob<BITS> b;
|
||||||
|
for (int x = 0; x < this->WIDTH; ++x) {
|
||||||
|
WriteLE32(b.begin() + x*4, this->pn[x]);
|
||||||
|
}
|
||||||
|
return b.GetHex();
|
||||||
}
|
}
|
||||||
|
|
||||||
template <unsigned int BITS>
|
template <unsigned int BITS>
|
||||||
void base_uint<BITS>::SetHex(const char* psz)
|
void base_uint<BITS>::SetHex(const char* psz)
|
||||||
{
|
{
|
||||||
*this = UintToArith256(uint256S(psz));
|
base_blob<BITS> b;
|
||||||
|
b.SetHex(psz);
|
||||||
|
for (int x = 0; x < this->WIDTH; ++x) {
|
||||||
|
this->pn[x] = ReadLE32(b.begin() + x*4);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template <unsigned int BITS>
|
template <unsigned int BITS>
|
||||||
@@ -164,7 +172,7 @@ void base_uint<BITS>::SetHex(const std::string& str)
|
|||||||
template <unsigned int BITS>
|
template <unsigned int BITS>
|
||||||
std::string base_uint<BITS>::ToString() const
|
std::string base_uint<BITS>::ToString() const
|
||||||
{
|
{
|
||||||
return (GetHex());
|
return GetHex();
|
||||||
}
|
}
|
||||||
|
|
||||||
template <unsigned int BITS>
|
template <unsigned int BITS>
|
||||||
@@ -183,20 +191,7 @@ unsigned int base_uint<BITS>::bits() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Explicit instantiations for base_uint<256>
|
// Explicit instantiations for base_uint<256>
|
||||||
template base_uint<256>::base_uint(const std::string&);
|
template class base_uint<256>;
|
||||||
template base_uint<256>& base_uint<256>::operator<<=(unsigned int);
|
|
||||||
template base_uint<256>& base_uint<256>::operator>>=(unsigned int);
|
|
||||||
template base_uint<256>& base_uint<256>::operator*=(uint32_t b32);
|
|
||||||
template base_uint<256>& base_uint<256>::operator*=(const base_uint<256>& b);
|
|
||||||
template base_uint<256>& base_uint<256>::operator/=(const base_uint<256>& b);
|
|
||||||
template int base_uint<256>::CompareTo(const base_uint<256>&) const;
|
|
||||||
template bool base_uint<256>::EqualTo(uint64_t) const;
|
|
||||||
template double base_uint<256>::getdouble() const;
|
|
||||||
template std::string base_uint<256>::GetHex() const;
|
|
||||||
template std::string base_uint<256>::ToString() const;
|
|
||||||
template void base_uint<256>::SetHex(const char*);
|
|
||||||
template void base_uint<256>::SetHex(const std::string&);
|
|
||||||
template unsigned int base_uint<256>::bits() const;
|
|
||||||
|
|
||||||
// This implementation directly uses shifts instead of going
|
// This implementation directly uses shifts instead of going
|
||||||
// through an intermediate MPI representation.
|
// through an intermediate MPI representation.
|
||||||
|
|||||||
@@ -284,4 +284,6 @@ public:
|
|||||||
uint256 ArithToUint256(const arith_uint256 &);
|
uint256 ArithToUint256(const arith_uint256 &);
|
||||||
arith_uint256 UintToArith256(const uint256 &);
|
arith_uint256 UintToArith256(const uint256 &);
|
||||||
|
|
||||||
|
extern template class base_uint<256>;
|
||||||
|
|
||||||
#endif // BITCOIN_ARITH_UINT256_H
|
#endif // BITCOIN_ARITH_UINT256_H
|
||||||
|
|||||||
Reference in New Issue
Block a user