1 /* see copyright notice in squirrel.h */
9 //max number of character for a printed number
10 #define NUMBER_MAX_CHAR 50
16 SQString *Add(const SQChar *,SQInteger len);
17 void Remove(SQString *);
19 void Resize(SQInteger size);
20 void AllocNodes(SQInteger size);
22 SQUnsignedInteger _numofslots;
23 SQUnsignedInteger _slotused;
29 SQUnsignedInteger refs;
34 void AddRef(SQObject &obj);
35 SQBool Release(SQObject &obj);
36 #ifndef NO_GARBAGE_COLLECTOR
37 void Mark(SQCollectable **chain);
41 RefNode *Get(SQObject &obj,SQHash &mainpos,RefNode **prev,bool add);
42 RefNode *Add(SQHash mainpos,SQObject &obj);
43 void Resize(SQUnsignedInteger size);
44 void AllocNodes(SQUnsignedInteger size);
45 SQUnsignedInteger _numofslots;
46 SQUnsignedInteger _slotused;
52 #define ADD_STRING(ss,str,len) ss->_stringtable->Add(str,len)
53 #define REMOVE_STRING(ss,bstr) ss->_stringtable->Remove(bstr)
63 SQChar* GetScratchPad(SQInteger size);
64 SQInteger GetMetaMethodIdxByName(const SQObjectPtr &name);
65 #ifndef NO_GARBAGE_COLLECTOR
66 SQInteger CollectGarbage(SQVM *vm);
67 static void MarkObject(SQObjectPtr &o,SQCollectable **chain);
69 SQObjectPtrVec *_metamethods;
70 SQObjectPtr _metamethodsmap;
71 SQObjectPtrVec *_systemstrings;
72 SQObjectPtrVec *_types;
73 StringTable *_stringtable;
75 SQObjectPtr _registry;
76 SQObjectPtr _constructoridx;
77 #ifndef NO_GARBAGE_COLLECTOR
78 SQCollectable *_gc_chain;
81 SQObjectPtr _table_default_delegate;
82 static SQRegFunction _table_default_delegate_funcz[];
83 SQObjectPtr _array_default_delegate;
84 static SQRegFunction _array_default_delegate_funcz[];
85 SQObjectPtr _string_default_delegate;
86 static SQRegFunction _string_default_delegate_funcz[];
87 SQObjectPtr _number_default_delegate;
88 static SQRegFunction _number_default_delegate_funcz[];
89 SQObjectPtr _generator_default_delegate;
90 static SQRegFunction _generator_default_delegate_funcz[];
91 SQObjectPtr _closure_default_delegate;
92 static SQRegFunction _closure_default_delegate_funcz[];
93 SQObjectPtr _thread_default_delegate;
94 static SQRegFunction _thread_default_delegate_funcz[];
95 SQObjectPtr _class_default_delegate;
96 static SQRegFunction _class_default_delegate_funcz[];
97 SQObjectPtr _instance_default_delegate;
98 static SQRegFunction _instance_default_delegate_funcz[];
99 SQObjectPtr _weakref_default_delegate;
100 static SQRegFunction _weakref_default_delegate_funcz[];
102 SQCOMPILERERROR _compilererrorhandler;
103 SQPRINTFUNCTION _printfunc;
105 bool _notifyallexceptions;
108 SQInteger _scratchpadsize;
111 #define _sp(s) (_sharedstate->GetScratchPad(s))
112 #define _spval (_sharedstate->GetScratchPad(-1))
114 #define _table_ddel _table(_sharedstate->_table_default_delegate)
115 #define _array_ddel _table(_sharedstate->_array_default_delegate)
116 #define _string_ddel _table(_sharedstate->_string_default_delegate)
117 #define _number_ddel _table(_sharedstate->_number_default_delegate)
118 #define _generator_ddel _table(_sharedstate->_generator_default_delegate)
119 #define _closure_ddel _table(_sharedstate->_closure_default_delegate)
120 #define _thread_ddel _table(_sharedstate->_thread_default_delegate)
121 #define _class_ddel _table(_sharedstate->_class_default_delegate)
122 #define _instance_ddel _table(_sharedstate->_instance_default_delegate)
123 #define _weakref_ddel _table(_sharedstate->_weakref_default_delegate)
125 #ifdef SQUNICODE //rsl REAL STRING LEN
126 #define rsl(l) ((l)<<1)
131 extern SQObjectPtr _null_;
132 extern SQObjectPtr _true_;
133 extern SQObjectPtr _false_;
134 extern SQObjectPtr _one_;
135 extern SQObjectPtr _minusone_;
137 bool CompileTypemask(SQIntVec &res,const SQChar *typemask);
139 void *sq_vm_malloc(SQUnsignedInteger size);
140 void *sq_vm_realloc(void *p,SQUnsignedInteger oldsize,SQUnsignedInteger size);
141 void sq_vm_free(void *p,SQUnsignedInteger size);