bit入力 using C++

#ifndef __READBITSTREAM_H_
#define __READBITSTREAM_H_

#include <memory.h>
typedef unsigned char BYTE;
typedef unsigned int WORD;

class CReadBitStream
{
private:

protected:
	BYTE *mbpRead;			// 読み出しアドレス
	BYTE *mbpEndOfBuf;		// Bufferの終了アドレス
	BYTE mMask;				// bit maskであると同時に現在の読み出しビット位置 (MSB = 7, LSB = 0)
	bool mReadable;			// 1: 読み出し可、 0: 読み出し不可
	void IncBuf(void);		// 読み出しアドレスのインクリメントとアクセス違反のチェック
public:
	CReadBitStream(void);
	CReadBitStream(BYTE *bpBuf, int size);	// 唯一のconstructor
	virtual ~CReadBitStream(void);
	BYTE GetByte(void);		// 1 byte読み出し
	WORD GetWord(void);		// 1 word読み出し
	void CopyBytes(BYTE* bpDest, int n);		// n bytes読みだしてbpDestのアドレス以降にコピーする
	void SkipByte(int n);					// n bytes読み飛ばし
	int GetBit(void);						// 1 bit読みだして返す
	int GetBits(int numOfBits);				// numOfBits数のビットを読みだして返す
	BYTE* GetNextAddress(void);				// 次の読み出しアドレスを戻す
	int ResetBuffer(BYTE* bpBuf, int size);	// bufferを変更する
};

#endif __READBITSTREAM_H_

以前といっても、2010年12月に書いたプログラム探してきました。ビットストリームを扱うために、ファイルから読む込みためのクラスです。