--- /dev/null
+/* $Id$
+
+This file is part of gldbg
+Copyright © 2009 Mikko Rasa, Mikkosoft Productions
+Distributed under the GPL
+*/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include "glprint.h"
+
+typedef struct sGlPrintData
+{
+ char *buffer;
+ unsigned bufsize;
+} GlPrintData;
+
+static void init_print(GlDecoder *);
+static void glprint_data_free(void *);
+
+GlDecoder *glprint_new(char *buffer, unsigned bufsize)
+{
+ GlDecoder *dec;
+ GlPrintData *gpd;
+
+ gpd = (GlPrintData *)malloc(sizeof(GlPrintData));
+ gpd->buffer = buffer;
+ gpd->bufsize = bufsize;
+ if(!gpd->buffer)
+ {
+ if(!gpd->bufsize)
+ gpd->bufsize = 1024;
+ gpd->buffer = (char *)malloc(gpd->bufsize);
+ dec = gldecoder_new(gpd, glprint_data_free);
+ }
+ else
+ dec = gldecoder_new(gpd, free);
+
+ init_print(dec);
+}
+
+char *glprint_get_buffer(GlDecoder *dec)
+{
+ return ((GlPrintData *)dec->user_data)->buffer;
+}
+
+static void glprint_data_free(void *data)
+{
+ GlPrintData *gpd = (GlPrintData *)data;
+ free(gpd->buffer);
+ free(gpd);
+}
+
+#include "glprint.funcs"