diff options
author | Jay Berkenbilt <ejb@ql.org> | 2008-04-29 14:55:25 +0200 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2008-04-29 14:55:25 +0200 |
commit | 9a0b88bf7777c153dc46ace22db74ef24d51583a (patch) | |
tree | f567ac1cf2bf5071a611eb49323a935b6ac938ff /libqpdf/BitStream.cc | |
download | qpdf-9a0b88bf7777c153dc46ace22db74ef24d51583a.tar.zst |
update release date to actual daterelease-qpdf-2.0
git-svn-id: svn+q:///qpdf/trunk@599 71b93d88-0707-0410-a8cf-f5a4172ac649
Diffstat (limited to 'libqpdf/BitStream.cc')
-rw-r--r-- | libqpdf/BitStream.cc | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/libqpdf/BitStream.cc b/libqpdf/BitStream.cc new file mode 100644 index 00000000..c6fda4e6 --- /dev/null +++ b/libqpdf/BitStream.cc @@ -0,0 +1,45 @@ + + +#include <qpdf/BitStream.hh> + +// See comments in bits.cc +#define BITS_READ 1 +#include "bits.icc" + +BitStream::BitStream(unsigned char const* p, int nbytes) : + start(p), + nbytes(nbytes) +{ + reset(); +} + +void +BitStream::reset() +{ + p = start; + bit_offset = 7; + bits_available = 8 * nbytes; +} + +unsigned long +BitStream::getBits(int nbits) +{ + return read_bits(this->p, this->bit_offset, + this->bits_available, nbits); +} + +void +BitStream::skipToNextByte() +{ + if (bit_offset != 7) + { + unsigned int bits_to_skip = bit_offset + 1; + if (bits_available < bits_to_skip) + { + throw QEXC::Internal("overflow skipping to next byte in bitstream"); + } + bit_offset = 7; + ++p; + bits_available -= bits_to_skip; + } +} |