mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-13 11:25:02 -05:00
Get rid of VARINT default argument
This removes the need for the GNU C++ extension of variadic macros.
This commit is contained in:
parent
646f0ada02
commit
0e0fa27acb
6 changed files with 22 additions and 21 deletions
|
@ -333,12 +333,12 @@ public:
|
||||||
SERIALIZE_METHODS(CDiskBlockIndex, obj)
|
SERIALIZE_METHODS(CDiskBlockIndex, obj)
|
||||||
{
|
{
|
||||||
int _nVersion = s.GetVersion();
|
int _nVersion = s.GetVersion();
|
||||||
if (!(s.GetType() & SER_GETHASH)) READWRITE(VARINT(_nVersion, VarIntMode::NONNEGATIVE_SIGNED));
|
if (!(s.GetType() & SER_GETHASH)) READWRITE(VARINT_MODE(_nVersion, VarIntMode::NONNEGATIVE_SIGNED));
|
||||||
|
|
||||||
READWRITE(VARINT(obj.nHeight, VarIntMode::NONNEGATIVE_SIGNED));
|
READWRITE(VARINT_MODE(obj.nHeight, VarIntMode::NONNEGATIVE_SIGNED));
|
||||||
READWRITE(VARINT(obj.nStatus));
|
READWRITE(VARINT(obj.nStatus));
|
||||||
READWRITE(VARINT(obj.nTx));
|
READWRITE(VARINT(obj.nTx));
|
||||||
if (obj.nStatus & (BLOCK_HAVE_DATA | BLOCK_HAVE_UNDO)) READWRITE(VARINT(obj.nFile, VarIntMode::NONNEGATIVE_SIGNED));
|
if (obj.nStatus & (BLOCK_HAVE_DATA | BLOCK_HAVE_UNDO)) READWRITE(VARINT_MODE(obj.nFile, VarIntMode::NONNEGATIVE_SIGNED));
|
||||||
if (obj.nStatus & BLOCK_HAVE_DATA) READWRITE(VARINT(obj.nDataPos));
|
if (obj.nStatus & BLOCK_HAVE_DATA) READWRITE(VARINT(obj.nDataPos));
|
||||||
if (obj.nStatus & BLOCK_HAVE_UNDO) READWRITE(VARINT(obj.nUndoPos));
|
if (obj.nStatus & BLOCK_HAVE_UNDO) READWRITE(VARINT(obj.nUndoPos));
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@ struct FlatFilePos
|
||||||
|
|
||||||
template <typename Stream, typename Operation>
|
template <typename Stream, typename Operation>
|
||||||
inline void SerializationOp(Stream& s, Operation ser_action) {
|
inline void SerializationOp(Stream& s, Operation ser_action) {
|
||||||
READWRITE(VARINT(nFile, VarIntMode::NONNEGATIVE_SIGNED));
|
READWRITE(VARINT_MODE(nFile, VarIntMode::NONNEGATIVE_SIGNED));
|
||||||
READWRITE(VARINT(nPos));
|
READWRITE(VARINT(nPos));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@ static void ApplyStats(CCoinsStats &stats, CHashWriter& ss, const uint256& hash,
|
||||||
for (const auto& output : outputs) {
|
for (const auto& output : outputs) {
|
||||||
ss << VARINT(output.first + 1);
|
ss << VARINT(output.first + 1);
|
||||||
ss << output.second.out.scriptPubKey;
|
ss << output.second.out.scriptPubKey;
|
||||||
ss << VARINT(output.second.out.nValue, VarIntMode::NONNEGATIVE_SIGNED);
|
ss << VARINT_MODE(output.second.out.nValue, VarIntMode::NONNEGATIVE_SIGNED);
|
||||||
stats.nTransactionOutputs++;
|
stats.nTransactionOutputs++;
|
||||||
stats.nTotalAmount += output.second.out.nValue;
|
stats.nTotalAmount += output.second.out.nValue;
|
||||||
stats.nBogoSize += 32 /* txid */ + 4 /* vout index */ + 4 /* height + coinbase */ + 8 /* amount */ +
|
stats.nBogoSize += 32 /* txid */ + 4 /* vout index */ + 4 /* height + coinbase */ + 8 /* amount */ +
|
||||||
|
|
|
@ -493,12 +493,13 @@ public:
|
||||||
template<typename Formatter, typename T>
|
template<typename Formatter, typename T>
|
||||||
static inline Wrapper<Formatter, T&> Using(T&& t) { return Wrapper<Formatter, T&>(t); }
|
static inline Wrapper<Formatter, T&> Using(T&& t) { return Wrapper<Formatter, T&>(t); }
|
||||||
|
|
||||||
#define VARINT(obj, ...) Using<VarIntFormatter<__VA_ARGS__>>(obj)
|
#define VARINT_MODE(obj, mode) Using<VarIntFormatter<mode>>(obj)
|
||||||
|
#define VARINT(obj) Using<VarIntFormatter<VarIntMode::DEFAULT>>(obj)
|
||||||
#define COMPACTSIZE(obj) CCompactSize(REF(obj))
|
#define COMPACTSIZE(obj) CCompactSize(REF(obj))
|
||||||
#define LIMITED_STRING(obj,n) LimitedString< n >(REF(obj))
|
#define LIMITED_STRING(obj,n) LimitedString< n >(REF(obj))
|
||||||
|
|
||||||
/** Serialization wrapper class for integers in VarInt format. */
|
/** Serialization wrapper class for integers in VarInt format. */
|
||||||
template<VarIntMode Mode=VarIntMode::DEFAULT>
|
template<VarIntMode Mode>
|
||||||
struct VarIntFormatter
|
struct VarIntFormatter
|
||||||
{
|
{
|
||||||
template<typename Stream, typename I> void Ser(Stream &s, I v)
|
template<typename Stream, typename I> void Ser(Stream &s, I v)
|
||||||
|
|
|
@ -182,8 +182,8 @@ BOOST_AUTO_TEST_CASE(varints)
|
||||||
CDataStream ss(SER_DISK, 0);
|
CDataStream ss(SER_DISK, 0);
|
||||||
CDataStream::size_type size = 0;
|
CDataStream::size_type size = 0;
|
||||||
for (int i = 0; i < 100000; i++) {
|
for (int i = 0; i < 100000; i++) {
|
||||||
ss << VARINT(i, VarIntMode::NONNEGATIVE_SIGNED);
|
ss << VARINT_MODE(i, VarIntMode::NONNEGATIVE_SIGNED);
|
||||||
size += ::GetSerializeSize(VARINT(i, VarIntMode::NONNEGATIVE_SIGNED), 0);
|
size += ::GetSerializeSize(VARINT_MODE(i, VarIntMode::NONNEGATIVE_SIGNED), 0);
|
||||||
BOOST_CHECK(size == ss.size());
|
BOOST_CHECK(size == ss.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -196,7 +196,7 @@ BOOST_AUTO_TEST_CASE(varints)
|
||||||
// decode
|
// decode
|
||||||
for (int i = 0; i < 100000; i++) {
|
for (int i = 0; i < 100000; i++) {
|
||||||
int j = -1;
|
int j = -1;
|
||||||
ss >> VARINT(j, VarIntMode::NONNEGATIVE_SIGNED);
|
ss >> VARINT_MODE(j, VarIntMode::NONNEGATIVE_SIGNED);
|
||||||
BOOST_CHECK_MESSAGE(i == j, "decoded:" << j << " expected:" << i);
|
BOOST_CHECK_MESSAGE(i == j, "decoded:" << j << " expected:" << i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -210,21 +210,21 @@ BOOST_AUTO_TEST_CASE(varints)
|
||||||
BOOST_AUTO_TEST_CASE(varints_bitpatterns)
|
BOOST_AUTO_TEST_CASE(varints_bitpatterns)
|
||||||
{
|
{
|
||||||
CDataStream ss(SER_DISK, 0);
|
CDataStream ss(SER_DISK, 0);
|
||||||
ss << VARINT(0, VarIntMode::NONNEGATIVE_SIGNED); BOOST_CHECK_EQUAL(HexStr(ss), "00"); ss.clear();
|
ss << VARINT_MODE(0, VarIntMode::NONNEGATIVE_SIGNED); BOOST_CHECK_EQUAL(HexStr(ss), "00"); ss.clear();
|
||||||
ss << VARINT(0x7f, VarIntMode::NONNEGATIVE_SIGNED); BOOST_CHECK_EQUAL(HexStr(ss), "7f"); ss.clear();
|
ss << VARINT_MODE(0x7f, VarIntMode::NONNEGATIVE_SIGNED); BOOST_CHECK_EQUAL(HexStr(ss), "7f"); ss.clear();
|
||||||
ss << VARINT((int8_t)0x7f, VarIntMode::NONNEGATIVE_SIGNED); BOOST_CHECK_EQUAL(HexStr(ss), "7f"); ss.clear();
|
ss << VARINT_MODE((int8_t)0x7f, VarIntMode::NONNEGATIVE_SIGNED); BOOST_CHECK_EQUAL(HexStr(ss), "7f"); ss.clear();
|
||||||
ss << VARINT(0x80, VarIntMode::NONNEGATIVE_SIGNED); BOOST_CHECK_EQUAL(HexStr(ss), "8000"); ss.clear();
|
ss << VARINT_MODE(0x80, VarIntMode::NONNEGATIVE_SIGNED); BOOST_CHECK_EQUAL(HexStr(ss), "8000"); ss.clear();
|
||||||
ss << VARINT((uint8_t)0x80); BOOST_CHECK_EQUAL(HexStr(ss), "8000"); ss.clear();
|
ss << VARINT((uint8_t)0x80); BOOST_CHECK_EQUAL(HexStr(ss), "8000"); ss.clear();
|
||||||
ss << VARINT(0x1234, VarIntMode::NONNEGATIVE_SIGNED); BOOST_CHECK_EQUAL(HexStr(ss), "a334"); ss.clear();
|
ss << VARINT_MODE(0x1234, VarIntMode::NONNEGATIVE_SIGNED); BOOST_CHECK_EQUAL(HexStr(ss), "a334"); ss.clear();
|
||||||
ss << VARINT((int16_t)0x1234, VarIntMode::NONNEGATIVE_SIGNED); BOOST_CHECK_EQUAL(HexStr(ss), "a334"); ss.clear();
|
ss << VARINT_MODE((int16_t)0x1234, VarIntMode::NONNEGATIVE_SIGNED); BOOST_CHECK_EQUAL(HexStr(ss), "a334"); ss.clear();
|
||||||
ss << VARINT(0xffff, VarIntMode::NONNEGATIVE_SIGNED); BOOST_CHECK_EQUAL(HexStr(ss), "82fe7f"); ss.clear();
|
ss << VARINT_MODE(0xffff, VarIntMode::NONNEGATIVE_SIGNED); BOOST_CHECK_EQUAL(HexStr(ss), "82fe7f"); ss.clear();
|
||||||
ss << VARINT((uint16_t)0xffff); BOOST_CHECK_EQUAL(HexStr(ss), "82fe7f"); ss.clear();
|
ss << VARINT((uint16_t)0xffff); BOOST_CHECK_EQUAL(HexStr(ss), "82fe7f"); ss.clear();
|
||||||
ss << VARINT(0x123456, VarIntMode::NONNEGATIVE_SIGNED); BOOST_CHECK_EQUAL(HexStr(ss), "c7e756"); ss.clear();
|
ss << VARINT_MODE(0x123456, VarIntMode::NONNEGATIVE_SIGNED); BOOST_CHECK_EQUAL(HexStr(ss), "c7e756"); ss.clear();
|
||||||
ss << VARINT((int32_t)0x123456, VarIntMode::NONNEGATIVE_SIGNED); BOOST_CHECK_EQUAL(HexStr(ss), "c7e756"); ss.clear();
|
ss << VARINT_MODE((int32_t)0x123456, VarIntMode::NONNEGATIVE_SIGNED); BOOST_CHECK_EQUAL(HexStr(ss), "c7e756"); ss.clear();
|
||||||
ss << VARINT(0x80123456U); BOOST_CHECK_EQUAL(HexStr(ss), "86ffc7e756"); ss.clear();
|
ss << VARINT(0x80123456U); BOOST_CHECK_EQUAL(HexStr(ss), "86ffc7e756"); ss.clear();
|
||||||
ss << VARINT((uint32_t)0x80123456U); BOOST_CHECK_EQUAL(HexStr(ss), "86ffc7e756"); ss.clear();
|
ss << VARINT((uint32_t)0x80123456U); BOOST_CHECK_EQUAL(HexStr(ss), "86ffc7e756"); ss.clear();
|
||||||
ss << VARINT(0xffffffff); BOOST_CHECK_EQUAL(HexStr(ss), "8efefefe7f"); ss.clear();
|
ss << VARINT(0xffffffff); BOOST_CHECK_EQUAL(HexStr(ss), "8efefefe7f"); ss.clear();
|
||||||
ss << VARINT(0x7fffffffffffffffLL, VarIntMode::NONNEGATIVE_SIGNED); BOOST_CHECK_EQUAL(HexStr(ss), "fefefefefefefefe7f"); ss.clear();
|
ss << VARINT_MODE(0x7fffffffffffffffLL, VarIntMode::NONNEGATIVE_SIGNED); BOOST_CHECK_EQUAL(HexStr(ss), "fefefefefefefefe7f"); ss.clear();
|
||||||
ss << VARINT(0xffffffffffffffffULL); BOOST_CHECK_EQUAL(HexStr(ss), "80fefefefefefefefe7f"); ss.clear();
|
ss << VARINT(0xffffffffffffffffULL); BOOST_CHECK_EQUAL(HexStr(ss), "80fefefefefefefefe7f"); ss.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -339,7 +339,7 @@ public:
|
||||||
::Unserialize(s, Using<TxOutCompression>(vout[i]));
|
::Unserialize(s, Using<TxOutCompression>(vout[i]));
|
||||||
}
|
}
|
||||||
// coinbase height
|
// coinbase height
|
||||||
::Unserialize(s, VARINT(nHeight, VarIntMode::NONNEGATIVE_SIGNED));
|
::Unserialize(s, VARINT_MODE(nHeight, VarIntMode::NONNEGATIVE_SIGNED));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue