diff options
Diffstat (limited to 'linden/indra/lscript/lscript_compile/lscript_tree.h')
-rw-r--r-- | linden/indra/lscript/lscript_compile/lscript_tree.h | 2298 |
1 files changed, 2298 insertions, 0 deletions
diff --git a/linden/indra/lscript/lscript_compile/lscript_tree.h b/linden/indra/lscript/lscript_compile/lscript_tree.h new file mode 100644 index 0000000..a535e76 --- /dev/null +++ b/linden/indra/lscript/lscript_compile/lscript_tree.h | |||
@@ -0,0 +1,2298 @@ | |||
1 | /** | ||
2 | * @file lscript_tree.h | ||
3 | * @brief provides the classes required to build lscript's abstract syntax tree and symbol table | ||
4 | * | ||
5 | * Copyright (c) 2002-2007, Linden Research, Inc. | ||
6 | * | ||
7 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
8 | * to you under the terms of the GNU General Public License, version 2.0 | ||
9 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
10 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
11 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
12 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
13 | * | ||
14 | * There are special exceptions to the terms and conditions of the GPL as | ||
15 | * it is applied to this Source Code. View the full text of the exception | ||
16 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
17 | * online at http://secondlife.com/developers/opensource/flossexception | ||
18 | * | ||
19 | * By copying, modifying or distributing this software, you acknowledge | ||
20 | * that you have read and understood your obligations described above, | ||
21 | * and agree to abide by those obligations. | ||
22 | * | ||
23 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
24 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
25 | * COMPLETENESS OR PERFORMANCE. | ||
26 | */ | ||
27 | |||
28 | #ifndef LL_LSCRIPT_TREE_H | ||
29 | #define LL_LSCRIPT_TREE_H | ||
30 | |||
31 | #include <stdio.h> | ||
32 | #include "stdtypes.h" | ||
33 | #include "v3math.h" | ||
34 | #include "llquaternion.h" | ||
35 | #include "linked_lists.h" | ||
36 | #include "lscript_error.h" | ||
37 | #include "lscript_typecheck.h" | ||
38 | #include "lscript_byteformat.h" | ||
39 | |||
40 | |||
41 | // Nota Bene: Class destructors don't delete pointed to classes because it isn't guaranteed that lex/yacc will build | ||
42 | // complete data structures. Instead various chunks that are allocated are stored and deleted by allocation lists | ||
43 | |||
44 | class LLScriptType : public LLScriptFilePosition | ||
45 | { | ||
46 | public: | ||
47 | LLScriptType(S32 line, S32 col, LSCRIPTType type) | ||
48 | : LLScriptFilePosition(line, col), mType(type) | ||
49 | { | ||
50 | } | ||
51 | |||
52 | ~LLScriptType() {} | ||
53 | |||
54 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
55 | S32 getSize(); | ||
56 | |||
57 | LSCRIPTType mType; | ||
58 | }; | ||
59 | |||
60 | // contains a literal or constant value | ||
61 | class LLScriptConstant : public LLScriptFilePosition | ||
62 | { | ||
63 | public: | ||
64 | LLScriptConstant(S32 line, S32 col, LSCRIPTType type) | ||
65 | : LLScriptFilePosition(line, col), mType(type) | ||
66 | { | ||
67 | } | ||
68 | |||
69 | virtual ~LLScriptConstant() {} | ||
70 | |||
71 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
72 | S32 getSize(); | ||
73 | |||
74 | LSCRIPTType mType; | ||
75 | }; | ||
76 | |||
77 | class LLScriptConstantInteger : public LLScriptConstant | ||
78 | { | ||
79 | public: | ||
80 | LLScriptConstantInteger(S32 line, S32 col, S32 value) | ||
81 | : LLScriptConstant(line, col, LST_INTEGER), mValue(value) | ||
82 | { | ||
83 | } | ||
84 | |||
85 | ~LLScriptConstantInteger() {} | ||
86 | |||
87 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
88 | S32 getSize(); | ||
89 | |||
90 | S32 mValue; | ||
91 | }; | ||
92 | |||
93 | class LLScriptConstantFloat : public LLScriptConstant | ||
94 | { | ||
95 | public: | ||
96 | LLScriptConstantFloat(S32 line, S32 col, F32 value) | ||
97 | : LLScriptConstant(line, col, LST_FLOATINGPOINT), mValue(value) | ||
98 | { | ||
99 | } | ||
100 | |||
101 | ~LLScriptConstantFloat() {} | ||
102 | |||
103 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
104 | S32 getSize(); | ||
105 | |||
106 | F32 mValue; | ||
107 | }; | ||
108 | |||
109 | class LLScriptConstantString : public LLScriptConstant | ||
110 | { | ||
111 | public: | ||
112 | LLScriptConstantString(S32 line, S32 col, char *value) | ||
113 | : LLScriptConstant(line, col, LST_STRING), mValue(value) | ||
114 | { | ||
115 | } | ||
116 | |||
117 | ~LLScriptConstantString() | ||
118 | { | ||
119 | delete [] mValue; | ||
120 | mValue = NULL; | ||
121 | } | ||
122 | |||
123 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
124 | S32 getSize(); | ||
125 | |||
126 | char *mValue; | ||
127 | }; | ||
128 | |||
129 | // container for individual identifiers | ||
130 | class LLScriptIdentifier : public LLScriptFilePosition | ||
131 | { | ||
132 | public: | ||
133 | LLScriptIdentifier(S32 line, S32 col, char *name, LLScriptType *type = NULL) | ||
134 | : LLScriptFilePosition(line, col), mName(name), mScopeEntry(NULL), mType(type) | ||
135 | { | ||
136 | } | ||
137 | |||
138 | ~LLScriptIdentifier() | ||
139 | { | ||
140 | delete [] mName; | ||
141 | mName = NULL; | ||
142 | } | ||
143 | |||
144 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
145 | S32 getSize(); | ||
146 | |||
147 | char *mName; | ||
148 | LLScriptScopeEntry *mScopeEntry; | ||
149 | LLScriptType *mType; | ||
150 | }; | ||
151 | |||
152 | typedef enum e_lscript_simple_assignable_type | ||
153 | { | ||
154 | LSSAT_NULL, | ||
155 | LSSAT_IDENTIFIER, | ||
156 | LSSAT_CONSTANT, | ||
157 | LSSAT_VECTOR_CONSTANT, | ||
158 | LSSAT_QUATERNION_CONSTANT, | ||
159 | LSSAT_LIST_CONSTANT, | ||
160 | LSSAT_EOF | ||
161 | } LSCRIPTSimpleAssignableType; | ||
162 | |||
163 | class LLScriptSimpleAssignable : public LLScriptFilePosition | ||
164 | { | ||
165 | public: | ||
166 | LLScriptSimpleAssignable(S32 line, S32 col, LSCRIPTSimpleAssignableType type) | ||
167 | : LLScriptFilePosition(line, col), mType(type), mNextp(NULL) | ||
168 | { | ||
169 | } | ||
170 | |||
171 | void addAssignable(LLScriptSimpleAssignable *assign); | ||
172 | |||
173 | virtual ~LLScriptSimpleAssignable() | ||
174 | { | ||
175 | // don't delete next pointer because we're going to store allocation lists and delete from those | ||
176 | } | ||
177 | |||
178 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
179 | S32 getSize(); | ||
180 | |||
181 | LSCRIPTSimpleAssignableType mType; | ||
182 | LLScriptSimpleAssignable *mNextp; | ||
183 | }; | ||
184 | |||
185 | class LLScriptSAIdentifier : public LLScriptSimpleAssignable | ||
186 | { | ||
187 | public: | ||
188 | LLScriptSAIdentifier(S32 line, S32 col, LLScriptIdentifier *identifier) | ||
189 | : LLScriptSimpleAssignable(line, col, LSSAT_IDENTIFIER), mIdentifier(identifier) | ||
190 | { | ||
191 | } | ||
192 | |||
193 | ~LLScriptSAIdentifier() | ||
194 | { | ||
195 | } | ||
196 | |||
197 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
198 | S32 getSize(); | ||
199 | |||
200 | LLScriptIdentifier *mIdentifier; | ||
201 | }; | ||
202 | |||
203 | class LLScriptSAConstant : public LLScriptSimpleAssignable | ||
204 | { | ||
205 | public: | ||
206 | LLScriptSAConstant(S32 line, S32 col, LLScriptConstant *constant) | ||
207 | : LLScriptSimpleAssignable(line, col, LSSAT_CONSTANT), mConstant(constant) | ||
208 | { | ||
209 | } | ||
210 | |||
211 | ~LLScriptSAConstant() | ||
212 | { | ||
213 | } | ||
214 | |||
215 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
216 | S32 getSize(); | ||
217 | |||
218 | LLScriptConstant *mConstant; | ||
219 | }; | ||
220 | |||
221 | class LLScriptSAVector : public LLScriptSimpleAssignable | ||
222 | { | ||
223 | public: | ||
224 | LLScriptSAVector(S32 line, S32 col, LLScriptSimpleAssignable *e1, | ||
225 | LLScriptSimpleAssignable *e2, | ||
226 | LLScriptSimpleAssignable *e3) | ||
227 | : LLScriptSimpleAssignable(line, col, LSSAT_VECTOR_CONSTANT), | ||
228 | mEntry1(e1), mEntry2(e2), mEntry3(e3) | ||
229 | { | ||
230 | } | ||
231 | |||
232 | ~LLScriptSAVector() | ||
233 | { | ||
234 | } | ||
235 | |||
236 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
237 | S32 getSize(); | ||
238 | |||
239 | LLScriptSimpleAssignable *mEntry1; | ||
240 | LLScriptSimpleAssignable *mEntry2; | ||
241 | LLScriptSimpleAssignable *mEntry3; | ||
242 | }; | ||
243 | |||
244 | class LLScriptSAQuaternion : public LLScriptSimpleAssignable | ||
245 | { | ||
246 | public: | ||
247 | LLScriptSAQuaternion(S32 line, S32 col, LLScriptSimpleAssignable *e1, | ||
248 | LLScriptSimpleAssignable *e2, | ||
249 | LLScriptSimpleAssignable *e3, | ||
250 | LLScriptSimpleAssignable *e4) | ||
251 | : LLScriptSimpleAssignable(line, col, LSSAT_QUATERNION_CONSTANT), | ||
252 | mEntry1(e1), mEntry2(e2), mEntry3(e3), mEntry4(e4) | ||
253 | { | ||
254 | } | ||
255 | |||
256 | ~LLScriptSAQuaternion() | ||
257 | { | ||
258 | } | ||
259 | |||
260 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
261 | S32 getSize(); | ||
262 | |||
263 | LLScriptSimpleAssignable *mEntry1; | ||
264 | LLScriptSimpleAssignable *mEntry2; | ||
265 | LLScriptSimpleAssignable *mEntry3; | ||
266 | LLScriptSimpleAssignable *mEntry4; | ||
267 | }; | ||
268 | |||
269 | class LLScriptSAList : public LLScriptSimpleAssignable | ||
270 | { | ||
271 | public: | ||
272 | LLScriptSAList(S32 line, S32 col, LLScriptSimpleAssignable *elist) | ||
273 | : LLScriptSimpleAssignable(line, col, LSSAT_QUATERNION_CONSTANT), mEntryList(elist) | ||
274 | { | ||
275 | } | ||
276 | |||
277 | ~LLScriptSAList() | ||
278 | { | ||
279 | } | ||
280 | |||
281 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
282 | S32 getSize(); | ||
283 | |||
284 | LLScriptSimpleAssignable *mEntryList; | ||
285 | }; | ||
286 | |||
287 | // global variables | ||
288 | class LLScriptGlobalVariable : public LLScriptFilePosition | ||
289 | { | ||
290 | public: | ||
291 | LLScriptGlobalVariable(S32 line, S32 col, LLScriptType *type, | ||
292 | LLScriptIdentifier *identifier, | ||
293 | LLScriptSimpleAssignable *assignable) | ||
294 | : LLScriptFilePosition(line, col), mType(type), mIdentifier(identifier), mAssignable(assignable), mNextp(NULL), mAssignableType(LST_NULL) | ||
295 | { | ||
296 | } | ||
297 | |||
298 | void addGlobal(LLScriptGlobalVariable *global); | ||
299 | |||
300 | ~LLScriptGlobalVariable() | ||
301 | { | ||
302 | } | ||
303 | |||
304 | void gonext(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
305 | |||
306 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
307 | S32 getSize(); | ||
308 | |||
309 | LLScriptType *mType; | ||
310 | LLScriptIdentifier *mIdentifier; | ||
311 | LLScriptSimpleAssignable *mAssignable; | ||
312 | LLScriptGlobalVariable *mNextp; | ||
313 | LSCRIPTType mAssignableType; | ||
314 | }; | ||
315 | |||
316 | // events | ||
317 | |||
318 | class LLScriptEvent : public LLScriptFilePosition | ||
319 | { | ||
320 | public: | ||
321 | LLScriptEvent(S32 line, S32 col, LSCRIPTStateEventType type) | ||
322 | : LLScriptFilePosition(line, col), mType(type) | ||
323 | { | ||
324 | } | ||
325 | |||
326 | virtual ~LLScriptEvent() | ||
327 | { | ||
328 | // don't delete next pointer because we're going to store allocation lists and delete from those | ||
329 | } | ||
330 | |||
331 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
332 | S32 getSize(); | ||
333 | |||
334 | LSCRIPTStateEventType mType; | ||
335 | }; | ||
336 | |||
337 | class LLScriptStateEntryEvent : public LLScriptEvent | ||
338 | { | ||
339 | public: | ||
340 | LLScriptStateEntryEvent(S32 line, S32 col) | ||
341 | : LLScriptEvent(line, col, LSTT_STATE_ENTRY) | ||
342 | { | ||
343 | } | ||
344 | |||
345 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
346 | S32 getSize(); | ||
347 | |||
348 | ~LLScriptStateEntryEvent() {} | ||
349 | }; | ||
350 | |||
351 | class LLScriptStateExitEvent : public LLScriptEvent | ||
352 | { | ||
353 | public: | ||
354 | LLScriptStateExitEvent(S32 line, S32 col) | ||
355 | : LLScriptEvent(line, col, LSTT_STATE_EXIT) | ||
356 | { | ||
357 | } | ||
358 | |||
359 | ~LLScriptStateExitEvent() {} | ||
360 | |||
361 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
362 | S32 getSize(); | ||
363 | }; | ||
364 | |||
365 | class LLScriptTouchStartEvent : public LLScriptEvent | ||
366 | { | ||
367 | public: | ||
368 | LLScriptTouchStartEvent(S32 line, S32 col, LLScriptIdentifier *count) | ||
369 | : LLScriptEvent(line, col, LSTT_TOUCH_START), mCount(count) | ||
370 | { | ||
371 | } | ||
372 | |||
373 | ~LLScriptTouchStartEvent() | ||
374 | { | ||
375 | } | ||
376 | |||
377 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
378 | S32 getSize(); | ||
379 | |||
380 | LLScriptIdentifier *mCount; | ||
381 | }; | ||
382 | |||
383 | class LLScriptTouchEvent : public LLScriptEvent | ||
384 | { | ||
385 | public: | ||
386 | LLScriptTouchEvent(S32 line, S32 col, LLScriptIdentifier *count) | ||
387 | : LLScriptEvent(line, col, LSTT_TOUCH), mCount(count) | ||
388 | { | ||
389 | } | ||
390 | |||
391 | ~LLScriptTouchEvent() | ||
392 | { | ||
393 | } | ||
394 | |||
395 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
396 | S32 getSize(); | ||
397 | |||
398 | LLScriptIdentifier *mCount; | ||
399 | }; | ||
400 | |||
401 | class LLScriptTouchEndEvent : public LLScriptEvent | ||
402 | { | ||
403 | public: | ||
404 | LLScriptTouchEndEvent(S32 line, S32 col, LLScriptIdentifier *count) | ||
405 | : LLScriptEvent(line, col, LSTT_TOUCH_END), mCount(count) | ||
406 | { | ||
407 | } | ||
408 | |||
409 | ~LLScriptTouchEndEvent() | ||
410 | { | ||
411 | } | ||
412 | |||
413 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
414 | S32 getSize(); | ||
415 | |||
416 | LLScriptIdentifier *mCount; | ||
417 | }; | ||
418 | |||
419 | class LLScriptCollisionStartEvent : public LLScriptEvent | ||
420 | { | ||
421 | public: | ||
422 | LLScriptCollisionStartEvent(S32 line, S32 col, LLScriptIdentifier *count) | ||
423 | : LLScriptEvent(line, col, LSTT_COLLISION_START), mCount(count) | ||
424 | { | ||
425 | } | ||
426 | |||
427 | ~LLScriptCollisionStartEvent() | ||
428 | { | ||
429 | } | ||
430 | |||
431 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
432 | S32 getSize(); | ||
433 | |||
434 | LLScriptIdentifier *mCount; | ||
435 | }; | ||
436 | |||
437 | class LLScriptCollisionEvent : public LLScriptEvent | ||
438 | { | ||
439 | public: | ||
440 | LLScriptCollisionEvent(S32 line, S32 col, LLScriptIdentifier *count) | ||
441 | : LLScriptEvent(line, col, LSTT_COLLISION), mCount(count) | ||
442 | { | ||
443 | } | ||
444 | |||
445 | ~LLScriptCollisionEvent() | ||
446 | { | ||
447 | } | ||
448 | |||
449 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
450 | S32 getSize(); | ||
451 | |||
452 | LLScriptIdentifier *mCount; | ||
453 | }; | ||
454 | |||
455 | class LLScriptCollisionEndEvent : public LLScriptEvent | ||
456 | { | ||
457 | public: | ||
458 | LLScriptCollisionEndEvent(S32 line, S32 col, LLScriptIdentifier *count) | ||
459 | : LLScriptEvent(line, col, LSTT_COLLISION_END), mCount(count) | ||
460 | { | ||
461 | } | ||
462 | |||
463 | ~LLScriptCollisionEndEvent() | ||
464 | { | ||
465 | } | ||
466 | |||
467 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
468 | S32 getSize(); | ||
469 | |||
470 | LLScriptIdentifier *mCount; | ||
471 | }; | ||
472 | |||
473 | class LLScriptLandCollisionStartEvent : public LLScriptEvent | ||
474 | { | ||
475 | public: | ||
476 | LLScriptLandCollisionStartEvent(S32 line, S32 col, LLScriptIdentifier *pos) | ||
477 | : LLScriptEvent(line, col, LSTT_LAND_COLLISION_START), mPosition(pos) | ||
478 | { | ||
479 | } | ||
480 | |||
481 | ~LLScriptLandCollisionStartEvent() | ||
482 | { | ||
483 | } | ||
484 | |||
485 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
486 | S32 getSize(); | ||
487 | |||
488 | LLScriptIdentifier *mPosition; | ||
489 | }; | ||
490 | |||
491 | class LLScriptLandCollisionEvent : public LLScriptEvent | ||
492 | { | ||
493 | public: | ||
494 | LLScriptLandCollisionEvent(S32 line, S32 col, LLScriptIdentifier *pos) | ||
495 | : LLScriptEvent(line, col, LSTT_LAND_COLLISION), mPosition(pos) | ||
496 | { | ||
497 | } | ||
498 | |||
499 | ~LLScriptLandCollisionEvent() | ||
500 | { | ||
501 | } | ||
502 | |||
503 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
504 | S32 getSize(); | ||
505 | |||
506 | LLScriptIdentifier *mPosition; | ||
507 | }; | ||
508 | |||
509 | class LLScriptLandCollisionEndEvent : public LLScriptEvent | ||
510 | { | ||
511 | public: | ||
512 | LLScriptLandCollisionEndEvent(S32 line, S32 col, LLScriptIdentifier *pos) | ||
513 | : LLScriptEvent(line, col, LSTT_LAND_COLLISION_END), mPosition(pos) | ||
514 | { | ||
515 | } | ||
516 | |||
517 | ~LLScriptLandCollisionEndEvent() | ||
518 | { | ||
519 | } | ||
520 | |||
521 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
522 | S32 getSize(); | ||
523 | |||
524 | LLScriptIdentifier *mPosition; | ||
525 | }; | ||
526 | |||
527 | class LLScriptInventoryEvent : public LLScriptEvent | ||
528 | { | ||
529 | public: | ||
530 | LLScriptInventoryEvent(S32 line, S32 col, LLScriptIdentifier *change) | ||
531 | : LLScriptEvent(line, col, LSTT_INVENTORY), mChange(change) | ||
532 | { | ||
533 | } | ||
534 | |||
535 | ~LLScriptInventoryEvent() {} | ||
536 | |||
537 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
538 | S32 getSize(); | ||
539 | |||
540 | LLScriptIdentifier *mChange; | ||
541 | }; | ||
542 | |||
543 | class LLScriptAttachEvent : public LLScriptEvent | ||
544 | { | ||
545 | public: | ||
546 | LLScriptAttachEvent(S32 line, S32 col, LLScriptIdentifier *attach) | ||
547 | : LLScriptEvent(line, col, LSTT_ATTACH), mAttach(attach) | ||
548 | { | ||
549 | } | ||
550 | |||
551 | ~LLScriptAttachEvent() {} | ||
552 | |||
553 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
554 | S32 getSize(); | ||
555 | |||
556 | LLScriptIdentifier *mAttach; | ||
557 | }; | ||
558 | |||
559 | class LLScriptDataserverEvent : public LLScriptEvent | ||
560 | { | ||
561 | public: | ||
562 | LLScriptDataserverEvent(S32 line, S32 col, LLScriptIdentifier *id, LLScriptIdentifier *data) | ||
563 | : LLScriptEvent(line, col, LSTT_DATASERVER), mID(id), mData(data) | ||
564 | { | ||
565 | } | ||
566 | |||
567 | ~LLScriptDataserverEvent() {} | ||
568 | |||
569 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
570 | S32 getSize(); | ||
571 | |||
572 | LLScriptIdentifier *mID; | ||
573 | LLScriptIdentifier *mData; | ||
574 | }; | ||
575 | |||
576 | class LLScriptTimerEvent : public LLScriptEvent | ||
577 | { | ||
578 | public: | ||
579 | LLScriptTimerEvent(S32 line, S32 col) | ||
580 | : LLScriptEvent(line, col, LSTT_TIMER) | ||
581 | { | ||
582 | } | ||
583 | |||
584 | ~LLScriptTimerEvent() {} | ||
585 | |||
586 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
587 | S32 getSize(); | ||
588 | }; | ||
589 | |||
590 | class LLScriptMovingStartEvent : public LLScriptEvent | ||
591 | { | ||
592 | public: | ||
593 | LLScriptMovingStartEvent(S32 line, S32 col) | ||
594 | : LLScriptEvent(line, col, LSTT_MOVING_START) | ||
595 | { | ||
596 | } | ||
597 | |||
598 | ~LLScriptMovingStartEvent() {} | ||
599 | |||
600 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
601 | S32 getSize(); | ||
602 | }; | ||
603 | |||
604 | class LLScriptMovingEndEvent : public LLScriptEvent | ||
605 | { | ||
606 | public: | ||
607 | LLScriptMovingEndEvent(S32 line, S32 col) | ||
608 | : LLScriptEvent(line, col, LSTT_MOVING_END) | ||
609 | { | ||
610 | } | ||
611 | |||
612 | ~LLScriptMovingEndEvent() {} | ||
613 | |||
614 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
615 | S32 getSize(); | ||
616 | }; | ||
617 | |||
618 | class LLScriptRTPEvent : public LLScriptEvent | ||
619 | { | ||
620 | public: | ||
621 | LLScriptRTPEvent(S32 line, S32 col, LLScriptIdentifier *rtperm) | ||
622 | : LLScriptEvent(line, col, LSTT_RTPERMISSIONS), mRTPermissions(rtperm) | ||
623 | { | ||
624 | } | ||
625 | |||
626 | ~LLScriptRTPEvent() {} | ||
627 | |||
628 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
629 | S32 getSize(); | ||
630 | |||
631 | LLScriptIdentifier *mRTPermissions; | ||
632 | }; | ||
633 | |||
634 | class LLScriptChatEvent : public LLScriptEvent | ||
635 | { | ||
636 | public: | ||
637 | LLScriptChatEvent(S32 line, S32 col, LLScriptIdentifier *channel, LLScriptIdentifier *name, LLScriptIdentifier *id, LLScriptIdentifier *message) | ||
638 | : LLScriptEvent(line, col, LSTT_CHAT), mChannel(channel), mName(name), mID(id), mMessage(message) | ||
639 | { | ||
640 | } | ||
641 | |||
642 | ~LLScriptChatEvent() | ||
643 | { | ||
644 | } | ||
645 | |||
646 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
647 | S32 getSize(); | ||
648 | |||
649 | LLScriptIdentifier *mChannel; | ||
650 | LLScriptIdentifier *mName; | ||
651 | LLScriptIdentifier *mID; | ||
652 | LLScriptIdentifier *mMessage; | ||
653 | }; | ||
654 | |||
655 | class LLScriptObjectRezEvent : public LLScriptEvent | ||
656 | { | ||
657 | public: | ||
658 | LLScriptObjectRezEvent(S32 line, S32 col, LLScriptIdentifier *id) | ||
659 | : LLScriptEvent(line, col, LSTT_OBJECT_REZ), mID(id) | ||
660 | { | ||
661 | } | ||
662 | |||
663 | ~LLScriptObjectRezEvent() | ||
664 | { | ||
665 | } | ||
666 | |||
667 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
668 | S32 getSize(); | ||
669 | |||
670 | LLScriptIdentifier *mID; | ||
671 | }; | ||
672 | |||
673 | class LLScriptSensorEvent : public LLScriptEvent | ||
674 | { | ||
675 | public: | ||
676 | LLScriptSensorEvent(S32 line, S32 col, LLScriptIdentifier *number) | ||
677 | : LLScriptEvent(line, col, LSTT_SENSOR), mNumber(number) | ||
678 | { | ||
679 | } | ||
680 | |||
681 | ~LLScriptSensorEvent() | ||
682 | { | ||
683 | } | ||
684 | |||
685 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
686 | S32 getSize(); | ||
687 | |||
688 | LLScriptIdentifier *mNumber; | ||
689 | }; | ||
690 | |||
691 | class LLScriptControlEvent : public LLScriptEvent | ||
692 | { | ||
693 | public: | ||
694 | LLScriptControlEvent(S32 line, S32 col, LLScriptIdentifier *name, LLScriptIdentifier *levels, LLScriptIdentifier *edges) | ||
695 | : LLScriptEvent(line, col, LSTT_CONTROL), mName(name), mLevels(levels), mEdges(edges) | ||
696 | { | ||
697 | } | ||
698 | |||
699 | ~LLScriptControlEvent() | ||
700 | { | ||
701 | } | ||
702 | |||
703 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
704 | S32 getSize(); | ||
705 | |||
706 | LLScriptIdentifier *mName; | ||
707 | LLScriptIdentifier *mLevels; | ||
708 | LLScriptIdentifier *mEdges; | ||
709 | }; | ||
710 | |||
711 | class LLScriptLinkMessageEvent : public LLScriptEvent | ||
712 | { | ||
713 | public: | ||
714 | LLScriptLinkMessageEvent(S32 line, S32 col, LLScriptIdentifier *sender, LLScriptIdentifier *num, LLScriptIdentifier *str, LLScriptIdentifier *id) | ||
715 | : LLScriptEvent(line, col, LSTT_LINK_MESSAGE), mSender(sender), mNum(num), mStr(str), mID(id) | ||
716 | { | ||
717 | } | ||
718 | |||
719 | ~LLScriptLinkMessageEvent() | ||
720 | { | ||
721 | } | ||
722 | |||
723 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
724 | S32 getSize(); | ||
725 | |||
726 | LLScriptIdentifier *mSender; | ||
727 | LLScriptIdentifier *mNum; | ||
728 | LLScriptIdentifier *mStr; | ||
729 | LLScriptIdentifier *mID; | ||
730 | }; | ||
731 | |||
732 | class LLScriptRemoteEvent : public LLScriptEvent | ||
733 | { | ||
734 | public: | ||
735 | LLScriptRemoteEvent(S32 line, S32 col, LLScriptIdentifier *type, LLScriptIdentifier *channel, LLScriptIdentifier *message_id, LLScriptIdentifier *sender, LLScriptIdentifier *int_val, LLScriptIdentifier *str_val) | ||
736 | : LLScriptEvent(line, col, LSTT_REMOTE_DATA), mType(type), mChannel(channel), mMessageID(message_id), mSender(sender), mIntVal(int_val), mStrVal(str_val) | ||
737 | { | ||
738 | } | ||
739 | |||
740 | ~LLScriptRemoteEvent() | ||
741 | { | ||
742 | } | ||
743 | |||
744 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
745 | S32 getSize(); | ||
746 | |||
747 | LLScriptIdentifier *mType; | ||
748 | LLScriptIdentifier *mChannel; | ||
749 | LLScriptIdentifier *mMessageID; | ||
750 | LLScriptIdentifier *mSender; | ||
751 | LLScriptIdentifier *mIntVal; | ||
752 | LLScriptIdentifier *mStrVal; | ||
753 | }; | ||
754 | |||
755 | class LLScriptHTTPResponseEvent : public LLScriptEvent | ||
756 | { | ||
757 | public: | ||
758 | LLScriptHTTPResponseEvent(S32 line, S32 col, | ||
759 | LLScriptIdentifier *reqeust_id, | ||
760 | LLScriptIdentifier *status, | ||
761 | LLScriptIdentifier *metadata, | ||
762 | LLScriptIdentifier *body) | ||
763 | : LLScriptEvent(line, col, LSTT_HTTP_RESPONSE), | ||
764 | mRequestId(reqeust_id), mStatus(status), mMetadata(metadata), mBody(body) | ||
765 | { | ||
766 | } | ||
767 | |||
768 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, | ||
769 | LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, | ||
770 | LSCRIPTType &type, LSCRIPTType basetype, U64 &count, | ||
771 | LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, | ||
772 | S32 stacksize, LLScriptScopeEntry *entry, | ||
773 | S32 entrycount, LLScriptLibData **ldata); | ||
774 | |||
775 | S32 getSize(); | ||
776 | |||
777 | LLScriptIdentifier *mRequestId; | ||
778 | LLScriptIdentifier *mStatus; | ||
779 | LLScriptIdentifier *mMetadata; | ||
780 | LLScriptIdentifier *mBody; | ||
781 | }; | ||
782 | |||
783 | class LLScriptRezEvent : public LLScriptEvent | ||
784 | { | ||
785 | public: | ||
786 | LLScriptRezEvent(S32 line, S32 col, LLScriptIdentifier *start_param) | ||
787 | : LLScriptEvent(line, col, LSTT_REZ), mStartParam(start_param) | ||
788 | { | ||
789 | } | ||
790 | ~LLScriptRezEvent() {} | ||
791 | |||
792 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
793 | S32 getSize(); | ||
794 | |||
795 | LLScriptIdentifier *mStartParam; | ||
796 | }; | ||
797 | |||
798 | class LLScriptNoSensorEvent : public LLScriptEvent | ||
799 | { | ||
800 | public: | ||
801 | LLScriptNoSensorEvent(S32 line, S32 col) | ||
802 | : LLScriptEvent(line, col, LSTT_NO_SENSOR) | ||
803 | { | ||
804 | } | ||
805 | |||
806 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
807 | S32 getSize(); | ||
808 | |||
809 | ~LLScriptNoSensorEvent() {} | ||
810 | }; | ||
811 | |||
812 | class LLScriptAtTarget : public LLScriptEvent | ||
813 | { | ||
814 | public: | ||
815 | LLScriptAtTarget(S32 line, S32 col, LLScriptIdentifier *tnumber, LLScriptIdentifier *tpos, LLScriptIdentifier *ourpos) | ||
816 | : LLScriptEvent(line, col, LSTT_AT_TARGET), mTargetNumber(tnumber), mTargetPosition(tpos), mOurPosition(ourpos) | ||
817 | { | ||
818 | } | ||
819 | |||
820 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
821 | S32 getSize(); | ||
822 | |||
823 | ~LLScriptAtTarget() {} | ||
824 | |||
825 | LLScriptIdentifier *mTargetNumber; | ||
826 | LLScriptIdentifier *mTargetPosition; | ||
827 | LLScriptIdentifier *mOurPosition; | ||
828 | }; | ||
829 | |||
830 | class LLScriptNotAtTarget : public LLScriptEvent | ||
831 | { | ||
832 | public: | ||
833 | LLScriptNotAtTarget(S32 line, S32 col) | ||
834 | : LLScriptEvent(line, col, LSTT_NOT_AT_TARGET) | ||
835 | { | ||
836 | } | ||
837 | |||
838 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
839 | S32 getSize(); | ||
840 | |||
841 | ~LLScriptNotAtTarget() {} | ||
842 | }; | ||
843 | |||
844 | class LLScriptAtRotTarget : public LLScriptEvent | ||
845 | { | ||
846 | public: | ||
847 | LLScriptAtRotTarget(S32 line, S32 col, LLScriptIdentifier *tnumber, LLScriptIdentifier *trot, LLScriptIdentifier *ourrot) | ||
848 | : LLScriptEvent(line, col, LSTT_AT_ROT_TARGET), mTargetNumber(tnumber), mTargetRotation(trot), mOurRotation(ourrot) | ||
849 | { | ||
850 | } | ||
851 | |||
852 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
853 | S32 getSize(); | ||
854 | |||
855 | ~LLScriptAtRotTarget() {} | ||
856 | |||
857 | LLScriptIdentifier *mTargetNumber; | ||
858 | LLScriptIdentifier *mTargetRotation; | ||
859 | LLScriptIdentifier *mOurRotation; | ||
860 | }; | ||
861 | |||
862 | class LLScriptNotAtRotTarget : public LLScriptEvent | ||
863 | { | ||
864 | public: | ||
865 | LLScriptNotAtRotTarget(S32 line, S32 col) | ||
866 | : LLScriptEvent(line, col, LSTT_NOT_AT_ROT_TARGET) | ||
867 | { | ||
868 | } | ||
869 | |||
870 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
871 | S32 getSize(); | ||
872 | |||
873 | ~LLScriptNotAtRotTarget() {} | ||
874 | }; | ||
875 | |||
876 | class LLScriptMoneyEvent : public LLScriptEvent | ||
877 | { | ||
878 | public: | ||
879 | LLScriptMoneyEvent(S32 line, S32 col, LLScriptIdentifier *name, LLScriptIdentifier *amount) | ||
880 | : LLScriptEvent(line, col, LSTT_MONEY), mName(name), mAmount(amount) | ||
881 | { | ||
882 | } | ||
883 | |||
884 | ~LLScriptMoneyEvent() | ||
885 | { | ||
886 | } | ||
887 | |||
888 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
889 | S32 getSize(); | ||
890 | |||
891 | LLScriptIdentifier *mName; | ||
892 | LLScriptIdentifier *mAmount; | ||
893 | }; | ||
894 | |||
895 | class LLScriptEmailEvent : public LLScriptEvent | ||
896 | { | ||
897 | public: | ||
898 | LLScriptEmailEvent(S32 line, S32 col, LLScriptIdentifier *time, LLScriptIdentifier *address, LLScriptIdentifier *subject, LLScriptIdentifier *body, LLScriptIdentifier *number) | ||
899 | : LLScriptEvent(line, col, LSTT_EMAIL), mTime(time), mAddress(address), mSubject(subject), mBody(body), mNumber(number) | ||
900 | { | ||
901 | } | ||
902 | |||
903 | ~LLScriptEmailEvent() | ||
904 | { | ||
905 | } | ||
906 | |||
907 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
908 | S32 getSize(); | ||
909 | |||
910 | LLScriptIdentifier *mTime; | ||
911 | LLScriptIdentifier *mAddress; | ||
912 | LLScriptIdentifier *mSubject; | ||
913 | LLScriptIdentifier *mBody; | ||
914 | LLScriptIdentifier *mNumber; | ||
915 | }; | ||
916 | |||
917 | |||
918 | class LLScriptExpression : public LLScriptFilePosition | ||
919 | { | ||
920 | public: | ||
921 | LLScriptExpression(S32 line, S32 col, LSCRIPTExpressionType type) | ||
922 | : LLScriptFilePosition(line, col), mType(type), mNextp(NULL), mLeftType(LST_NULL), mRightType(LST_NULL), mReturnType(LST_NULL) | ||
923 | { | ||
924 | } | ||
925 | |||
926 | void addExpression(LLScriptExpression *expression); | ||
927 | |||
928 | virtual ~LLScriptExpression() | ||
929 | { | ||
930 | // don't delete next pointer because we're going to store allocation lists and delete from those | ||
931 | } | ||
932 | |||
933 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
934 | |||
935 | void gonext(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
936 | S32 getSize(); | ||
937 | |||
938 | LSCRIPTExpressionType mType; | ||
939 | LLScriptExpression *mNextp; | ||
940 | LSCRIPTType mLeftType, mRightType, mReturnType; | ||
941 | |||
942 | }; | ||
943 | |||
944 | class LLScriptForExpressionList : public LLScriptExpression | ||
945 | { | ||
946 | public: | ||
947 | LLScriptForExpressionList(S32 line, S32 col, LLScriptExpression *first, LLScriptExpression *second) | ||
948 | : LLScriptExpression(line, col, LET_FOR_EXPRESSION_LIST), mFirstp(first), mSecondp(second) | ||
949 | { | ||
950 | } | ||
951 | |||
952 | ~LLScriptForExpressionList() | ||
953 | { | ||
954 | } | ||
955 | |||
956 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
957 | S32 getSize(); | ||
958 | |||
959 | LLScriptExpression *mFirstp; | ||
960 | LLScriptExpression *mSecondp; | ||
961 | }; | ||
962 | |||
963 | class LLScriptFuncExpressionList : public LLScriptExpression | ||
964 | { | ||
965 | public: | ||
966 | LLScriptFuncExpressionList(S32 line, S32 col, LLScriptExpression *first, LLScriptExpression *second) | ||
967 | : LLScriptExpression(line, col, LET_FUNC_EXPRESSION_LIST), mFirstp(first), mSecondp(second) | ||
968 | { | ||
969 | } | ||
970 | |||
971 | ~LLScriptFuncExpressionList() | ||
972 | { | ||
973 | } | ||
974 | |||
975 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
976 | S32 getSize(); | ||
977 | |||
978 | LLScriptExpression *mFirstp; | ||
979 | LLScriptExpression *mSecondp; | ||
980 | }; | ||
981 | |||
982 | class LLScriptListExpressionList : public LLScriptExpression | ||
983 | { | ||
984 | public: | ||
985 | LLScriptListExpressionList(S32 line, S32 col, LLScriptExpression *first, LLScriptExpression *second) | ||
986 | : LLScriptExpression(line, col, LET_LIST_EXPRESSION_LIST), mFirstp(first), mSecondp(second) | ||
987 | { | ||
988 | } | ||
989 | |||
990 | ~LLScriptListExpressionList() | ||
991 | { | ||
992 | } | ||
993 | |||
994 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
995 | S32 getSize(); | ||
996 | |||
997 | LLScriptExpression *mFirstp; | ||
998 | LLScriptExpression *mSecondp; | ||
999 | }; | ||
1000 | |||
1001 | class LLScriptLValue : public LLScriptExpression | ||
1002 | { | ||
1003 | public: | ||
1004 | LLScriptLValue(S32 line, S32 col, LLScriptIdentifier *identifier, LLScriptIdentifier *accessor) | ||
1005 | : LLScriptExpression(line, col, LET_LVALUE), mOffset(0), mIdentifier(identifier), mAccessor(accessor) | ||
1006 | { | ||
1007 | } | ||
1008 | |||
1009 | ~LLScriptLValue() | ||
1010 | { | ||
1011 | } | ||
1012 | |||
1013 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1014 | S32 getSize(); | ||
1015 | |||
1016 | S32 mOffset; | ||
1017 | LLScriptIdentifier *mIdentifier; | ||
1018 | LLScriptIdentifier *mAccessor; | ||
1019 | }; | ||
1020 | |||
1021 | class LLScriptAssignment : public LLScriptExpression | ||
1022 | { | ||
1023 | public: | ||
1024 | LLScriptAssignment(S32 line, S32 col, LLScriptExpression *lvalue, LLScriptExpression *rightside) | ||
1025 | : LLScriptExpression(line, col, LET_ASSIGNMENT), mLValue(lvalue), mRightSide(rightside) | ||
1026 | { | ||
1027 | } | ||
1028 | |||
1029 | ~LLScriptAssignment() | ||
1030 | { | ||
1031 | } | ||
1032 | |||
1033 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1034 | S32 getSize(); | ||
1035 | |||
1036 | LLScriptExpression *mLValue; | ||
1037 | LLScriptExpression *mRightSide; | ||
1038 | }; | ||
1039 | |||
1040 | class LLScriptAddAssignment : public LLScriptExpression | ||
1041 | { | ||
1042 | public: | ||
1043 | LLScriptAddAssignment(S32 line, S32 col, LLScriptExpression *lvalue, LLScriptExpression *rightside) | ||
1044 | : LLScriptExpression(line, col, LET_ADD_ASSIGN), mLValue(lvalue), mRightSide(rightside) | ||
1045 | { | ||
1046 | } | ||
1047 | |||
1048 | ~LLScriptAddAssignment() | ||
1049 | { | ||
1050 | } | ||
1051 | |||
1052 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1053 | S32 getSize(); | ||
1054 | |||
1055 | LLScriptExpression *mLValue; | ||
1056 | LLScriptExpression *mRightSide; | ||
1057 | }; | ||
1058 | |||
1059 | class LLScriptSubAssignment : public LLScriptExpression | ||
1060 | { | ||
1061 | public: | ||
1062 | LLScriptSubAssignment(S32 line, S32 col, LLScriptExpression *lvalue, LLScriptExpression *rightside) | ||
1063 | : LLScriptExpression(line, col, LET_SUB_ASSIGN), mLValue(lvalue), mRightSide(rightside) | ||
1064 | { | ||
1065 | } | ||
1066 | |||
1067 | ~LLScriptSubAssignment() | ||
1068 | { | ||
1069 | } | ||
1070 | |||
1071 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1072 | S32 getSize(); | ||
1073 | |||
1074 | LLScriptExpression *mLValue; | ||
1075 | LLScriptExpression *mRightSide; | ||
1076 | }; | ||
1077 | |||
1078 | class LLScriptMulAssignment : public LLScriptExpression | ||
1079 | { | ||
1080 | public: | ||
1081 | LLScriptMulAssignment(S32 line, S32 col, LLScriptExpression *lvalue, LLScriptExpression *rightside) | ||
1082 | : LLScriptExpression(line, col, LET_MUL_ASSIGN), mLValue(lvalue), mRightSide(rightside) | ||
1083 | { | ||
1084 | } | ||
1085 | |||
1086 | ~LLScriptMulAssignment() | ||
1087 | { | ||
1088 | } | ||
1089 | |||
1090 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1091 | S32 getSize(); | ||
1092 | |||
1093 | LLScriptExpression *mLValue; | ||
1094 | LLScriptExpression *mRightSide; | ||
1095 | }; | ||
1096 | |||
1097 | class LLScriptDivAssignment : public LLScriptExpression | ||
1098 | { | ||
1099 | public: | ||
1100 | LLScriptDivAssignment(S32 line, S32 col, LLScriptExpression *lvalue, LLScriptExpression *rightside) | ||
1101 | : LLScriptExpression(line, col, LET_DIV_ASSIGN), mLValue(lvalue), mRightSide(rightside) | ||
1102 | { | ||
1103 | } | ||
1104 | |||
1105 | ~LLScriptDivAssignment() | ||
1106 | { | ||
1107 | } | ||
1108 | |||
1109 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1110 | S32 getSize(); | ||
1111 | |||
1112 | LLScriptExpression *mLValue; | ||
1113 | LLScriptExpression *mRightSide; | ||
1114 | }; | ||
1115 | |||
1116 | class LLScriptModAssignment : public LLScriptExpression | ||
1117 | { | ||
1118 | public: | ||
1119 | LLScriptModAssignment(S32 line, S32 col, LLScriptExpression *lvalue, LLScriptExpression *rightside) | ||
1120 | : LLScriptExpression(line, col, LET_MOD_ASSIGN), mLValue(lvalue), mRightSide(rightside) | ||
1121 | { | ||
1122 | } | ||
1123 | |||
1124 | ~LLScriptModAssignment() | ||
1125 | { | ||
1126 | } | ||
1127 | |||
1128 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1129 | S32 getSize(); | ||
1130 | |||
1131 | LLScriptExpression *mLValue; | ||
1132 | LLScriptExpression *mRightSide; | ||
1133 | }; | ||
1134 | |||
1135 | class LLScriptEquality : public LLScriptExpression | ||
1136 | { | ||
1137 | public: | ||
1138 | LLScriptEquality(S32 line, S32 col, LLScriptExpression *leftside, LLScriptExpression *rightside) | ||
1139 | : LLScriptExpression(line, col, LET_EQUALITY), mLeftSide(leftside), mRightSide(rightside) | ||
1140 | { | ||
1141 | } | ||
1142 | |||
1143 | ~LLScriptEquality() | ||
1144 | { | ||
1145 | } | ||
1146 | |||
1147 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1148 | S32 getSize(); | ||
1149 | |||
1150 | LLScriptExpression *mLeftSide; | ||
1151 | LLScriptExpression *mRightSide; | ||
1152 | }; | ||
1153 | |||
1154 | class LLScriptNotEquals : public LLScriptExpression | ||
1155 | { | ||
1156 | public: | ||
1157 | LLScriptNotEquals(S32 line, S32 col, LLScriptExpression *leftside, LLScriptExpression *rightside) | ||
1158 | : LLScriptExpression(line, col, LET_NOT_EQUALS), mLeftSide(leftside), mRightSide(rightside) | ||
1159 | { | ||
1160 | } | ||
1161 | |||
1162 | ~LLScriptNotEquals() | ||
1163 | { | ||
1164 | } | ||
1165 | |||
1166 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1167 | S32 getSize(); | ||
1168 | |||
1169 | LLScriptExpression *mLeftSide; | ||
1170 | LLScriptExpression *mRightSide; | ||
1171 | }; | ||
1172 | |||
1173 | class LLScriptLessEquals : public LLScriptExpression | ||
1174 | { | ||
1175 | public: | ||
1176 | LLScriptLessEquals(S32 line, S32 col, LLScriptExpression *leftside, LLScriptExpression *rightside) | ||
1177 | : LLScriptExpression(line, col, LET_LESS_EQUALS), mLeftSide(leftside), mRightSide(rightside) | ||
1178 | { | ||
1179 | } | ||
1180 | |||
1181 | ~LLScriptLessEquals() | ||
1182 | { | ||
1183 | } | ||
1184 | |||
1185 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1186 | S32 getSize(); | ||
1187 | |||
1188 | LLScriptExpression *mLeftSide; | ||
1189 | LLScriptExpression *mRightSide; | ||
1190 | }; | ||
1191 | |||
1192 | class LLScriptGreaterEquals : public LLScriptExpression | ||
1193 | { | ||
1194 | public: | ||
1195 | LLScriptGreaterEquals(S32 line, S32 col, LLScriptExpression *leftside, LLScriptExpression *rightside) | ||
1196 | : LLScriptExpression(line, col, LET_GREATER_EQUALS), mLeftSide(leftside), mRightSide(rightside) | ||
1197 | { | ||
1198 | } | ||
1199 | |||
1200 | ~LLScriptGreaterEquals() | ||
1201 | { | ||
1202 | } | ||
1203 | |||
1204 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1205 | S32 getSize(); | ||
1206 | |||
1207 | LLScriptExpression *mLeftSide; | ||
1208 | LLScriptExpression *mRightSide; | ||
1209 | }; | ||
1210 | |||
1211 | class LLScriptLessThan : public LLScriptExpression | ||
1212 | { | ||
1213 | public: | ||
1214 | LLScriptLessThan(S32 line, S32 col, LLScriptExpression *leftside, LLScriptExpression *rightside) | ||
1215 | : LLScriptExpression(line, col, LET_LESS_THAN), mLeftSide(leftside), mRightSide(rightside) | ||
1216 | { | ||
1217 | } | ||
1218 | |||
1219 | ~LLScriptLessThan() | ||
1220 | { | ||
1221 | } | ||
1222 | |||
1223 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1224 | S32 getSize(); | ||
1225 | |||
1226 | LLScriptExpression *mLeftSide; | ||
1227 | LLScriptExpression *mRightSide; | ||
1228 | }; | ||
1229 | |||
1230 | class LLScriptGreaterThan : public LLScriptExpression | ||
1231 | { | ||
1232 | public: | ||
1233 | LLScriptGreaterThan(S32 line, S32 col, LLScriptExpression *leftside, LLScriptExpression *rightside) | ||
1234 | : LLScriptExpression(line, col, LET_GREATER_THAN), mLeftSide(leftside), mRightSide(rightside) | ||
1235 | { | ||
1236 | } | ||
1237 | |||
1238 | ~LLScriptGreaterThan() | ||
1239 | { | ||
1240 | } | ||
1241 | |||
1242 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1243 | S32 getSize(); | ||
1244 | |||
1245 | LLScriptExpression *mLeftSide; | ||
1246 | LLScriptExpression *mRightSide; | ||
1247 | }; | ||
1248 | |||
1249 | class LLScriptPlus : public LLScriptExpression | ||
1250 | { | ||
1251 | public: | ||
1252 | LLScriptPlus(S32 line, S32 col, LLScriptExpression *leftside, LLScriptExpression *rightside) | ||
1253 | : LLScriptExpression(line, col, LET_PLUS), mLeftSide(leftside), mRightSide(rightside) | ||
1254 | { | ||
1255 | } | ||
1256 | |||
1257 | ~LLScriptPlus() | ||
1258 | { | ||
1259 | } | ||
1260 | |||
1261 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1262 | S32 getSize(); | ||
1263 | |||
1264 | LLScriptExpression *mLeftSide; | ||
1265 | LLScriptExpression *mRightSide; | ||
1266 | }; | ||
1267 | |||
1268 | class LLScriptMinus : public LLScriptExpression | ||
1269 | { | ||
1270 | public: | ||
1271 | LLScriptMinus(S32 line, S32 col, LLScriptExpression *leftside, LLScriptExpression *rightside) | ||
1272 | : LLScriptExpression(line, col, LET_MINUS), mLeftSide(leftside), mRightSide(rightside) | ||
1273 | { | ||
1274 | } | ||
1275 | |||
1276 | ~LLScriptMinus() | ||
1277 | { | ||
1278 | } | ||
1279 | |||
1280 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1281 | S32 getSize(); | ||
1282 | |||
1283 | LLScriptExpression *mLeftSide; | ||
1284 | LLScriptExpression *mRightSide; | ||
1285 | }; | ||
1286 | |||
1287 | class LLScriptTimes : public LLScriptExpression | ||
1288 | { | ||
1289 | public: | ||
1290 | LLScriptTimes(S32 line, S32 col, LLScriptExpression *leftside, LLScriptExpression *rightside) | ||
1291 | : LLScriptExpression(line, col, LET_TIMES), mLeftSide(leftside), mRightSide(rightside) | ||
1292 | { | ||
1293 | } | ||
1294 | |||
1295 | ~LLScriptTimes() | ||
1296 | { | ||
1297 | } | ||
1298 | |||
1299 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1300 | S32 getSize(); | ||
1301 | |||
1302 | LLScriptExpression *mLeftSide; | ||
1303 | LLScriptExpression *mRightSide; | ||
1304 | }; | ||
1305 | |||
1306 | class LLScriptDivide : public LLScriptExpression | ||
1307 | { | ||
1308 | public: | ||
1309 | LLScriptDivide(S32 line, S32 col, LLScriptExpression *leftside, LLScriptExpression *rightside) | ||
1310 | : LLScriptExpression(line, col, LET_DIVIDE), mLeftSide(leftside), mRightSide(rightside) | ||
1311 | { | ||
1312 | } | ||
1313 | |||
1314 | ~LLScriptDivide() | ||
1315 | { | ||
1316 | } | ||
1317 | |||
1318 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1319 | S32 getSize(); | ||
1320 | |||
1321 | LLScriptExpression *mLeftSide; | ||
1322 | LLScriptExpression *mRightSide; | ||
1323 | }; | ||
1324 | |||
1325 | class LLScriptMod : public LLScriptExpression | ||
1326 | { | ||
1327 | public: | ||
1328 | LLScriptMod(S32 line, S32 col, LLScriptExpression *leftside, LLScriptExpression *rightside) | ||
1329 | : LLScriptExpression(line, col, LET_MOD), mLeftSide(leftside), mRightSide(rightside) | ||
1330 | { | ||
1331 | } | ||
1332 | |||
1333 | ~LLScriptMod() | ||
1334 | { | ||
1335 | } | ||
1336 | |||
1337 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1338 | S32 getSize(); | ||
1339 | |||
1340 | LLScriptExpression *mLeftSide; | ||
1341 | LLScriptExpression *mRightSide; | ||
1342 | }; | ||
1343 | |||
1344 | class LLScriptBitAnd : public LLScriptExpression | ||
1345 | { | ||
1346 | public: | ||
1347 | LLScriptBitAnd(S32 line, S32 col, LLScriptExpression *leftside, LLScriptExpression *rightside) | ||
1348 | : LLScriptExpression(line, col, LET_BIT_AND), mLeftSide(leftside), mRightSide(rightside) | ||
1349 | { | ||
1350 | } | ||
1351 | |||
1352 | ~LLScriptBitAnd() | ||
1353 | { | ||
1354 | } | ||
1355 | |||
1356 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1357 | S32 getSize(); | ||
1358 | |||
1359 | LLScriptExpression *mLeftSide; | ||
1360 | LLScriptExpression *mRightSide; | ||
1361 | }; | ||
1362 | |||
1363 | class LLScriptBitOr : public LLScriptExpression | ||
1364 | { | ||
1365 | public: | ||
1366 | LLScriptBitOr(S32 line, S32 col, LLScriptExpression *leftside, LLScriptExpression *rightside) | ||
1367 | : LLScriptExpression(line, col, LET_BIT_OR), mLeftSide(leftside), mRightSide(rightside) | ||
1368 | { | ||
1369 | } | ||
1370 | |||
1371 | ~LLScriptBitOr() | ||
1372 | { | ||
1373 | } | ||
1374 | |||
1375 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1376 | S32 getSize(); | ||
1377 | |||
1378 | LLScriptExpression *mLeftSide; | ||
1379 | LLScriptExpression *mRightSide; | ||
1380 | }; | ||
1381 | |||
1382 | class LLScriptBitXor : public LLScriptExpression | ||
1383 | { | ||
1384 | public: | ||
1385 | LLScriptBitXor(S32 line, S32 col, LLScriptExpression *leftside, LLScriptExpression *rightside) | ||
1386 | : LLScriptExpression(line, col, LET_BIT_XOR), mLeftSide(leftside), mRightSide(rightside) | ||
1387 | { | ||
1388 | } | ||
1389 | |||
1390 | ~LLScriptBitXor() | ||
1391 | { | ||
1392 | } | ||
1393 | |||
1394 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1395 | S32 getSize(); | ||
1396 | |||
1397 | LLScriptExpression *mLeftSide; | ||
1398 | LLScriptExpression *mRightSide; | ||
1399 | }; | ||
1400 | |||
1401 | class LLScriptBooleanAnd : public LLScriptExpression | ||
1402 | { | ||
1403 | public: | ||
1404 | LLScriptBooleanAnd(S32 line, S32 col, LLScriptExpression *leftside, LLScriptExpression *rightside) | ||
1405 | : LLScriptExpression(line, col, LET_BOOLEAN_AND), mLeftSide(leftside), mRightSide(rightside) | ||
1406 | { | ||
1407 | } | ||
1408 | |||
1409 | ~LLScriptBooleanAnd() | ||
1410 | { | ||
1411 | } | ||
1412 | |||
1413 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1414 | S32 getSize(); | ||
1415 | |||
1416 | LLScriptExpression *mLeftSide; | ||
1417 | LLScriptExpression *mRightSide; | ||
1418 | }; | ||
1419 | |||
1420 | class LLScriptBooleanOr : public LLScriptExpression | ||
1421 | { | ||
1422 | public: | ||
1423 | LLScriptBooleanOr(S32 line, S32 col, LLScriptExpression *leftside, LLScriptExpression *rightside) | ||
1424 | : LLScriptExpression(line, col, LET_BOOLEAN_OR), mLeftSide(leftside), mRightSide(rightside) | ||
1425 | { | ||
1426 | } | ||
1427 | |||
1428 | ~LLScriptBooleanOr() | ||
1429 | { | ||
1430 | } | ||
1431 | |||
1432 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1433 | S32 getSize(); | ||
1434 | |||
1435 | LLScriptExpression *mLeftSide; | ||
1436 | LLScriptExpression *mRightSide; | ||
1437 | }; | ||
1438 | |||
1439 | class LLScriptShiftLeft : public LLScriptExpression | ||
1440 | { | ||
1441 | public: | ||
1442 | LLScriptShiftLeft(S32 line, S32 col, LLScriptExpression *leftside, LLScriptExpression *rightside) | ||
1443 | : LLScriptExpression(line, col, LET_SHIFT_LEFT), mLeftSide(leftside), mRightSide(rightside) | ||
1444 | { | ||
1445 | } | ||
1446 | |||
1447 | ~LLScriptShiftLeft() | ||
1448 | { | ||
1449 | } | ||
1450 | |||
1451 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1452 | S32 getSize(); | ||
1453 | |||
1454 | LLScriptExpression *mLeftSide; | ||
1455 | LLScriptExpression *mRightSide; | ||
1456 | }; | ||
1457 | |||
1458 | class LLScriptShiftRight : public LLScriptExpression | ||
1459 | { | ||
1460 | public: | ||
1461 | LLScriptShiftRight(S32 line, S32 col, LLScriptExpression *leftside, LLScriptExpression *rightside) | ||
1462 | : LLScriptExpression(line, col, LET_SHIFT_RIGHT), mLeftSide(leftside), mRightSide(rightside) | ||
1463 | { | ||
1464 | } | ||
1465 | |||
1466 | ~LLScriptShiftRight() | ||
1467 | { | ||
1468 | } | ||
1469 | |||
1470 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1471 | S32 getSize(); | ||
1472 | |||
1473 | LLScriptExpression *mLeftSide; | ||
1474 | LLScriptExpression *mRightSide; | ||
1475 | }; | ||
1476 | |||
1477 | class LLScriptParenthesis : public LLScriptExpression | ||
1478 | { | ||
1479 | public: | ||
1480 | LLScriptParenthesis(S32 line, S32 col, LLScriptExpression *expression) | ||
1481 | : LLScriptExpression(line, col, LET_PARENTHESIS), mExpression(expression) | ||
1482 | { | ||
1483 | } | ||
1484 | |||
1485 | ~LLScriptParenthesis() | ||
1486 | { | ||
1487 | } | ||
1488 | |||
1489 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1490 | S32 getSize(); | ||
1491 | |||
1492 | LLScriptExpression *mExpression; | ||
1493 | }; | ||
1494 | |||
1495 | class LLScriptUnaryMinus : public LLScriptExpression | ||
1496 | { | ||
1497 | public: | ||
1498 | LLScriptUnaryMinus(S32 line, S32 col, LLScriptExpression *expression) | ||
1499 | : LLScriptExpression(line, col, LET_UNARY_MINUS), mExpression(expression) | ||
1500 | { | ||
1501 | } | ||
1502 | |||
1503 | ~LLScriptUnaryMinus() | ||
1504 | { | ||
1505 | } | ||
1506 | |||
1507 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1508 | S32 getSize(); | ||
1509 | |||
1510 | LLScriptExpression *mExpression; | ||
1511 | }; | ||
1512 | |||
1513 | class LLScriptBooleanNot : public LLScriptExpression | ||
1514 | { | ||
1515 | public: | ||
1516 | LLScriptBooleanNot(S32 line, S32 col, LLScriptExpression *expression) | ||
1517 | : LLScriptExpression(line, col, LET_BOOLEAN_NOT), mExpression(expression) | ||
1518 | { | ||
1519 | } | ||
1520 | |||
1521 | ~LLScriptBooleanNot() | ||
1522 | { | ||
1523 | } | ||
1524 | |||
1525 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1526 | S32 getSize(); | ||
1527 | |||
1528 | LLScriptExpression *mExpression; | ||
1529 | }; | ||
1530 | |||
1531 | class LLScriptBitNot : public LLScriptExpression | ||
1532 | { | ||
1533 | public: | ||
1534 | LLScriptBitNot(S32 line, S32 col, LLScriptExpression *expression) | ||
1535 | : LLScriptExpression(line, col, LET_BIT_NOT), mExpression(expression) | ||
1536 | { | ||
1537 | } | ||
1538 | |||
1539 | ~LLScriptBitNot() | ||
1540 | { | ||
1541 | } | ||
1542 | |||
1543 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1544 | S32 getSize(); | ||
1545 | |||
1546 | LLScriptExpression *mExpression; | ||
1547 | }; | ||
1548 | |||
1549 | class LLScriptPreIncrement : public LLScriptExpression | ||
1550 | { | ||
1551 | public: | ||
1552 | LLScriptPreIncrement(S32 line, S32 col, LLScriptExpression *expression) | ||
1553 | : LLScriptExpression(line, col, LET_PRE_INCREMENT), mExpression(expression) | ||
1554 | { | ||
1555 | } | ||
1556 | |||
1557 | ~LLScriptPreIncrement() | ||
1558 | { | ||
1559 | } | ||
1560 | |||
1561 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1562 | S32 getSize(); | ||
1563 | |||
1564 | LLScriptExpression *mExpression; | ||
1565 | }; | ||
1566 | |||
1567 | class LLScriptPreDecrement : public LLScriptExpression | ||
1568 | { | ||
1569 | public: | ||
1570 | LLScriptPreDecrement(S32 line, S32 col, LLScriptExpression *expression) | ||
1571 | : LLScriptExpression(line, col, LET_PRE_DECREMENT), mExpression(expression) | ||
1572 | { | ||
1573 | } | ||
1574 | |||
1575 | ~LLScriptPreDecrement() | ||
1576 | { | ||
1577 | } | ||
1578 | |||
1579 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1580 | S32 getSize(); | ||
1581 | |||
1582 | LLScriptExpression *mExpression; | ||
1583 | }; | ||
1584 | |||
1585 | class LLScriptTypeCast : public LLScriptExpression | ||
1586 | { | ||
1587 | public: | ||
1588 | LLScriptTypeCast(S32 line, S32 col, LLScriptType *type, LLScriptExpression *expression) | ||
1589 | : LLScriptExpression(line, col, LET_CAST), mType(type), mExpression(expression) | ||
1590 | { | ||
1591 | } | ||
1592 | |||
1593 | ~LLScriptTypeCast() | ||
1594 | { | ||
1595 | } | ||
1596 | |||
1597 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1598 | S32 getSize(); | ||
1599 | |||
1600 | LLScriptType *mType; | ||
1601 | LLScriptExpression *mExpression; | ||
1602 | }; | ||
1603 | |||
1604 | class LLScriptVectorInitializer : public LLScriptExpression | ||
1605 | { | ||
1606 | public: | ||
1607 | LLScriptVectorInitializer(S32 line, S32 col, LLScriptExpression *expression1, | ||
1608 | LLScriptExpression *expression2, | ||
1609 | LLScriptExpression *expression3) | ||
1610 | : LLScriptExpression(line, col, LET_VECTOR_INITIALIZER), | ||
1611 | mExpression1(expression1), | ||
1612 | mExpression2(expression2), | ||
1613 | mExpression3(expression3) | ||
1614 | { | ||
1615 | } | ||
1616 | |||
1617 | ~LLScriptVectorInitializer() | ||
1618 | { | ||
1619 | } | ||
1620 | |||
1621 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1622 | S32 getSize(); | ||
1623 | |||
1624 | LLScriptExpression *mExpression1; | ||
1625 | LLScriptExpression *mExpression2; | ||
1626 | LLScriptExpression *mExpression3; | ||
1627 | }; | ||
1628 | |||
1629 | class LLScriptQuaternionInitializer : public LLScriptExpression | ||
1630 | { | ||
1631 | public: | ||
1632 | LLScriptQuaternionInitializer(S32 line, S32 col, LLScriptExpression *expression1, | ||
1633 | LLScriptExpression *expression2, | ||
1634 | LLScriptExpression *expression3, | ||
1635 | LLScriptExpression *expression4) | ||
1636 | : LLScriptExpression(line, col, LET_VECTOR_INITIALIZER), | ||
1637 | mExpression1(expression1), | ||
1638 | mExpression2(expression2), | ||
1639 | mExpression3(expression3), | ||
1640 | mExpression4(expression4) | ||
1641 | { | ||
1642 | } | ||
1643 | |||
1644 | ~LLScriptQuaternionInitializer() | ||
1645 | { | ||
1646 | } | ||
1647 | |||
1648 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1649 | S32 getSize(); | ||
1650 | |||
1651 | LLScriptExpression *mExpression1; | ||
1652 | LLScriptExpression *mExpression2; | ||
1653 | LLScriptExpression *mExpression3; | ||
1654 | LLScriptExpression *mExpression4; | ||
1655 | }; | ||
1656 | |||
1657 | class LLScriptListInitializer : public LLScriptExpression | ||
1658 | { | ||
1659 | public: | ||
1660 | LLScriptListInitializer(S32 line, S32 col, LLScriptExpression *expressionlist) | ||
1661 | : LLScriptExpression(line, col, LET_LIST_INITIALIZER), mExpressionList(expressionlist) | ||
1662 | { | ||
1663 | } | ||
1664 | |||
1665 | ~LLScriptListInitializer() | ||
1666 | { | ||
1667 | } | ||
1668 | |||
1669 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1670 | S32 getSize(); | ||
1671 | |||
1672 | LLScriptExpression *mExpressionList; | ||
1673 | }; | ||
1674 | |||
1675 | class LLScriptPostIncrement : public LLScriptExpression | ||
1676 | { | ||
1677 | public: | ||
1678 | LLScriptPostIncrement(S32 line, S32 col, LLScriptExpression *expression) | ||
1679 | : LLScriptExpression(line, col, LET_POST_INCREMENT), mExpression(expression) | ||
1680 | { | ||
1681 | } | ||
1682 | |||
1683 | ~LLScriptPostIncrement() | ||
1684 | { | ||
1685 | } | ||
1686 | |||
1687 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1688 | S32 getSize(); | ||
1689 | |||
1690 | LLScriptExpression *mExpression; | ||
1691 | }; | ||
1692 | |||
1693 | class LLScriptPostDecrement : public LLScriptExpression | ||
1694 | { | ||
1695 | public: | ||
1696 | LLScriptPostDecrement(S32 line, S32 col, LLScriptExpression *expression) | ||
1697 | : LLScriptExpression(line, col, LET_POST_DECREMENT), mExpression(expression) | ||
1698 | { | ||
1699 | } | ||
1700 | |||
1701 | ~LLScriptPostDecrement() | ||
1702 | { | ||
1703 | } | ||
1704 | |||
1705 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1706 | S32 getSize(); | ||
1707 | |||
1708 | LLScriptExpression *mExpression; | ||
1709 | }; | ||
1710 | |||
1711 | class LLScriptFunctionCall : public LLScriptExpression | ||
1712 | { | ||
1713 | public: | ||
1714 | LLScriptFunctionCall(S32 line, S32 col, LLScriptIdentifier *identifier, LLScriptExpression *expressionlist) | ||
1715 | : LLScriptExpression(line, col, LET_FUNCTION_CALL), mIdentifier(identifier), mExpressionList(expressionlist) | ||
1716 | { | ||
1717 | } | ||
1718 | |||
1719 | ~LLScriptFunctionCall() | ||
1720 | { | ||
1721 | } | ||
1722 | |||
1723 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1724 | S32 getSize(); | ||
1725 | |||
1726 | LLScriptIdentifier *mIdentifier; | ||
1727 | LLScriptExpression *mExpressionList; | ||
1728 | }; | ||
1729 | |||
1730 | class LLScriptPrint : public LLScriptExpression | ||
1731 | { | ||
1732 | public: | ||
1733 | LLScriptPrint(S32 line, S32 col, LLScriptExpression *expression) | ||
1734 | : LLScriptExpression(line, col, LET_PRINT), mExpression(expression) | ||
1735 | { | ||
1736 | } | ||
1737 | |||
1738 | ~LLScriptPrint() | ||
1739 | { | ||
1740 | } | ||
1741 | |||
1742 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1743 | S32 getSize(); | ||
1744 | |||
1745 | LLScriptExpression *mExpression; | ||
1746 | }; | ||
1747 | |||
1748 | class LLScriptConstantExpression : public LLScriptExpression | ||
1749 | { | ||
1750 | public: | ||
1751 | LLScriptConstantExpression(S32 line, S32 col, LLScriptConstant *constant) | ||
1752 | : LLScriptExpression(line, col, LET_CONSTANT), mConstant(constant) | ||
1753 | { | ||
1754 | } | ||
1755 | |||
1756 | ~LLScriptConstantExpression() | ||
1757 | { | ||
1758 | } | ||
1759 | |||
1760 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1761 | S32 getSize(); | ||
1762 | |||
1763 | LLScriptConstant *mConstant; | ||
1764 | }; | ||
1765 | |||
1766 | // statement | ||
1767 | typedef enum e_lscript_statement_types | ||
1768 | { | ||
1769 | LSSMT_NULL, | ||
1770 | LSSMT_SEQUENCE, | ||
1771 | LSSMT_NOOP, | ||
1772 | LSSMT_STATE_CHANGE, | ||
1773 | LSSMT_JUMP, | ||
1774 | LSSMT_LABEL, | ||
1775 | LSSMT_RETURN, | ||
1776 | LSSMT_EXPRESSION, | ||
1777 | LSSMT_IF, | ||
1778 | LSSMT_IF_ELSE, | ||
1779 | LSSMT_FOR, | ||
1780 | LSSMT_DO_WHILE, | ||
1781 | LSSMT_WHILE, | ||
1782 | LSSMT_DECLARATION, | ||
1783 | LSSMT_COMPOUND_STATEMENT, | ||
1784 | LSSMT_EOF | ||
1785 | } LSCRIPTStatementType; | ||
1786 | |||
1787 | class LLScriptStatement : public LLScriptFilePosition | ||
1788 | { | ||
1789 | public: | ||
1790 | LLScriptStatement(S32 line, S32 col, LSCRIPTStatementType type) | ||
1791 | : LLScriptFilePosition(line, col), mType(type), mNextp(NULL), mStatementScope(NULL), mAllowDeclarations(TRUE) | ||
1792 | { | ||
1793 | } | ||
1794 | |||
1795 | virtual ~LLScriptStatement() | ||
1796 | { | ||
1797 | delete mStatementScope; | ||
1798 | } | ||
1799 | |||
1800 | void addStatement(LLScriptStatement *event); | ||
1801 | |||
1802 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1803 | |||
1804 | void gonext(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1805 | S32 getSize(); | ||
1806 | |||
1807 | LSCRIPTStatementType mType; | ||
1808 | LLScriptStatement *mNextp; | ||
1809 | LLScriptScope *mStatementScope; | ||
1810 | BOOL mAllowDeclarations; | ||
1811 | }; | ||
1812 | |||
1813 | class LLScriptStatementSequence : public LLScriptStatement | ||
1814 | { | ||
1815 | public: | ||
1816 | LLScriptStatementSequence(S32 line, S32 col, LLScriptStatement *first, LLScriptStatement *second) | ||
1817 | : LLScriptStatement(line, col, LSSMT_SEQUENCE), mFirstp(first), mSecondp(second) | ||
1818 | { | ||
1819 | } | ||
1820 | |||
1821 | ~LLScriptStatementSequence() | ||
1822 | { | ||
1823 | } | ||
1824 | |||
1825 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1826 | S32 getSize(); | ||
1827 | |||
1828 | LLScriptStatement *mFirstp; | ||
1829 | LLScriptStatement *mSecondp; | ||
1830 | }; | ||
1831 | |||
1832 | class LLScriptNOOP : public LLScriptStatement | ||
1833 | { | ||
1834 | public: | ||
1835 | LLScriptNOOP(S32 line, S32 col) | ||
1836 | : LLScriptStatement(line, col, LSSMT_NOOP) | ||
1837 | { | ||
1838 | } | ||
1839 | |||
1840 | ~LLScriptNOOP() {} | ||
1841 | |||
1842 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1843 | S32 getSize(); | ||
1844 | }; | ||
1845 | |||
1846 | class LLScriptStateChange : public LLScriptStatement | ||
1847 | { | ||
1848 | public: | ||
1849 | LLScriptStateChange(S32 line, S32 col, LLScriptIdentifier *identifier) | ||
1850 | : LLScriptStatement(line, col, LSSMT_STATE_CHANGE), mIdentifier(identifier) | ||
1851 | { | ||
1852 | } | ||
1853 | |||
1854 | ~LLScriptStateChange() | ||
1855 | { | ||
1856 | } | ||
1857 | |||
1858 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1859 | S32 getSize(); | ||
1860 | |||
1861 | LLScriptIdentifier *mIdentifier; | ||
1862 | }; | ||
1863 | |||
1864 | class LLScriptJump : public LLScriptStatement | ||
1865 | { | ||
1866 | public: | ||
1867 | LLScriptJump(S32 line, S32 col, LLScriptIdentifier *identifier) | ||
1868 | : LLScriptStatement(line, col, LSSMT_JUMP), mIdentifier(identifier) | ||
1869 | { | ||
1870 | } | ||
1871 | |||
1872 | ~LLScriptJump() | ||
1873 | { | ||
1874 | } | ||
1875 | |||
1876 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1877 | S32 getSize(); | ||
1878 | |||
1879 | LLScriptIdentifier *mIdentifier; | ||
1880 | }; | ||
1881 | |||
1882 | class LLScriptLabel : public LLScriptStatement | ||
1883 | { | ||
1884 | public: | ||
1885 | LLScriptLabel(S32 line, S32 col, LLScriptIdentifier *identifier) | ||
1886 | : LLScriptStatement(line, col, LSSMT_LABEL), mIdentifier(identifier) | ||
1887 | { | ||
1888 | } | ||
1889 | |||
1890 | ~LLScriptLabel() | ||
1891 | { | ||
1892 | } | ||
1893 | |||
1894 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1895 | S32 getSize(); | ||
1896 | |||
1897 | LLScriptIdentifier *mIdentifier; | ||
1898 | }; | ||
1899 | |||
1900 | class LLScriptReturn : public LLScriptStatement | ||
1901 | { | ||
1902 | public: | ||
1903 | LLScriptReturn(S32 line, S32 col, LLScriptExpression *expression) | ||
1904 | : LLScriptStatement(line, col, LSSMT_RETURN), mExpression(expression), mType(LST_NULL) | ||
1905 | { | ||
1906 | } | ||
1907 | |||
1908 | ~LLScriptReturn() | ||
1909 | { | ||
1910 | } | ||
1911 | |||
1912 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1913 | S32 getSize(); | ||
1914 | |||
1915 | LLScriptExpression *mExpression; | ||
1916 | LSCRIPTType mType; | ||
1917 | }; | ||
1918 | |||
1919 | class LLScriptExpressionStatement : public LLScriptStatement | ||
1920 | { | ||
1921 | public: | ||
1922 | LLScriptExpressionStatement(S32 line, S32 col, LLScriptExpression *expression) | ||
1923 | : LLScriptStatement(line, col, LSSMT_EXPRESSION), mExpression(expression) | ||
1924 | { | ||
1925 | } | ||
1926 | |||
1927 | ~LLScriptExpressionStatement() | ||
1928 | { | ||
1929 | } | ||
1930 | |||
1931 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1932 | S32 getSize(); | ||
1933 | |||
1934 | LLScriptExpression *mExpression; | ||
1935 | }; | ||
1936 | |||
1937 | class LLScriptIf : public LLScriptStatement | ||
1938 | { | ||
1939 | public: | ||
1940 | LLScriptIf(S32 line, S32 col, LLScriptExpression *expression, LLScriptStatement *statement) | ||
1941 | : LLScriptStatement(line, col, LSSMT_IF), mType(LST_NULL), mExpression(expression), mStatement(statement) | ||
1942 | { | ||
1943 | } | ||
1944 | |||
1945 | ~LLScriptIf() | ||
1946 | { | ||
1947 | } | ||
1948 | |||
1949 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1950 | S32 getSize(); | ||
1951 | |||
1952 | LSCRIPTType mType; | ||
1953 | LLScriptExpression *mExpression; | ||
1954 | LLScriptStatement *mStatement; | ||
1955 | }; | ||
1956 | |||
1957 | class LLScriptIfElse : public LLScriptStatement | ||
1958 | { | ||
1959 | public: | ||
1960 | LLScriptIfElse(S32 line, S32 col, LLScriptExpression *expression, LLScriptStatement *statement1, LLScriptStatement *statement2) | ||
1961 | : LLScriptStatement(line, col, LSSMT_IF_ELSE), mExpression(expression), mStatement1(statement1), mStatement2(statement2), mType(LST_NULL) | ||
1962 | { | ||
1963 | } | ||
1964 | |||
1965 | ~LLScriptIfElse() | ||
1966 | { | ||
1967 | } | ||
1968 | |||
1969 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1970 | S32 getSize(); | ||
1971 | |||
1972 | LLScriptExpression *mExpression; | ||
1973 | LLScriptStatement *mStatement1; | ||
1974 | LLScriptStatement *mStatement2; | ||
1975 | LSCRIPTType mType; | ||
1976 | }; | ||
1977 | |||
1978 | class LLScriptFor : public LLScriptStatement | ||
1979 | { | ||
1980 | public: | ||
1981 | LLScriptFor(S32 line, S32 col, LLScriptExpression *sequence, LLScriptExpression *expression, LLScriptExpression *expressionlist, LLScriptStatement *statement) | ||
1982 | : LLScriptStatement(line, col, LSSMT_FOR), mSequence(sequence), mExpression(expression), mExpressionList(expressionlist), mStatement(statement), mType(LST_NULL) | ||
1983 | { | ||
1984 | } | ||
1985 | |||
1986 | ~LLScriptFor() | ||
1987 | { | ||
1988 | } | ||
1989 | |||
1990 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
1991 | S32 getSize(); | ||
1992 | |||
1993 | LLScriptExpression *mSequence; | ||
1994 | LLScriptExpression *mExpression; | ||
1995 | LLScriptExpression *mExpressionList; | ||
1996 | LLScriptStatement *mStatement; | ||
1997 | LSCRIPTType mType; | ||
1998 | }; | ||
1999 | |||
2000 | class LLScriptDoWhile : public LLScriptStatement | ||
2001 | { | ||
2002 | public: | ||
2003 | LLScriptDoWhile(S32 line, S32 col, LLScriptStatement *statement, LLScriptExpression *expression) | ||
2004 | : LLScriptStatement(line, col, LSSMT_DO_WHILE), mStatement(statement), mExpression(expression), mType(LST_NULL) | ||
2005 | { | ||
2006 | } | ||
2007 | |||
2008 | ~LLScriptDoWhile() | ||
2009 | { | ||
2010 | } | ||
2011 | |||
2012 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
2013 | S32 getSize(); | ||
2014 | |||
2015 | LLScriptStatement *mStatement; | ||
2016 | LLScriptExpression *mExpression; | ||
2017 | LSCRIPTType mType; | ||
2018 | }; | ||
2019 | |||
2020 | class LLScriptWhile : public LLScriptStatement | ||
2021 | { | ||
2022 | public: | ||
2023 | LLScriptWhile(S32 line, S32 col, LLScriptExpression *expression, LLScriptStatement *statement) | ||
2024 | : LLScriptStatement(line, col, LSSMT_WHILE), mExpression(expression), mStatement(statement), mType(LST_NULL) | ||
2025 | { | ||
2026 | } | ||
2027 | |||
2028 | ~LLScriptWhile() | ||
2029 | { | ||
2030 | } | ||
2031 | |||
2032 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
2033 | S32 getSize(); | ||
2034 | |||
2035 | LLScriptExpression *mExpression; | ||
2036 | LLScriptStatement *mStatement; | ||
2037 | LSCRIPTType mType; | ||
2038 | }; | ||
2039 | |||
2040 | // local variables | ||
2041 | class LLScriptDeclaration : public LLScriptStatement | ||
2042 | { | ||
2043 | public: | ||
2044 | LLScriptDeclaration(S32 line, S32 col, LLScriptType *type, LLScriptIdentifier *identifier, LLScriptExpression *expression) | ||
2045 | : LLScriptStatement(line, col, LSSMT_DECLARATION), mType(type), mIdentifier(identifier), mExpression(expression) | ||
2046 | { | ||
2047 | } | ||
2048 | |||
2049 | ~LLScriptDeclaration() | ||
2050 | { | ||
2051 | } | ||
2052 | |||
2053 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
2054 | S32 getSize(); | ||
2055 | |||
2056 | LLScriptType *mType; | ||
2057 | LLScriptIdentifier *mIdentifier; | ||
2058 | LLScriptExpression *mExpression; | ||
2059 | }; | ||
2060 | |||
2061 | class LLScriptCompoundStatement : public LLScriptStatement | ||
2062 | { | ||
2063 | public: | ||
2064 | LLScriptCompoundStatement(S32 line, S32 col, LLScriptStatement *statement) | ||
2065 | : LLScriptStatement(line, col, LSSMT_COMPOUND_STATEMENT), mStatement(statement) | ||
2066 | { | ||
2067 | } | ||
2068 | |||
2069 | ~LLScriptCompoundStatement() | ||
2070 | { | ||
2071 | } | ||
2072 | |||
2073 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
2074 | S32 getSize(); | ||
2075 | |||
2076 | LLScriptStatement *mStatement; | ||
2077 | }; | ||
2078 | |||
2079 | class LLScriptEventHandler : public LLScriptFilePosition | ||
2080 | { | ||
2081 | public: | ||
2082 | LLScriptEventHandler(S32 line, S32 col, LLScriptEvent *event, LLScriptStatement *statement) | ||
2083 | : LLScriptFilePosition(line, col), mEventp(event), mStatement(statement), mNextp(NULL), mEventScope(NULL), mbNeedTrailingReturn(FALSE), mScopeEntry(NULL), mStackSpace(0) | ||
2084 | { | ||
2085 | } | ||
2086 | |||
2087 | ~LLScriptEventHandler() | ||
2088 | { | ||
2089 | delete mEventScope; | ||
2090 | delete mScopeEntry; | ||
2091 | } | ||
2092 | |||
2093 | void addEvent(LLScriptEventHandler *event); | ||
2094 | |||
2095 | void gonext(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
2096 | |||
2097 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
2098 | S32 getSize(); | ||
2099 | |||
2100 | LLScriptEvent *mEventp; | ||
2101 | LLScriptStatement *mStatement; | ||
2102 | LLScriptEventHandler *mNextp; | ||
2103 | LLScriptScope *mEventScope; | ||
2104 | BOOL mbNeedTrailingReturn; | ||
2105 | LLScriptScopeEntry *mScopeEntry; | ||
2106 | |||
2107 | S32 mStackSpace; | ||
2108 | |||
2109 | }; | ||
2110 | |||
2111 | |||
2112 | // global functions | ||
2113 | class LLScriptFunctionDec : public LLScriptFilePosition | ||
2114 | { | ||
2115 | public: | ||
2116 | LLScriptFunctionDec(S32 line, S32 col, LLScriptType *type, LLScriptIdentifier *identifier) | ||
2117 | : LLScriptFilePosition(line, col), mType(type), mIdentifier(identifier), mNextp(NULL) | ||
2118 | { | ||
2119 | } | ||
2120 | |||
2121 | ~LLScriptFunctionDec() | ||
2122 | { | ||
2123 | } | ||
2124 | |||
2125 | void addFunctionParameter(LLScriptFunctionDec *dec); | ||
2126 | |||
2127 | void gonext(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
2128 | |||
2129 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
2130 | S32 getSize(); | ||
2131 | |||
2132 | LLScriptType *mType; | ||
2133 | LLScriptIdentifier *mIdentifier; | ||
2134 | LLScriptFunctionDec *mNextp; | ||
2135 | }; | ||
2136 | |||
2137 | class LLScriptGlobalFunctions : public LLScriptFilePosition | ||
2138 | { | ||
2139 | public: | ||
2140 | LLScriptGlobalFunctions(S32 line, S32 col, LLScriptType *type, | ||
2141 | LLScriptIdentifier *identifier, | ||
2142 | LLScriptFunctionDec *parameters, | ||
2143 | LLScriptStatement *statements) | ||
2144 | : LLScriptFilePosition(line, col), mType(type), mIdentifier(identifier), mParameters(parameters), mStatements(statements), mNextp(NULL), mFunctionScope(NULL), mbNeedTrailingReturn(FALSE) | ||
2145 | { | ||
2146 | } | ||
2147 | |||
2148 | void addGlobalFunction(LLScriptGlobalFunctions *global); | ||
2149 | |||
2150 | ~LLScriptGlobalFunctions() | ||
2151 | { | ||
2152 | delete mFunctionScope; | ||
2153 | } | ||
2154 | |||
2155 | void gonext(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
2156 | |||
2157 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
2158 | S32 getSize(); | ||
2159 | |||
2160 | LLScriptType *mType; | ||
2161 | LLScriptIdentifier *mIdentifier; | ||
2162 | LLScriptFunctionDec *mParameters; | ||
2163 | LLScriptStatement *mStatements; | ||
2164 | LLScriptGlobalFunctions *mNextp; | ||
2165 | LLScriptScope *mFunctionScope; | ||
2166 | BOOL mbNeedTrailingReturn; | ||
2167 | |||
2168 | }; | ||
2169 | |||
2170 | typedef enum e_lscript_state_type | ||
2171 | { | ||
2172 | LSSTYPE_NULL, | ||
2173 | LSSTYPE_DEFAULT, | ||
2174 | LSSTYPE_USER, | ||
2175 | LSSTYPE_EOF | ||
2176 | } LSCRIPTStateType; | ||
2177 | |||
2178 | // info on state | ||
2179 | class LLScriptState : public LLScriptFilePosition | ||
2180 | { | ||
2181 | public: | ||
2182 | LLScriptState(S32 line, S32 col, LSCRIPTStateType type, LLScriptIdentifier *identifier, LLScriptEventHandler *event) | ||
2183 | : LLScriptFilePosition(line, col), mType(type), mIdentifier(identifier), mEvent(event), mNextp(NULL) | ||
2184 | { | ||
2185 | } | ||
2186 | |||
2187 | void addState(LLScriptState *state); | ||
2188 | |||
2189 | ~LLScriptState() | ||
2190 | { | ||
2191 | } | ||
2192 | |||
2193 | void gonext(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
2194 | |||
2195 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
2196 | S32 getSize(); | ||
2197 | |||
2198 | LSCRIPTStateType mType; | ||
2199 | LLScriptIdentifier *mIdentifier; | ||
2200 | LLScriptEventHandler *mEvent; | ||
2201 | LLScriptState *mNextp; | ||
2202 | |||
2203 | }; | ||
2204 | |||
2205 | class LLScritpGlobalStorage : public LLScriptFilePosition | ||
2206 | { | ||
2207 | public: | ||
2208 | |||
2209 | LLScritpGlobalStorage(LLScriptGlobalVariable *var) | ||
2210 | : LLScriptFilePosition(0, 0), mGlobal(var), mbGlobalFunction(FALSE), mNextp(NULL) | ||
2211 | { | ||
2212 | } | ||
2213 | |||
2214 | LLScritpGlobalStorage(LLScriptGlobalFunctions *func) | ||
2215 | : LLScriptFilePosition(0, 0), mGlobal(func), mbGlobalFunction(TRUE), mNextp(NULL) | ||
2216 | { | ||
2217 | } | ||
2218 | |||
2219 | ~LLScritpGlobalStorage() | ||
2220 | { | ||
2221 | } | ||
2222 | |||
2223 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata) | ||
2224 | { | ||
2225 | } | ||
2226 | |||
2227 | S32 getSize() | ||
2228 | { | ||
2229 | return 0; | ||
2230 | } | ||
2231 | |||
2232 | void addGlobal(LLScritpGlobalStorage *global) | ||
2233 | { | ||
2234 | if (mNextp) | ||
2235 | { | ||
2236 | global->mNextp = mNextp; | ||
2237 | } | ||
2238 | mNextp = global; | ||
2239 | } | ||
2240 | |||
2241 | LLScriptFilePosition *mGlobal; | ||
2242 | BOOL mbGlobalFunction; | ||
2243 | LLScritpGlobalStorage *mNextp; | ||
2244 | }; | ||
2245 | |||
2246 | // top level container for entire script | ||
2247 | class LLScriptScript : public LLScriptFilePosition | ||
2248 | { | ||
2249 | public: | ||
2250 | LLScriptScript(LLScritpGlobalStorage *globals, | ||
2251 | LLScriptState *states); | ||
2252 | |||
2253 | ~LLScriptScript() | ||
2254 | { | ||
2255 | delete mGlobalScope; | ||
2256 | } | ||
2257 | |||
2258 | void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata); | ||
2259 | S32 getSize(); | ||
2260 | |||
2261 | void setBytecodeDest(const char* dst_filename); | ||
2262 | |||
2263 | LLScriptState *mStates; | ||
2264 | LLScriptScope *mGlobalScope; | ||
2265 | LLScriptGlobalVariable *mGlobals; | ||
2266 | LLScriptGlobalFunctions *mGlobalFunctions; | ||
2267 | BOOL mGodLike; | ||
2268 | |||
2269 | private: | ||
2270 | char mBytecodeDest[MAX_STRING]; | ||
2271 | }; | ||
2272 | |||
2273 | class LLScriptAllocationManager | ||
2274 | { | ||
2275 | public: | ||
2276 | LLScriptAllocationManager() {} | ||
2277 | ~LLScriptAllocationManager() | ||
2278 | { | ||
2279 | mAllocationList.deleteAllData(); | ||
2280 | } | ||
2281 | |||
2282 | void addAllocation(LLScriptFilePosition *ptr) | ||
2283 | { | ||
2284 | mAllocationList.addData(ptr); | ||
2285 | } | ||
2286 | |||
2287 | void deleteAllocations() | ||
2288 | { | ||
2289 | mAllocationList.deleteAllData(); | ||
2290 | } | ||
2291 | |||
2292 | LLLinkedList<LLScriptFilePosition> mAllocationList; | ||
2293 | }; | ||
2294 | |||
2295 | extern LLScriptAllocationManager *gAllocationManager; | ||
2296 | extern LLScriptScript *gScriptp; | ||
2297 | |||
2298 | #endif | ||