lscript_tree.h
上传用户:king477883
上传日期:2021-03-01
资源大小:9553k
文件大小:83k
源码类别:

游戏引擎

开发平台:

C++ Builder

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