about summary refs log tree commit diff
path: root/src/engine/e_packer.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/e_packer.h')
-rw-r--r--src/engine/e_packer.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/engine/e_packer.h b/src/engine/e_packer.h
new file mode 100644
index 00000000..71b99ff7
--- /dev/null
+++ b/src/engine/e_packer.h
@@ -0,0 +1,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);