mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
41 lines
1.0 KiB
C
41 lines
1.0 KiB
C
|
#ifndef BITBUF_H
|
||
|
#define BITBUF_H
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
BITBUFERROR_VALUE_OUT_OF_RANGE = 0, // Tried to write a value with too few bits.
|
||
|
BITBUFERROR_BUFFER_OVERRUN, // Was about to overrun a buffer.
|
||
|
|
||
|
BITBUFERROR_NUM_ERRORS
|
||
|
} BitBufErrorType;
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Used for serialization
|
||
|
//-----------------------------------------------------------------------------
|
||
|
struct bf_write
|
||
|
{
|
||
|
public:
|
||
|
// How many bytes are filled in?
|
||
|
int GetNumBytesWritten() const;
|
||
|
int GetNumBitsWritten() const;
|
||
|
int GetMaxNumBits() const;
|
||
|
int GetNumBitsLeft() const;
|
||
|
int GetNumBytesLeft() const;
|
||
|
unsigned char* GetData();
|
||
|
const unsigned char* GetData() const;
|
||
|
|
||
|
// Has the buffer overflowed?
|
||
|
bool CheckForOverflow(int nBits);
|
||
|
bool IsOverflowed() const;
|
||
|
void SetOverflowFlag();
|
||
|
private:
|
||
|
unsigned __int8* m_pData;
|
||
|
int m_nDataBytes;
|
||
|
int m_nDataBits;
|
||
|
int m_iCurBit;
|
||
|
bool m_bOverflow;
|
||
|
bool m_bAssertOnOverflow;
|
||
|
const char* m_pDebugName;
|
||
|
};
|
||
|
#endif // BITBUF_H
|