aboutsummaryrefslogtreecommitdiff
path: root/deps/libchdr/bitstream.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/libchdr/bitstream.h')
-rw-r--r--deps/libchdr/bitstream.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/deps/libchdr/bitstream.h b/deps/libchdr/bitstream.h
new file mode 100644
index 0000000..9250d33
--- /dev/null
+++ b/deps/libchdr/bitstream.h
@@ -0,0 +1,42 @@
+// 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 <stdint.h>
+
+//**************************************************************************
+// 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