]> git.tdb.fi Git - gldbg.git/blob - source/tracer.cpp
Bugfixes
[gldbg.git] / source / tracer.cpp
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 <msp/io/print.h>
9 #include "glprint.h"
10 #include "tracer.h"
11
12 using namespace Msp;
13
14 Tracer::Tracer():
15         glprint(new GlPrint(0, 16384)),
16         out(0),
17         delete_out(true),
18         enabled(true)
19 { }
20
21 Tracer::~Tracer()
22 {
23         delete glprint;
24         if(delete_out)
25                 delete out;
26 }
27
28 void Tracer::set_output(IO::Base *o)
29 {
30         if(delete_out)
31                 delete out;
32         out = o;
33         delete_out = true;
34 }
35
36 void Tracer::set_output(IO::Base &o)
37 {
38         set_output(&o);
39         delete_out = false;
40 }
41
42 void Tracer::enable()
43 {
44         if(!out)
45                 throw InvalidState("Output is not set");
46         enabled = true;
47 }
48
49 void Tracer::disable()
50 {
51         enabled = false;
52 }
53
54 int Tracer::decode(const char *data, unsigned len)
55 {
56         if(!enabled || !out)
57                 return 0;
58         int ret = glprint->decode(data, len);
59         if(ret>=0)
60                 IO::print(*out, "%s\n", glprint->get_buffer());
61         return ret;
62 }