MCPcopy Create free account
hub / github.com/DFHack/dfhack / ensureBits32

Function ensureBits32

depends/lodepng/lodepng.cpp:547–565  ·  view source on GitHub ↗

See ensureBits documentation above. This one ensures up to 32 bits */

Source from the content-addressed store, hash-verified

545
546/*See ensureBits documentation above. This one ensures up to 32 bits */
547static LODEPNG_INLINE unsigned ensureBits32(LodePNGBitReader* reader, size_t nbits) {
548 size_t start = reader->bp >> 3u;
549 size_t size = reader->size;
550 if(start + 4u < size) {
551 reader->buffer = (unsigned)reader->data[start + 0] | ((unsigned)reader->data[start + 1] << 8u) |
552 ((unsigned)reader->data[start + 2] << 16u) | ((unsigned)reader->data[start + 3] << 24u);
553 reader->buffer >>= (reader->bp & 7u);
554 reader->buffer |= (((unsigned)reader->data[start + 4] << 24u) << (8u - (reader->bp & 7u)));
555 return 1;
556 } else {
557 reader->buffer = 0;
558 if(start + 0u < size) reader->buffer |= reader->data[start + 0];
559 if(start + 1u < size) reader->buffer |= ((unsigned)reader->data[start + 1] << 8u);
560 if(start + 2u < size) reader->buffer |= ((unsigned)reader->data[start + 2] << 16u);
561 if(start + 3u < size) reader->buffer |= ((unsigned)reader->data[start + 3] << 24u);
562 reader->buffer >>= (reader->bp & 7u);
563 return reader->bp + nbits <= reader->bitsize;
564 }
565}
566
567/* Get bits without advancing the bit pointer. Must have enough bits available with ensureBits. Max nbits is 31. */
568static unsigned peekBits(LodePNGBitReader* reader, size_t nbits) {

Callers 2

lode_png_test_bitreaderFunction · 0.85
inflateHuffmanBlockFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected