⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bufreader.h

📁 liu7788414
💻 H
字号:
/*
* ============================================================================
*  Name     : CBufReader from BufReader.h
*  Part of  : Game
*  Created  : 2003-06-16 by Qiu Wei Min
*  Description:
*  Version  :
*  Copyright: Gameloft S.A.
* ============================================================================
*/

#ifndef BUFREADER_H
#define BUFREADER_H
//#include "engine.h"
#include "simplememory.h"
// INCLUDES

// CONSTANTS

// CLASS DECLARATION

class CBufReader
{
public:

	CBufReader()
	{
		m_pData = NULL;
		m_pCur = NULL;
		m_length = -1;
	}

	CBufReader(void* pData, int len)
	{
		SYS_ASSERT(pData != NULL);
		m_pData = (signed char*)pData;
		m_pCur = m_pData;
		m_length = len;
	}

	void CBufReader_init( void * pData, int len)
	{
		SYS_ASSERT(pData != NULL);
		m_pData =(signed char *)pData;
		m_pCur = m_pData;
		m_length = len;
	}


	signed char ReadChar(){
		SYS_ASSERT(m_pCur < m_pData + m_length);
		return *m_pCur++;
	}


	unsigned char ReadUChar(){
		SYS_ASSERT(m_pCur < m_pData + m_length);
		return (unsigned char)*m_pCur++;
	}

	unsigned char ReadString(char *des)
	{		
		int count = (unsigned char)*m_pCur++;
		int i;
		for (i=0; i<count; i++)
			des[i] = *m_pCur++;
		des[i] = 0;
		return count;
	}

	unsigned short ReadUShort(){
		unsigned short r;
		SYS_ASSERT(m_pCur + 2 <= m_pData + m_length);
		r = (unsigned short)(((m_pCur[1]&0xff)<<8)|(m_pCur[0]&0xff));
		m_pCur += 2;
		return r;
	}


	short ReadShort(){
		short r = 0;
		SYS_ASSERT(m_pCur + 2 <= m_pData + m_length);
		r = (short)(((m_pCur[1]&0xff)<<8)|(m_pCur[0]&0xff));
		m_pCur += 2;
		return r;
	}
	unsigned short ReadUShortReverse(){
		unsigned short r = (unsigned short)(  ((m_pCur[0]&0xff)<<8) | (m_pCur[1]&0xff) );
		m_pCur += 2;
		return r;
	}


	short ReadShortReverse(){
		short r;
		SYS_ASSERT(m_pCur + 2 <= m_pData + m_length);
		r = (short)(((m_pCur[0]&0xff)<<8)|(m_pCur[1]&0xff));
		m_pCur += 2;
		return r;
	}


	int ReadInt(){
		int r;
		SYS_ASSERT(m_pCur + 4 <= m_pData + m_length);
		r = (int)(((m_pCur[3]&0xff)<<24)|((m_pCur[2]&0xff)<<16)|((m_pCur[1]&0xff)<<8)|(m_pCur[0]&0xff));
		m_pCur += 4;
		return r;
	}


	void ReadBlock(void *buf, int sz){
		//ASSERT(m_pCur + sz <= m_pData + m_length);
		CSimpleMemory::Copy(buf, m_pCur, sz);
		m_pCur += sz;
	}


	void Seek(int pos){
		m_pCur = m_pData + pos;
	}

	signed char *GetCurPointer(){
		return m_pCur;
	}
protected:

	signed char* m_pData;

	signed char* m_pCur;

	int m_length;
};



#endif

// End of File

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -