1 /* see copyright notice in squirrel.h */
9 //max number of character for a printed number
10 #define NUMBER_MAX_CHAR 50
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 *);
23 void Resize(int size);
24 void AllocNodes(int size);
26 unsigned int _numofslots;
27 unsigned int _slotused;
30 #define ADD_STRING(ss,str,len) ss->_stringtable->Add(str,len)
31 #define REMOVE_STRING(ss,bstr) ss->_stringtable->Remove(bstr)
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);
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;
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[];
78 SQCOMPILERERROR _compilererrorhandler;
79 SQPRINTFUNCTION _printfunc;
86 #define _sp(s) (_sharedstate->GetScratchPad(s))
87 #define _spval (_sharedstate->GetScratchPad(-1))
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)
99 #ifdef SQUNICODE //rsl REAL STRING LEN
100 #define rsl(l) ((l)<<1)
105 extern SQObjectPtr _null_;
106 extern SQObjectPtr _true_;
107 extern SQObjectPtr _false_;
108 extern SQObjectPtr _one_;
109 extern SQObjectPtr _minusone_;
111 bool CompileTypemask(SQIntVec &res,const SQChar *typemask);
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);