1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2024-11-24 11:45:53 +01:00

Some micro-optimizatoins and code cleanup

This commit is contained in:
Martin Tůma 2020-02-04 21:47:31 +01:00
parent 25939cfa62
commit 3b16f37e66
3 changed files with 17 additions and 23 deletions

View File

@ -50,18 +50,13 @@ bool BitStream4::read(int bits, quint32 &val)
return true; return true;
} }
quint32 old = 0; quint32 old = (_used < 32) ? (_data << _used) >> (32 - bits) : 0;
if (_used < 32) { quint32 bytes = qMin(_length, 4U);
old = (_data << _used) >> (32 - bits);
bits = (bits - 32) + _used;
}
_used = bits;
quint32 bytes = qMin(_length, (quint32)4);
if (!_file.readVUInt32SW(_hdl, bytes, _data)) if (!_file.readVUInt32SW(_hdl, bytes, _data))
return false; return false;
_used -= 32 - bits;
_length -= bytes; _length -= bytes;
_unused = (4 - bytes) * 8; _unused = (4 - bytes) * 8;
_data <<= _unused; _data <<= _unused;

View File

@ -69,20 +69,6 @@ bool SubFile::readVUInt32(Handle &hdl, quint32 &val) const
return true; return true;
} }
bool SubFile::readVUInt32SW(Handle &hdl, quint32 bytes, quint32 &val) const
{
quint8 b;
val = 0;
for (quint32 i = bytes; i; i--) {
if (!readByte(hdl, b))
return false;
val |= ((quint32)b) << ((i-1) * 8);
}
return true;
}
bool SubFile::readVBitfield32(Handle &hdl, quint32 &bitfield) const bool SubFile::readVBitfield32(Handle &hdl, quint32 &bitfield) const
{ {
quint8 bits; quint8 bits;

View File

@ -97,8 +97,21 @@ public:
return true; return true;
} }
bool readVUInt32SW(Handle &hdl, quint32 bytes, quint32 &val) const
{
quint8 b;
val = 0;
for (quint32 i = bytes; i; i--) {
if (!readByte(hdl, b))
return false;
val |= ((quint32)b) << ((i-1) * 8);
}
return true;
}
bool readVUInt32(Handle &hdl, quint32 &val) const; bool readVUInt32(Handle &hdl, quint32 &val) const;
bool readVUInt32SW(Handle &hdl, quint32 bytes, quint32 &val) const;
bool readVBitfield32(Handle &hdl, quint32 &bitfield) const; bool readVBitfield32(Handle &hdl, quint32 &bitfield) const;
quint16 offset() const {return _blocks->first();} quint16 offset() const {return _blocks->first();}