00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef __ZBitStream__
00026 #define __ZBitStream__ 1
00027 #include "zconfig.h"
00028
00029 #include "ZStream.h"
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 #pragma mark -
00043 #pragma mark * ZBitReaderBE
00044
00046
00047 class ZBitReaderBE
00048 {
00049 public:
00050 ZBitReaderBE();
00051 ~ZBitReaderBE();
00052
00053 bool ReadBits(const ZStreamR& iStream, size_t iCountBits, uint32& oResult);
00054 void ReadBits(const void* iSource, size_t iCountBits,
00055 uint32& oResult, size_t* oCountBytesConsumed);
00056
00057 private:
00058 uint8 fBuffer;
00059 size_t fAvailBits;
00060 };
00061
00062
00063 #pragma mark -
00064 #pragma mark * ZBitReaderLE
00065
00067
00068 class ZBitReaderLE
00069 {
00070 public:
00071 ZBitReaderLE();
00072 ~ZBitReaderLE();
00073
00074 bool ReadBits(const ZStreamR& iStream, size_t iCountBits, uint32& oResult);
00075 void ReadBits(const void* iSource, size_t iCountBits,
00076 uint32& oResult, size_t* oCountBytesConsumed);
00077
00078 private:
00079 uint8 fBuffer;
00080 size_t fAvailBits;
00081 };
00082
00083
00084 #pragma mark -
00085 #pragma mark * ZBitWriterBE
00086
00088
00089 class ZBitWriterBE
00090 {
00091 public:
00092 ZBitWriterBE();
00093 ~ZBitWriterBE();
00094
00095 bool WriteBits(const ZStreamW& iStream, size_t iCountBits, uint32 iBits);
00096 void WriteBits(void* iDest, size_t iCountBits, uint32 iBits, size_t* oCountBytesWritten);
00097
00098 void Finish(const ZStreamW& iStream);
00099 void Finish(void* iDest, size_t* oCountBytesWritten);
00100
00101 private:
00102 uint8 fBuffer;
00103 size_t fAvailBits;
00104 };
00105
00106
00107 #pragma mark -
00108 #pragma mark * ZBitWriterLE
00109
00111
00112 class ZBitWriterLE
00113 {
00114 public:
00115 ZBitWriterLE();
00116 ~ZBitWriterLE();
00117
00118 bool WriteBits(const ZStreamW& iStream, size_t iCountBits, uint32 iBits);
00119 void WriteBits(void* iDest, size_t iCountBits, uint32 iBits, size_t* oCountBytesWritten);
00120
00121 void Finish(const ZStreamW& iStream);
00122 void Finish(void* iDest, size_t* oCountBytesWritten);
00123
00124 private:
00125 uint8 fBuffer;
00126 size_t fAvailBits;
00127 };
00128
00129 #endif // __ZBitStream__