]> git.tdb.fi Git - gldbg.git/blob - source/glprint.c
3c0755934331cb537e3c26eacde300c0bfbc907f
[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 "enums.h"
11 #include "glprint.h"
12
13 typedef struct sGlPrintData
14 {
15         char *buffer;
16         unsigned bufsize;
17 } GlPrintData;
18
19 static void init_print(GlDecoder *);
20 static void glprint_data_free(void *);
21
22 GlDecoder *glprint_new(char *buffer, unsigned bufsize)
23 {
24         GlDecoder *dec;
25         GlPrintData *gpd;
26
27         gpd = (GlPrintData *)malloc(sizeof(GlPrintData));
28         gpd->buffer = buffer;
29         gpd->bufsize = bufsize;
30         if(!gpd->buffer)
31         {
32                 if(!gpd->bufsize)
33                         gpd->bufsize = 1024;
34                 gpd->buffer = (char *)malloc(gpd->bufsize);
35                 dec = gldecoder_new(gpd, glprint_data_free);
36         }
37         else
38                 dec = gldecoder_new(gpd, free);
39
40         init_print(dec);
41 }
42
43 char *glprint_get_buffer(GlDecoder *dec)
44 {
45         return ((GlPrintData *)dec->user_data)->buffer;
46 }
47
48 static void glprint_data_free(void *data)
49 {
50         GlPrintData *gpd = (GlPrintData *)data;
51         free(gpd->buffer);
52         free(gpd);
53 }
54
55 #include "glprint.funcs"