|
|
|
|
|
#ifndef DLIB_BIT_STREAM_MULTi_C_ |
|
#define DLIB_BIT_STREAM_MULTi_C_ |
|
|
|
#include "bit_stream_multi_abstract.h" |
|
#include "../algs.h" |
|
#include "../assert.h" |
|
|
|
namespace dlib |
|
{ |
|
template < |
|
typename bit_stream_base |
|
> |
|
class bit_stream_multi_c : public bit_stream_base |
|
{ |
|
public: |
|
|
|
void multi_write ( |
|
unsigned long data, |
|
int num_to_write |
|
); |
|
|
|
int multi_read ( |
|
unsigned long& data, |
|
int num_to_read |
|
); |
|
|
|
}; |
|
|
|
template < |
|
typename bit_stream_base |
|
> |
|
inline void swap ( |
|
bit_stream_multi_c<bit_stream_base>& a, |
|
bit_stream_multi_c<bit_stream_base>& b |
|
) { a.swap(b); } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template < |
|
typename bit_stream_base |
|
> |
|
void bit_stream_multi_c<bit_stream_base>:: |
|
multi_write ( |
|
unsigned long data, |
|
int num_to_write |
|
) |
|
{ |
|
|
|
DLIB_CASSERT( (this->is_in_write_mode() == true) && (num_to_write >= 0 && num_to_write <=32), |
|
"\tvoid bit_stream::write" |
|
<< "\n\tthe bit stream bust be in write mode and" |
|
<< "\n\tnum_to_write must be between 0 and 32 inclusive" |
|
<< "\n\tnum_to_write == " << num_to_write |
|
<< "\n\tis_in_write_mode() == " << this->is_in_write_mode() |
|
<< "\n\tthis: " << this |
|
); |
|
|
|
|
|
bit_stream_base::multi_write(data,num_to_write); |
|
|
|
} |
|
|
|
|
|
|
|
template < |
|
typename bit_stream_base |
|
> |
|
int bit_stream_multi_c<bit_stream_base>:: |
|
multi_read ( |
|
unsigned long& data, |
|
int num_to_read |
|
) |
|
{ |
|
|
|
|
|
DLIB_CASSERT(( this->is_in_read_mode() == true && ( num_to_read >= 0 && num_to_read <=32 ) ), |
|
"\tvoid bit_stream::read" |
|
<< "\n\tyou can't read from a bit_stream that isn't in read mode and" |
|
<< "\n\tnum_to_read must be between 0 and 32 inclusive" |
|
<< "\n\tnum_to_read == " << num_to_read |
|
<< "\n\tis_in_read_mode() == " << this->is_in_read_mode() |
|
<< "\n\tthis: " << this |
|
); |
|
|
|
|
|
return bit_stream_base::multi_read(data,num_to_read); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
#endif |
|
|
|
|