template<typename Stream>
void WriteCompactSize(Stream& os, uint64_t nSize)
{
- if (nSize < 253)
+ if (nSize < 0xfd)
{
- unsigned char chSize = (unsigned char)nSize;
+ auto chSize = (uint8_t)nSize;
WRITEDATA(os, chSize);
}
- else if (nSize <= std::numeric_limits<unsigned short>::max())
+ else if (nSize <= std::numeric_limits<uint16_t>::max())
{
- unsigned char chSize = 253;
- unsigned short xSize = (unsigned short)nSize;
+ uint8_t chSize = 0xfd;
+ auto xSize = (uint16_t)nSize;
WRITEDATA(os, chSize);
WRITEDATA(os, xSize);
}
- else if (nSize <= std::numeric_limits<unsigned int>::max())
+ else if (nSize <= std::numeric_limits<uint32_t>::max())
{
- unsigned char chSize = 254;
- unsigned int xSize = (unsigned int)nSize;
+ uint8_t chSize = 0xfe;
+ auto xSize = (uint32_t)nSize;
WRITEDATA(os, chSize);
WRITEDATA(os, xSize);
}
else
{
- unsigned char chSize = 255;
- uint64_t xSize = nSize;
+ uint8_t chSize = 0xff;
+ auto xSize = nSize;
WRITEDATA(os, chSize);
WRITEDATA(os, xSize);
}
template<typename Stream>
uint64_t ReadCompactSize(Stream& is)
{
- unsigned char chSize;
+ uint8_t chSize;
READDATA(is, chSize);
uint64_t nSizeRet = 0;
- if (chSize < 253)
+ if (chSize < 0xfd)
{
nSizeRet = chSize;
}
- else if (chSize == 253)
+ else if (chSize == 0xfd)
{
- unsigned short xSize;
+ uint16_t xSize;
READDATA(is, xSize);
nSizeRet = xSize;
}
- else if (chSize == 254)
+ else if (chSize == 0xfe)
{
- unsigned int xSize;
+ uint32_t xSize;
READDATA(is, xSize);
nSizeRet = xSize;
}
bool CBufferedFile::Fill()
{
- unsigned int pos = (unsigned int)(nSrcPos % vchBuf.size());
- unsigned int readNow = (unsigned int)(vchBuf.size() - pos);
- unsigned int nAvail = (unsigned int)(vchBuf.size() - (nSrcPos - nReadPos) - nRewind);
+ auto pos = (uint32_t)(nSrcPos % vchBuf.size());
+ auto readNow = (uint32_t)(vchBuf.size() - pos);
+ auto nAvail = (uint32_t)(vchBuf.size() - (nSrcPos - nReadPos) - nRewind);
if (nAvail < readNow)
readNow = nAvail;
if (readNow == 0)
while (nSize > 0) {
if (nReadPos == nSrcPos)
Fill();
- unsigned int pos = (unsigned int)(nReadPos % vchBuf.size());
- size_t nNow = nSize;
+ auto pos = (uint32_t)(nReadPos % vchBuf.size());
+ auto nNow = nSize;
if (nNow + pos > vchBuf.size())
nNow = vchBuf.size() - pos;
if (nNow + nReadPos > nSrcPos)
//
// Compact size
-// size < 253 -- 1 byte
-// size <= USHRT_MAX -- 3 bytes (253 + 2 bytes)
-// size <= UINT_MAX -- 5 bytes (254 + 4 bytes)
-// size > UINT_MAX -- 9 bytes (255 + 8 bytes)
+// size < 253 -- 1 byte
+// size <= UINT16_MAX -- 3 bytes (253 + 2 bytes)
+// size <= UINT32_MAX -- 5 bytes (254 + 4 bytes)
+// size > UINT32_MAX -- 9 bytes (255 + 8 bytes)
//
-inline unsigned int GetSizeOfCompactSize(uint64_t nSize)
+inline uint32_t GetSizeOfCompactSize(uint64_t nSize)
{
- if (nSize < 253) return sizeof(unsigned char);
- else if (nSize <= std::numeric_limits<unsigned short>::max()) return sizeof(unsigned char) + sizeof(unsigned short);
- else if (nSize <= std::numeric_limits<unsigned int>::max()) return sizeof(unsigned char) + sizeof(unsigned int);
- else return sizeof(unsigned char) + sizeof(uint64_t);
+ if (nSize < 0xfd)
+ return 1;
+ if (nSize <= std::numeric_limits<uint16_t>::max())
+ return 3;
+ if (nSize <= std::numeric_limits<uint32_t>::max())
+ return 5;
+ return 9;
}
template<typename Stream>