diff options
Diffstat (limited to 'src/serialize.h')
-rw-r--r-- | src/serialize.h | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/serialize.h b/src/serialize.h index 5c2db9d332..378ed39074 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -373,6 +373,7 @@ I ReadVarInt(Stream& is) #define FLATDATA(obj) REF(CFlatData((char*)&(obj), (char*)&(obj) + sizeof(obj))) #define VARINT(obj) REF(WrapVarInt(REF(obj))) +#define COMPACTSIZE(obj) REF(CCompactSize(REF(obj))) #define LIMITED_STRING(obj,n) REF(LimitedString< n >(REF(obj))) /** @@ -443,6 +444,28 @@ public: } }; +class CCompactSize +{ +protected: + uint64_t &n; +public: + CCompactSize(uint64_t& nIn) : n(nIn) { } + + unsigned int GetSerializeSize(int, int) const { + return GetSizeOfCompactSize(n); + } + + template<typename Stream> + void Serialize(Stream &s, int, int) const { + WriteCompactSize<Stream>(s, n); + } + + template<typename Stream> + void Unserialize(Stream& s, int, int) { + n = ReadCompactSize<Stream>(s); + } +}; + template<size_t Limit> class LimitedString { |