+ Ok(res)
+ }
+
+ pub fn read_s(&mut self, nbits: u8) -> BitReaderResult<i32> {
+ if nbits == 0 || nbits > 32 { return Err(TooManyBitsRequested) }
+ if self.bits < nbits {
+ if let Err(err) = self.refill() { return Err(err) }
+ if self.bits < nbits { return Err(BitstreamEnd) }
+ }
+ let res = self.read_cache_s(nbits);
+ self.skip_cache(nbits);
+ Ok(res)
+ }
+
+ pub fn read_bool(&mut self) -> BitReaderResult<bool> {
+ if self.bits < 1 {
+ if let Err(err) = self.refill() { return Err(err) }
+ if self.bits < 1 { return Err(BitstreamEnd) }
+ }
+ let res = self.read_cache(1);
+ self.skip_cache(1);
+ Ok(res == 1)