]> git.tdb.fi Git - gldbg.git/blob - source/glprint.c
901949dcf69bbe9b1722f8b03ada362da4ae5df2
[gldbg.git] / source / glprint.c
1 /* $Id$
2
3 This file is part of gldbg
4 Copyright © 2009  Mikko Rasa, Mikkosoft Productions
5 Distributed under the GPL
6 */
7
8 #include <stdlib.h>
9 #include <stdio.h>
10 #include "glprint.h"
11
12 typedef struct sGlPrintData
13 {
14         char *buffer;
15         unsigned bufsize;
16 } GlPrintData;
17
18 static void init_print(GlDecoder *);
19 static void glprint_data_free(void *);
20
21 GlDecoder *glprint_new(char *buffer, unsigned bufsize)
22 {
23         GlDecoder *dec;
24         GlPrintData *gpd;
25
26         gpd = (GlPrintData *)malloc(sizeof(GlPrintData));
27         gpd->buffer = buffer;
28         gpd->bufsize = bufsize;
29         if(!gpd->buffer)
30         {
31                 if(!gpd->bufsize)
32                         gpd->bufsize = 1024;
33                 gpd->buffer = (char *)malloc(gpd->bufsize);
34                 dec = gldecoder_new(gpd, glprint_data_free);
35         }
36         else
37                 dec = gldecoder_new(gpd, free);
38
39         init_print(dec);
40 }
41
42 char *glprint_get_buffer(GlDecoder *dec)
43 {
44         return ((GlPrintData *)dec->user_data)->buffer;
45 }
46
47 static void glprint_data_free(void *data)
48 {
49         GlPrintData *gpd = (GlPrintData *)data;
50         free(gpd->buffer);
51         free(gpd);
52 }
53
54 #include "glprint.funcs"