--- /dev/null
+/* $Id$
+
+This file is part of gldbg
+Copyright © 2010 Mikko Rasa, Mikkosoft Productions
+Distributed under the GPL
+*/
+
+#ifndef PACKET_H_
+#define PACKET_H_
+
+struct GlPacket;
+typedef struct GlPacket GlPacket;
+
+GlPacket *packet_begin(unsigned short);
+void packet_send_partial(GlPacket *, int);
+void packet_send(GlPacket *, int);
+
+// XXX Should use something with fixed sizes
+
+void packet_write_char(GlPacket *, char);
+void packet_write_short(GlPacket *, short);
+void packet_write_int(GlPacket *, int);
+void packet_write_long(GlPacket *, long);
+void packet_write_long_long(GlPacket *, long long);
+void packet_write_float(GlPacket *, float);
+void packet_write_double(GlPacket *, double);
+void packet_write_pointer(GlPacket *, const void *);
+void packet_write_data(GlPacket *, const void *, unsigned);
+void packet_write_string(GlPacket *, const char *);
+void packet_write_string_array(GlPacket *, const char **, unsigned);
+
+GlPacket *packet_receive_str(const char *, unsigned *);
+
+void packet_read_char(GlPacket *, char *);
+void packet_read_short(GlPacket *, short *);
+void packet_read_int(GlPacket *, int *);
+void packet_read_long(GlPacket *, long *);
+void packet_read_long_long(GlPacket *, long long *);
+void packet_read_float(GlPacket *, float *);
+void packet_read_double(GlPacket *, double *);
+typedef const void *pointer;
+void packet_read_pointer(GlPacket *, pointer *);
+void packet_read_data(GlPacket *, pointer *);
+typedef const char *string;
+void packet_read_string(GlPacket *, string *);
+void packet_read_string_array(GlPacket *, string **);
+
+#endif