/* license:BSD-3-Clause * copyright-holders:Aaron Giles *************************************************************************** bitstream.h Helper classes for reading/writing at the bit level. ***************************************************************************/ #pragma once #ifndef __BITSTREAM_H__ #define __BITSTREAM_H__ #include /*************************************************************************** * TYPE DEFINITIONS *************************************************************************** */ /* helper class for reading from a bit buffer */ struct bitstream { uint32_t buffer; /* current bit accumulator */ int bits; /* number of bits in the accumulator */ const uint8_t * read; /* read pointer */ uint32_t doffset; /* byte offset within the data */ uint32_t dlength; /* length of the data */ }; struct bitstream* create_bitstream(const void *src, uint32_t srclength); int bitstream_overflow(struct bitstream* bitstream); uint32_t bitstream_read_offset(struct bitstream* bitstream); uint32_t bitstream_read(struct bitstream* bitstream, int numbits); uint32_t bitstream_peek(struct bitstream* bitstream, int numbits); void bitstream_remove(struct bitstream* bitstream, int numbits); uint32_t bitstream_flush(struct bitstream* bitstream); #endif