about summary refs log tree commit diff
path: root/src/engine/e_packer.h
blob: 71b99ff70005bbb09ecac7afb43710a814661386 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/* copyright (c) 2007 magnus auvinen, see licence.txt for more info */

enum
{
	PACKER_BUFFER_SIZE=1024*2
};

typedef struct
{
	
	unsigned char buffer[PACKER_BUFFER_SIZE];
	unsigned char *current;
	unsigned char *end;
	int error;
} PACKER;

typedef struct
{
	const unsigned char *current;
	const unsigned char *start;
	const unsigned char *end;
	int error;
} UNPACKER;

void packer_reset(PACKER *p);
void packer_add_int(PACKER *p, int i);
void packer_add_string(PACKER *p, const char *str, int limit);
void packer_add_raw(PACKER *p, const unsigned char *data, int size);
int packer_size(PACKER *p);
const unsigned char *packer_data(PACKER *p);

void unpacker_reset(UNPACKER *p, const unsigned char *data, int size);
int unpacker_get_int(UNPACKER *p);
const char *unpacker_get_string(UNPACKER *p);
const unsigned char *unpacker_get_raw(UNPACKER *p, int size);