summaryrefslogtreecommitdiffstats
path: root/ml/dlib/dlib/bit_stream/bit_stream_multi_abstract.h
diff options
context:
space:
mode:
Diffstat (limited to 'ml/dlib/dlib/bit_stream/bit_stream_multi_abstract.h')
-rw-r--r--ml/dlib/dlib/bit_stream/bit_stream_multi_abstract.h77
1 files changed, 77 insertions, 0 deletions
diff --git a/ml/dlib/dlib/bit_stream/bit_stream_multi_abstract.h b/ml/dlib/dlib/bit_stream/bit_stream_multi_abstract.h
new file mode 100644
index 000000000..061af94f4
--- /dev/null
+++ b/ml/dlib/dlib/bit_stream/bit_stream_multi_abstract.h
@@ -0,0 +1,77 @@
+// Copyright (C) 2003 Davis E. King (davis@dlib.net)
+// License: Boost Software License See LICENSE.txt for the full license.
+#undef DLIB_BIT_STREAM_MULTi_ABSTRACT_
+#ifdef DLIB_BIT_STREAM_MULTi_ABSTRACT_
+
+#include "bit_stream_kernel_abstract.h"
+
+namespace dlib
+{
+ template <
+ typename bit_stream_base
+ >
+ class bit_stream_multi : public bit_stream_base
+ {
+
+ /*!
+ REQUIREMENTS ON BIT_STREAM_BASE
+ it is an implementation of bit_stream/bit_stream_kernel_abstract.h
+
+
+ WHAT THIS EXTENSION DOES FOR BIT_STREAM
+ this gives a bit_stream object the ability to read/write multible bits
+ at a time
+ !*/
+
+
+ public:
+
+ void multi_write (
+ unsigned long data,
+ int num_to_write
+ );
+ /*!
+ requires
+ - is_in_write_mode() == true
+ - 0 <= num_to_write <= 32
+ ensures
+ - num_to_write low order bits from data will be written to the ostream
+ - object associated with *this
+ example: if data is 10010 then the bits will be written in the
+ order 1,0,0,1,0
+ !*/
+
+
+ int multi_read (
+ unsigned long& data,
+ int num_to_read
+ );
+ /*!
+ requires
+ - is_in_read_mode() == true
+ - 0 <= num_to_read <= 32
+ ensures
+ - tries to read num_to_read bits into the low order end of #data
+ example: if the incoming bits were 10010 then data would end
+ up with 10010 as its low order bits
+ - all of the bits in #data not filled in by multi_read() are zero
+ - returns the number of bits actually read into #data
+ !*/
+
+ };
+
+ template <
+ typename bit_stream_base
+ >
+ inline void swap (
+ bit_stream_multi<bit_stream_base>& a,
+ bit_stream_multi<bit_stream_base>& b
+ ) { a.swap(b); }
+ /*!
+ provides a global swap function
+ !*/
+
+}
+
+#endif // DLIB_BIT_STREAM_MULTi_ABSTRACT_
+