Lines Matching refs:bitContainer
49 size_t bitContainer;
63 * `dstCapacity` must be >= sizeof(bitD->bitContainer), otherwise @return will be an error code.
83 size_t bitContainer;
107 * A reload guarantee a minimum of ((8*sizeof(bitD->bitContainer))-7) bits when its result is BIT_DStream_unfinished.
172 bitC->bitContainer = 0;
176 bitC->endPtr = bitC->startPtr + dstCapacity - sizeof(bitC->bitContainer);
177 if (dstCapacity <= sizeof(bitC->bitContainer)) return ERROR(dstSize_tooSmall);
189 assert(nbBits + bitC->bitPos < sizeof(bitC->bitContainer) * 8);
190 bitC->bitContainer |= (value & BIT_mask[nbBits]) << bitC->bitPos;
201 assert(nbBits + bitC->bitPos < sizeof(bitC->bitContainer) * 8);
202 bitC->bitContainer |= value << bitC->bitPos;
207 * assumption : bitContainer has not overflowed
212 assert(bitC->bitPos < sizeof(bitC->bitContainer) * 8);
214 MEM_writeLEST(bitC->ptr, bitC->bitContainer);
217 bitC->bitContainer >>= nbBytes*8;
221 * assumption : bitContainer has not overflowed
228 assert(bitC->bitPos < sizeof(bitC->bitContainer) * 8);
230 MEM_writeLEST(bitC->ptr, bitC->bitContainer);
234 bitC->bitContainer >>= nbBytes*8;
263 bitD->limitPtr = bitD->start + sizeof(bitD->bitContainer);
265 if (srcSize >= sizeof(bitD->bitContainer)) { /* normal case */
266 bitD->ptr = (const char*)srcBuffer + srcSize - sizeof(bitD->bitContainer);
267 bitD->bitContainer = MEM_readLEST(bitD->ptr);
273 bitD->bitContainer = *(const BYTE*)(bitD->start);
276 case 7: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[6]) << (sizeof(bitD->bitContainer)*8 - 16);
279 case 6: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[5]) << (sizeof(bitD->bitContainer)*8 - 24);
282 case 5: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[4]) << (sizeof(bitD->bitContainer)*8 - 32);
285 case 4: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[3]) << 24;
288 case 3: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[2]) << 16;
291 case 2: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[1]) << 8;
300 bitD->bitsConsumed += (U32)(sizeof(bitD->bitContainer) - srcSize)*8;
306 MEM_STATIC FORCE_INLINE_ATTR size_t BIT_getUpperBits(size_t bitContainer, U32 const start)
308 return bitContainer >> start;
311 MEM_STATIC FORCE_INLINE_ATTR size_t BIT_getMiddleBits(size_t bitContainer, U32 const start, U32 const nbBits)
313 U32 const regMask = sizeof(bitContainer)*8 - 1;
322 return (bitContainer >> (start & regMask)) & ((((U64)1) << nbBits) - 1);
324 return (bitContainer >> (start & regMask)) & BIT_mask[nbBits];
328 MEM_STATIC FORCE_INLINE_ATTR size_t BIT_getLowerBits(size_t bitContainer, U32 const nbBits)
331 return bitContainer & BIT_mask[nbBits];
344 /* if bitD->bitsConsumed + nbBits > sizeof(bitD->bitContainer)*8,
346 return BIT_getMiddleBits(bitD->bitContainer, (sizeof(bitD->bitContainer)*8) - bitD->bitsConsumed - nbBits, nbBits);
349 U32 const regMask = sizeof(bitD->bitContainer)*8 - 1;
350 return ((bitD->bitContainer << (bitD->bitsConsumed & regMask)) >> 1) >> ((regMask-nbBits) & regMask);
358 U32 const regMask = sizeof(bitD->bitContainer)*8 - 1;
360 return (bitD->bitContainer << (bitD->bitsConsumed & regMask)) >> (((regMask+1)-nbBits) & regMask);
391 * 1. bitsConsumed <= sizeof(bitD->bitContainer)*8 must hold!
399 assert(bitD->bitsConsumed <= sizeof(bitD->bitContainer)*8);
402 bitD->bitContainer = MEM_readLEST(bitD->ptr);
413 if (bitD->bitsConsumed > (sizeof(bitD->bitContainer)*8)) /* overflow detected, like end of stream */
420 if (bitD->bitsConsumed < sizeof(bitD->bitContainer)*8) return BIT_DStream_endOfBuffer;
432 bitD->bitContainer = MEM_readLEST(bitD->ptr); /* reminder : srcSize > sizeof(bitD->bitContainer), otherwise bitD->ptr == bitD->start */
442 return ((DStream->ptr == DStream->start) && (DStream->bitsConsumed == sizeof(DStream->bitContainer)*8));