fixed warnings in squirrel
[supertux.git] / src / squirrel / squirrel / sqstate.h
1 /*      see copyright notice in squirrel.h */
2 #ifndef _SQSTATE_H_
3 #define _SQSTATE_H_
4
5 #include "squtils.h"
6 #include "sqobject.h"
7 struct SQString;
8 struct SQTable;
9 //max number of character for a printed number
10 #define NUMBER_MAX_CHAR 50
11
12 struct StringTable
13 {
14         StringTable();
15         ~StringTable();
16         //return a string obj if exists
17         //so when there is a table query, if the string doesn't exists in the global state
18         //it cannot be in a table so the result will be always null
19         //SQString *get(const SQChar *news);
20         SQString *Add(const SQChar *,int len);
21         void Remove(SQString *);
22 private:
23         void Resize(int size);
24         void AllocNodes(int size);
25         SQString **_strings;
26         unsigned int _numofslots;
27         unsigned int _slotused;
28 };
29
30 #define ADD_STRING(ss,str,len) ss->_stringtable->Add(str,len)
31 #define REMOVE_STRING(ss,bstr) ss->_stringtable->Remove(bstr)
32
33 struct SQObjectPtr;
34
35 struct SQSharedState
36 {
37         SQSharedState();
38         ~SQSharedState();
39         void Init();
40 public:
41         SQChar* GetScratchPad(int size);
42         SQInteger GetMetaMethodIdxByName(const SQObjectPtr &name);
43 #ifndef NO_GARBAGE_COLLECTOR
44         int CollectGarbage(SQVM *vm); 
45         static void MarkObject(SQObjectPtr &o,SQCollectable **chain);
46 #endif
47         SQObjectPtrVec *_metamethods;
48         SQObjectPtr _metamethodsmap;
49         SQObjectPtrVec *_systemstrings;
50         SQObjectPtrVec *_types;
51         StringTable *_stringtable;
52         SQObjectPtr _refs_table;
53         SQObjectPtr _registry;
54         SQObjectPtr _constructoridx;
55 #ifndef NO_GARBAGE_COLLECTOR
56         SQCollectable *_gc_chain;
57 #endif
58         SQObjectPtr _root_vm;
59         SQObjectPtr _table_default_delegate;
60         static SQRegFunction _table_default_delegate_funcz[];
61         SQObjectPtr _array_default_delegate;
62         static SQRegFunction _array_default_delegate_funcz[];
63         SQObjectPtr _string_default_delegate;
64         static SQRegFunction _string_default_delegate_funcz[];
65         SQObjectPtr _number_default_delegate;
66         static SQRegFunction _number_default_delegate_funcz[];
67         SQObjectPtr _generator_default_delegate;
68         static SQRegFunction _generator_default_delegate_funcz[];
69         SQObjectPtr _closure_default_delegate;
70         static SQRegFunction _closure_default_delegate_funcz[];
71         SQObjectPtr _thread_default_delegate;
72         static SQRegFunction _thread_default_delegate_funcz[];
73         SQObjectPtr _class_default_delegate;
74         static SQRegFunction _class_default_delegate_funcz[];
75         SQObjectPtr _instance_default_delegate;
76         static SQRegFunction _instance_default_delegate_funcz[];
77         
78         SQCOMPILERERROR _compilererrorhandler;
79         SQPRINTFUNCTION _printfunc;
80         bool _debuginfo;
81 private:
82         SQChar *_scratchpad;
83         int _scratchpadsize;
84 };
85
86 #define _sp(s) (_sharedstate->GetScratchPad(s))
87 #define _spval (_sharedstate->GetScratchPad(-1))
88
89 #define _table_ddel             _table(_sharedstate->_table_default_delegate) 
90 #define _array_ddel             _table(_sharedstate->_array_default_delegate) 
91 #define _string_ddel    _table(_sharedstate->_string_default_delegate) 
92 #define _number_ddel    _table(_sharedstate->_number_default_delegate) 
93 #define _generator_ddel _table(_sharedstate->_generator_default_delegate) 
94 #define _closure_ddel   _table(_sharedstate->_closure_default_delegate) 
95 #define _thread_ddel    _table(_sharedstate->_thread_default_delegate) 
96 #define _class_ddel             _table(_sharedstate->_class_default_delegate) 
97 #define _instance_ddel  _table(_sharedstate->_instance_default_delegate) 
98
99 #ifdef SQUNICODE //rsl REAL STRING LEN
100 #define rsl(l) ((l)<<1)
101 #else
102 #define rsl(l) (l)
103 #endif
104
105 extern SQObjectPtr _null_;
106 extern SQObjectPtr _true_;
107 extern SQObjectPtr _false_;
108 extern SQObjectPtr _one_;
109 extern SQObjectPtr _minusone_;
110
111 bool CompileTypemask(SQIntVec &res,const SQChar *typemask);
112
113 void *sq_vm_malloc(unsigned int size);
114 void *sq_vm_realloc(void *p,unsigned int oldsize,unsigned int size);
115 void sq_vm_free(void *p,unsigned int size);
116 #endif //_SQSTATE_H_