Add COMPACTSIZE wrapper similar to VARINT for serialization
This commit is contained in:
parent
fc5ced317f
commit
6f1997182a
@ -386,6 +386,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)))
|
||||
|
||||
/**
|
||||
@ -456,6 +457,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
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user