Lines Matching refs:bitC
56 MEM_STATIC size_t BIT_initCStream(BIT_CStream_t* bitC, void* dstBuffer, size_t dstCapacity);
57 MEM_STATIC void BIT_addBits(BIT_CStream_t* bitC, size_t value, unsigned nbBits);
58 MEM_STATIC void BIT_flushBits(BIT_CStream_t* bitC);
59 MEM_STATIC size_t BIT_closeCStream(BIT_CStream_t* bitC);
116 MEM_STATIC void BIT_addBitsFast(BIT_CStream_t* bitC, size_t value, unsigned nbBits);
119 MEM_STATIC void BIT_flushBitsFast(BIT_CStream_t* bitC);
169 MEM_STATIC size_t BIT_initCStream(BIT_CStream_t* bitC,
172 bitC->bitContainer = 0;
173 bitC->bitPos = 0;
174 bitC->startPtr = (char*)startPtr;
175 bitC->ptr = bitC->startPtr;
176 bitC->endPtr = bitC->startPtr + dstCapacity - sizeof(bitC->bitContainer);
177 if (dstCapacity <= sizeof(bitC->bitContainer)) return ERROR(dstSize_tooSmall);
182 * can add up to 31 bits into `bitC`.
184 MEM_STATIC void BIT_addBits(BIT_CStream_t* bitC,
189 assert(nbBits + bitC->bitPos < sizeof(bitC->bitContainer) * 8);
190 bitC->bitContainer |= (value & BIT_mask[nbBits]) << bitC->bitPos;
191 bitC->bitPos += nbBits;
197 MEM_STATIC void BIT_addBitsFast(BIT_CStream_t* bitC,
201 assert(nbBits + bitC->bitPos < sizeof(bitC->bitContainer) * 8);
202 bitC->bitContainer |= value << bitC->bitPos;
203 bitC->bitPos += nbBits;
209 MEM_STATIC void BIT_flushBitsFast(BIT_CStream_t* bitC)
211 size_t const nbBytes = bitC->bitPos >> 3;
212 assert(bitC->bitPos < sizeof(bitC->bitContainer) * 8);
213 assert(bitC->ptr <= bitC->endPtr);
214 MEM_writeLEST(bitC->ptr, bitC->bitContainer);
215 bitC->ptr += nbBytes;
216 bitC->bitPos &= 7;
217 bitC->bitContainer >>= nbBytes*8;
225 MEM_STATIC void BIT_flushBits(BIT_CStream_t* bitC)
227 size_t const nbBytes = bitC->bitPos >> 3;
228 assert(bitC->bitPos < sizeof(bitC->bitContainer) * 8);
229 assert(bitC->ptr <= bitC->endPtr);
230 MEM_writeLEST(bitC->ptr, bitC->bitContainer);
231 bitC->ptr += nbBytes;
232 if (bitC->ptr > bitC->endPtr) bitC->ptr = bitC->endPtr;
233 bitC->bitPos &= 7;
234 bitC->bitContainer >>= nbBytes*8;
240 MEM_STATIC size_t BIT_closeCStream(BIT_CStream_t* bitC)
242 BIT_addBitsFast(bitC, 1, 1); /* endMark */
243 BIT_flushBits(bitC);
244 if (bitC->ptr >= bitC->endPtr) return 0; /* overflow detected */
245 return (bitC->ptr - bitC->startPtr) + (bitC->bitPos > 0);