#pragma once

class BitStream3
{
public:
	BitStream3();
	BitStream3(int bitCount);
	~BitStream3();

	void Create(int bitCount);
	void Attach(void * buf, int bitCount);
	int Write(const unsigned char * buf, int bitCount);
	int WriteUInt16(unsigned short val);
	int Read(unsigned char * buf, int bitCount);
	int ReadUInt16(unsigned short * val);
	unsigned char * GetBuffer();

protected:
	bool ownMemory;
	unsigned char * buffer;
	int bufSize, bitSize;
	int currentBit, currentByte;
	static const unsigned char hiMask[];
};
