All pastes #30916 Raw Edit

C++ Packet

public text v1 · immutable
#30916 ·published 2005-11-24 15:12 UTC
rendered paste body
#include "stdafx.h"

#include <string>

class BasePacket
{
private:
	char *_buffer;
	int _size;
	int offset;
	
public:
	BasePacket(char *buffer,int size):_buffer(buffer),_size(size),offset(0)
	{
	}

	void run() {}

	char readByte()
	{
		return _buffer[offset++];
	}

	short readShort()
	{
		short value;
		memcpy(&value,_buffer[offset],sizeof(short));
		offset += sizeof(short);
		return value;
	}

	int readInt()
	{
		int value;
		memcpy(&value,_buffer[offset],sizeof(int));
		offset += sizeof(int);
		return value;
	}

	long readLong()
	{
		long value;
		memcpy(&value,_buffer[offset],sizeof(long));
		offset += sizeof(long);
		return value;
	}

	long readFloat()
	{
		float value;
		memcpy(&value,_buffer[offset],sizeof(float));
		offset += sizeof(float);
		return value;
	}

	long readDouble()
	{
		double value;
		memcpy(&value,_buffer[offset],sizeof(double));
		offset += sizeof(double);
		return value;
	}

	string &readString()
	{
		string result;

		while (_buffer[offset] != 0)
		{
			result.append(_buffer[offset++]);
		}

	}

	void getBuffer(char *buffer,int size)
	{
		memcpy(buffer,_buffer,size);
	}

};