From f39ec50101c0cb27eaf1473dbb588518b5e497f4 Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Tue, 3 Sep 2019 08:55:59 +0200 Subject: [PATCH] Converted BitStream_* defines to inline functions --- winpr/include/winpr/bitstream.h | 188 +++++++++++++++++++++------------------- 1 file changed, 98 insertions(+), 90 deletions(-) diff --git a/winpr/include/winpr/bitstream.h b/winpr/include/winpr/bitstream.h index 361fe91..f4db63f 100644 --- a/winpr/include/winpr/bitstream.h +++ b/winpr/include/winpr/bitstream.h @@ -47,96 +47,104 @@ typedef struct _wBitStream wBitStream; extern "C" { #endif -#define BitStream_Prefetch(_bs) do { \ - (_bs->prefetch) = 0; \ - if (((UINT32) (_bs->pointer - _bs->buffer) + 4) < (_bs->capacity)) \ - (_bs->prefetch) |= (*(_bs->pointer + 4) << 24); \ - if (((UINT32) (_bs->pointer - _bs->buffer) + 5) < (_bs->capacity)) \ - (_bs->prefetch) |= (*(_bs->pointer + 5) << 16); \ - if (((UINT32) (_bs->pointer - _bs->buffer) + 6) < (_bs->capacity)) \ - (_bs->prefetch) |= (*(_bs->pointer + 6) << 8); \ - if (((UINT32) (_bs->pointer - _bs->buffer) + 7) < (_bs->capacity)) \ - (_bs->prefetch) |= (*(_bs->pointer + 7) << 0); \ - } while(0) - -#define BitStream_Fetch(_bs) do { \ - (_bs->accumulator) = 0; \ - if (((UINT32) (_bs->pointer - _bs->buffer) + 0) < (_bs->capacity)) \ - (_bs->accumulator) |= (*(_bs->pointer + 0) << 24); \ - if (((UINT32) (_bs->pointer - _bs->buffer) + 1) < (_bs->capacity)) \ - (_bs->accumulator) |= (*(_bs->pointer + 1) << 16); \ - if (((UINT32) (_bs->pointer - _bs->buffer) + 2) < (_bs->capacity)) \ - (_bs->accumulator) |= (*(_bs->pointer + 2) << 8); \ - if (((UINT32) (_bs->pointer - _bs->buffer) + 3) <(_bs->capacity)) \ - (_bs->accumulator) |= (*(_bs->pointer + 3) << 0); \ - BitStream_Prefetch(_bs); \ - } while(0) - -#define BitStream_Flush(_bs) do { \ - if (((UINT32) (_bs->pointer - _bs->buffer) + 0) < (_bs->capacity)) \ - *(_bs->pointer + 0) = (_bs->accumulator >> 24); \ - if (((UINT32) (_bs->pointer - _bs->buffer) + 1) < (_bs->capacity)) \ - *(_bs->pointer + 1) = (_bs->accumulator >> 16); \ - if (((UINT32) (_bs->pointer - _bs->buffer) + 2) < (_bs->capacity)) \ - *(_bs->pointer + 2) = (_bs->accumulator >> 8); \ - if (((UINT32) (_bs->pointer - _bs->buffer) + 3) < (_bs->capacity)) \ - *(_bs->pointer + 3) = (_bs->accumulator >> 0); \ - } while(0) - -#define BitStream_Shift(_bs, _nbits) do { \ - if (_nbits == 0) { \ - } else if ((_nbits > 0) && (_nbits < 32)) { \ - _bs->accumulator <<= _nbits; \ - _bs->position += _nbits; \ - _bs->offset += _nbits; \ - if (_bs->offset < 32) { \ - _bs->mask = ((1 << _nbits) - 1); \ - _bs->accumulator |= ((_bs->prefetch >> (32 - _nbits)) & _bs->mask); \ - _bs->prefetch <<= _nbits; \ - } else { \ - _bs->mask = ((1 << _nbits) - 1); \ - _bs->accumulator |= ((_bs->prefetch >> (32 - _nbits)) & _bs->mask); \ - _bs->prefetch <<= _nbits; \ - _bs->offset -= 32; \ - _bs->pointer += 4; \ - BitStream_Prefetch(_bs); \ - if (_bs->offset) { \ - _bs->mask = ((1 << _bs->offset) - 1); \ - _bs->accumulator |= ((_bs->prefetch >> (32 - _bs->offset)) & _bs->mask); \ - _bs->prefetch <<= _bs->offset; \ - } \ - } \ - } else { \ - WLog_WARN("com.winpr.bitstream", "warning: BitStream_Shift(%u)", (unsigned)_nbits); \ - } \ - } while(0) - -#define BitStream_Shift32(_bs) do { \ - BitStream_Shift(_bs, 16); \ - BitStream_Shift(_bs, 16); \ - } while(0) - -#define BitStream_Write_Bits(_bs, _bits, _nbits) do { \ - _bs->position += _nbits; \ - _bs->offset += _nbits; \ - if (_bs->offset < 32) { \ - _bs->accumulator |= (_bits << (32 - _bs->offset)); \ - } else { \ - _bs->offset -= 32; \ - _bs->mask = ((1 << (_nbits - _bs->offset)) - 1); \ - _bs->accumulator |= ((_bits >> _bs->offset) & _bs->mask); \ - BitStream_Flush(bs); \ - _bs->accumulator = 0; \ - _bs->pointer += 4; \ - if (_bs->offset) { \ - _bs->mask = ((1 << _bs->offset) - 1); \ - _bs->accumulator |= ((_bits & _bs->mask) << (32 - _bs->offset)); \ - } \ - } \ - } while(0) - -#define BitStream_GetRemainingLength(_bs) \ - (_bs->length - _bs->position) +static INLINE void BitStream_Prefetch(wBitStream* _bs) +{ + (_bs->prefetch) = 0; + if (((UINT32) (_bs->pointer - _bs->buffer) + 4) < (_bs->capacity)) + (_bs->prefetch) |= (*(_bs->pointer + 4) << 24); + if (((UINT32) (_bs->pointer - _bs->buffer) + 5) < (_bs->capacity)) + (_bs->prefetch) |= (*(_bs->pointer + 5) << 16); + if (((UINT32) (_bs->pointer - _bs->buffer) + 6) < (_bs->capacity)) + (_bs->prefetch) |= (*(_bs->pointer + 6) << 8); + if (((UINT32) (_bs->pointer - _bs->buffer) + 7) < (_bs->capacity)) + (_bs->prefetch) |= (*(_bs->pointer + 7) << 0); +} + +static INLINE void BitStream_Fetch(wBitStream* _bs) +{ + (_bs->accumulator) = 0; + if (((UINT32) (_bs->pointer - _bs->buffer) + 0) < (_bs->capacity)) + (_bs->accumulator) |= (*(_bs->pointer + 0) << 24); + if (((UINT32) (_bs->pointer - _bs->buffer) + 1) < (_bs->capacity)) + (_bs->accumulator) |= (*(_bs->pointer + 1) << 16); + if (((UINT32) (_bs->pointer - _bs->buffer) + 2) < (_bs->capacity)) + (_bs->accumulator) |= (*(_bs->pointer + 2) << 8); + if (((UINT32) (_bs->pointer - _bs->buffer) + 3) <(_bs->capacity)) + (_bs->accumulator) |= (*(_bs->pointer + 3) << 0); + BitStream_Prefetch(_bs); +} + +static INLINE void BitStream_Flush(wBitStream* _bs) +{ + if (((UINT32) (_bs->pointer - _bs->buffer) + 0) < (_bs->capacity)) + *(_bs->pointer + 0) = (_bs->accumulator >> 24); + if (((UINT32) (_bs->pointer - _bs->buffer) + 1) < (_bs->capacity)) + *(_bs->pointer + 1) = (_bs->accumulator >> 16); + if (((UINT32) (_bs->pointer - _bs->buffer) + 2) < (_bs->capacity)) + *(_bs->pointer + 2) = (_bs->accumulator >> 8); + if (((UINT32) (_bs->pointer - _bs->buffer) + 3) < (_bs->capacity)) + *(_bs->pointer + 3) = (_bs->accumulator >> 0); +} + +static INLINE void BitStream_Shift(wBitStream* _bs, UINT32 _nbits) +{ + if (_nbits == 0) { + } else if ((_nbits > 0) && (_nbits < 32)) { + _bs->accumulator <<= _nbits; + _bs->position += _nbits; + _bs->offset += _nbits; + if (_bs->offset < 32) { + _bs->mask = ((1 << _nbits) - 1); + _bs->accumulator |= ((_bs->prefetch >> (32 - _nbits)) & _bs->mask); + _bs->prefetch <<= _nbits; + } else { + _bs->mask = ((1 << _nbits) - 1); + _bs->accumulator |= ((_bs->prefetch >> (32 - _nbits)) & _bs->mask); + _bs->prefetch <<= _nbits; + _bs->offset -= 32; + _bs->pointer += 4; + BitStream_Prefetch(_bs); + if (_bs->offset) { + _bs->mask = ((1 << _bs->offset) - 1); + _bs->accumulator |= ((_bs->prefetch >> (32 - _bs->offset)) & _bs->mask); + _bs->prefetch <<= _bs->offset; + } + } + } else { + WLog_WARN("com.winpr.bitstream", "warning: BitStream_Shift(%u)", (unsigned)_nbits); + } +} + +static INLINE void BitStream_Shift32(wBitStream* _bs) +{ + BitStream_Shift(_bs, 16); + BitStream_Shift(_bs, 16); +} + +static INLINE void BitStream_Write_Bits(wBitStream* _bs, UINT32 _bits, UINT32 _nbits) +{ + _bs->position += _nbits; + _bs->offset += _nbits; + if (_bs->offset < 32) { + _bs->accumulator |= (_bits << (32 - _bs->offset)); + } else { + _bs->offset -= 32; + _bs->mask = ((1 << (_nbits - _bs->offset)) - 1); + _bs->accumulator |= ((_bits >> _bs->offset) & _bs->mask); + BitStream_Flush(_bs); + _bs->accumulator = 0; + _bs->pointer += 4; + if (_bs->offset) { + _bs->mask = ((1 << _bs->offset) - 1); + _bs->accumulator |= ((_bits & _bs->mask) << (32 - _bs->offset)); + } + } +} + +static INLINE size_t BitStream_GetRemainingLength(wBitStream* _bs) +{ + return (_bs->length - _bs->position); +} WINPR_API void BitDump(const char* tag, UINT32 level, const BYTE* buffer, UINT32 length, UINT32 flags); WINPR_API UINT32 ReverseBits32(UINT32 bits, UINT32 nbits); -- 2.7.4