aboutsummaryrefslogtreecommitdiff
path: root/src/object.cpp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/object.cpp55
1 files changed, 55 insertions, 0 deletions
diff --git a/src/object.cpp b/src/object.cpp
new file mode 100644
index 0000000..3d7765e
--- /dev/null
+++ b/src/object.cpp
@@ -0,0 +1,55 @@
1#include "gats/object.h"
2
3#include "gats/integer.h"
4#include "gats/float.h"
5#include "gats/boolean.h"
6#include "gats/string.h"
7#include "gats/list.h"
8#include "gats/dictionary.h"
9
10#include <bu/stream.h>
11
12Gats::Object::Object()
13{
14}
15
16Gats::Object::~Object()
17{
18}
19
20Gats::Object *Gats::Object::read( Bu::Stream &rIn )
21{
22 char buf;
23 rIn.read( &buf, 1 );
24 Object *pObj = NULL;
25 switch( buf )
26 {
27 case 'i':
28 pObj = new Gats::Integer();
29 break;
30
31 case 's':
32 pObj = new Gats::String();
33 break;
34
35 case '0':
36 case '1':
37 pObj = new Gats::Boolean();
38 break;
39
40 case 'l':
41 pObj = new Gats::List();
42 break;
43
44 case 'e':
45 return NULL;
46
47 default:
48 throw Bu::ExceptionBase("Invalid Gats type discovered: %c.", buf );
49 }
50
51 pObj->read( rIn, buf );
52
53 return pObj;
54}
55