PageRenderTime 30ms CodeModel.GetById 11ms RepoModel.GetById 1ms app.codeStats 0ms

/indra/lscript/lscript_compile/lscript_tree.h

https://bitbucket.org/lindenlab/viewer-beta/
C++ Header | 1775 lines | 1372 code | 369 blank | 34 comment | 0 complexity | 4f055ca2f4662a7c815d140d1f6b186f MD5 | raw file
Possible License(s): LGPL-2.1
  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=viewerlgpl$
  6. * Second Life Viewer Source Code
  7. * Copyright (C) 2010, Linden Research, Inc.
  8. *
  9. * This library is free software; you can redistribute it and/or
  10. * modify it under the terms of the GNU Lesser General Public
  11. * License as published by the Free Software Foundation;
  12. * version 2.1 of the License only.
  13. *
  14. * This library is distributed in the hope that it will be useful,
  15. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  17. * Lesser General Public License for more details.
  18. *
  19. * You should have received a copy of the GNU Lesser General Public
  20. * License along with this library; if not, write to the Free Software
  21. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  22. *
  23. * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
  24. * $/LicenseInfo$
  25. */
  26. #ifndef LL_LSCRIPT_TREE_H
  27. #define LL_LSCRIPT_TREE_H
  28. #include "v3math.h"
  29. #include "llquaternion.h"
  30. #include "linked_lists.h"
  31. #include "lscript_error.h"
  32. #include "lscript_typecheck.h"
  33. #include "lscript_byteformat.h"
  34. // Nota Bene: Class destructors don't delete pointed to classes because it isn't guaranteed that lex/yacc will build
  35. // complete data structures. Instead various chunks that are allocated are stored and deleted by allocation lists
  36. class LLScriptType : public LLScriptFilePosition
  37. {
  38. public:
  39. LLScriptType(S32 line, S32 col, LSCRIPTType type)
  40. : LLScriptFilePosition(line, col), mType(type)
  41. {
  42. }
  43. ~LLScriptType() {}
  44. 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);
  45. S32 getSize();
  46. LSCRIPTType mType;
  47. };
  48. // contains a literal or constant value
  49. class LLScriptConstant : public LLScriptFilePosition
  50. {
  51. public:
  52. LLScriptConstant(S32 line, S32 col, LSCRIPTType type)
  53. : LLScriptFilePosition(line, col), mType(type)
  54. {
  55. }
  56. virtual ~LLScriptConstant() {}
  57. 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);
  58. S32 getSize();
  59. LSCRIPTType mType;
  60. };
  61. class LLScriptConstantInteger : public LLScriptConstant
  62. {
  63. public:
  64. LLScriptConstantInteger(S32 line, S32 col, S32 value)
  65. : LLScriptConstant(line, col, LST_INTEGER), mValue(value)
  66. {
  67. }
  68. ~LLScriptConstantInteger() {}
  69. 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);
  70. S32 getSize();
  71. S32 mValue;
  72. };
  73. class LLScriptConstantFloat : public LLScriptConstant
  74. {
  75. public:
  76. LLScriptConstantFloat(S32 line, S32 col, F32 value)
  77. : LLScriptConstant(line, col, LST_FLOATINGPOINT), mValue(value)
  78. {
  79. }
  80. ~LLScriptConstantFloat() {}
  81. 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);
  82. S32 getSize();
  83. F32 mValue;
  84. };
  85. class LLScriptConstantString : public LLScriptConstant
  86. {
  87. public:
  88. LLScriptConstantString(S32 line, S32 col, char *value)
  89. : LLScriptConstant(line, col, LST_STRING), mValue(value)
  90. {
  91. }
  92. ~LLScriptConstantString()
  93. {
  94. delete [] mValue;
  95. mValue = NULL;
  96. }
  97. 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);
  98. S32 getSize();
  99. char *mValue;
  100. };
  101. // container for individual identifiers
  102. class LLScriptIdentifier : public LLScriptFilePosition
  103. {
  104. public:
  105. LLScriptIdentifier(S32 line, S32 col, char *name, LLScriptType *type = NULL)
  106. : LLScriptFilePosition(line, col), mName(name), mScopeEntry(NULL), mType(type)
  107. {
  108. }
  109. ~LLScriptIdentifier()
  110. {
  111. delete [] mName;
  112. mName = NULL;
  113. }
  114. 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);
  115. S32 getSize();
  116. char *mName;
  117. LLScriptScopeEntry *mScopeEntry;
  118. LLScriptType *mType;
  119. };
  120. typedef enum e_lscript_simple_assignable_type
  121. {
  122. LSSAT_NULL,
  123. LSSAT_IDENTIFIER,
  124. LSSAT_CONSTANT,
  125. LSSAT_VECTOR_CONSTANT,
  126. LSSAT_QUATERNION_CONSTANT,
  127. LSSAT_LIST_CONSTANT,
  128. LSSAT_EOF
  129. } LSCRIPTSimpleAssignableType;
  130. class LLScriptSimpleAssignable : public LLScriptFilePosition
  131. {
  132. public:
  133. LLScriptSimpleAssignable(S32 line, S32 col, LSCRIPTSimpleAssignableType type)
  134. : LLScriptFilePosition(line, col), mType(type), mNextp(NULL)
  135. {
  136. }
  137. void addAssignable(LLScriptSimpleAssignable *assign);
  138. virtual ~LLScriptSimpleAssignable()
  139. {
  140. // don't delete next pointer because we're going to store allocation lists and delete from those
  141. }
  142. 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);
  143. S32 getSize();
  144. LSCRIPTSimpleAssignableType mType;
  145. LLScriptSimpleAssignable *mNextp;
  146. };
  147. class LLScriptSAIdentifier : public LLScriptSimpleAssignable
  148. {
  149. public:
  150. LLScriptSAIdentifier(S32 line, S32 col, LLScriptIdentifier *identifier)
  151. : LLScriptSimpleAssignable(line, col, LSSAT_IDENTIFIER), mIdentifier(identifier)
  152. {
  153. }
  154. ~LLScriptSAIdentifier()
  155. {
  156. }
  157. 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);
  158. S32 getSize();
  159. LLScriptIdentifier *mIdentifier;
  160. };
  161. class LLScriptSAConstant : public LLScriptSimpleAssignable
  162. {
  163. public:
  164. LLScriptSAConstant(S32 line, S32 col, LLScriptConstant *constant)
  165. : LLScriptSimpleAssignable(line, col, LSSAT_CONSTANT), mConstant(constant)
  166. {
  167. }
  168. ~LLScriptSAConstant()
  169. {
  170. }
  171. 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);
  172. S32 getSize();
  173. LLScriptConstant *mConstant;
  174. };
  175. class LLScriptSAVector : public LLScriptSimpleAssignable
  176. {
  177. public:
  178. LLScriptSAVector(S32 line, S32 col, LLScriptSimpleAssignable *e1,
  179. LLScriptSimpleAssignable *e2,
  180. LLScriptSimpleAssignable *e3)
  181. : LLScriptSimpleAssignable(line, col, LSSAT_VECTOR_CONSTANT),
  182. mEntry1(e1), mEntry2(e2), mEntry3(e3)
  183. {
  184. }
  185. ~LLScriptSAVector()
  186. {
  187. }
  188. 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);
  189. S32 getSize();
  190. LLScriptSimpleAssignable *mEntry1;
  191. LLScriptSimpleAssignable *mEntry2;
  192. LLScriptSimpleAssignable *mEntry3;
  193. };
  194. class LLScriptSAQuaternion : public LLScriptSimpleAssignable
  195. {
  196. public:
  197. LLScriptSAQuaternion(S32 line, S32 col, LLScriptSimpleAssignable *e1,
  198. LLScriptSimpleAssignable *e2,
  199. LLScriptSimpleAssignable *e3,
  200. LLScriptSimpleAssignable *e4)
  201. : LLScriptSimpleAssignable(line, col, LSSAT_QUATERNION_CONSTANT),
  202. mEntry1(e1), mEntry2(e2), mEntry3(e3), mEntry4(e4)
  203. {
  204. }
  205. ~LLScriptSAQuaternion()
  206. {
  207. }
  208. 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);
  209. S32 getSize();
  210. LLScriptSimpleAssignable *mEntry1;
  211. LLScriptSimpleAssignable *mEntry2;
  212. LLScriptSimpleAssignable *mEntry3;
  213. LLScriptSimpleAssignable *mEntry4;
  214. };
  215. class LLScriptSAList : public LLScriptSimpleAssignable
  216. {
  217. public:
  218. LLScriptSAList(S32 line, S32 col, LLScriptSimpleAssignable *elist)
  219. : LLScriptSimpleAssignable(line, col, LSSAT_QUATERNION_CONSTANT), mEntryList(elist)
  220. {
  221. }
  222. ~LLScriptSAList()
  223. {
  224. }
  225. 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);
  226. S32 getSize();
  227. LLScriptSimpleAssignable *mEntryList;
  228. };
  229. // global variables
  230. class LLScriptGlobalVariable : public LLScriptFilePosition
  231. {
  232. public:
  233. LLScriptGlobalVariable(S32 line, S32 col, LLScriptType *type,
  234. LLScriptIdentifier *identifier,
  235. LLScriptSimpleAssignable *assignable)
  236. : LLScriptFilePosition(line, col), mType(type), mIdentifier(identifier), mAssignable(assignable), mNextp(NULL), mAssignableType(LST_NULL)
  237. {
  238. }
  239. void addGlobal(LLScriptGlobalVariable *global);
  240. ~LLScriptGlobalVariable()
  241. {
  242. }
  243. 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);
  244. 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);
  245. S32 getSize();
  246. LLScriptType *mType;
  247. LLScriptIdentifier *mIdentifier;
  248. LLScriptSimpleAssignable *mAssignable;
  249. LLScriptGlobalVariable *mNextp;
  250. LSCRIPTType mAssignableType;
  251. };
  252. // events
  253. class LLScriptEvent : public LLScriptFilePosition
  254. {
  255. public:
  256. LLScriptEvent(S32 line, S32 col, LSCRIPTStateEventType type)
  257. : LLScriptFilePosition(line, col), mType(type)
  258. {
  259. }
  260. virtual ~LLScriptEvent()
  261. {
  262. // don't delete next pointer because we're going to store allocation lists and delete from those
  263. }
  264. 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);
  265. S32 getSize();
  266. LSCRIPTStateEventType mType;
  267. };
  268. class LLScriptStateEntryEvent : public LLScriptEvent
  269. {
  270. public:
  271. LLScriptStateEntryEvent(S32 line, S32 col)
  272. : LLScriptEvent(line, col, LSTT_STATE_ENTRY)
  273. {
  274. }
  275. 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);
  276. S32 getSize();
  277. ~LLScriptStateEntryEvent() {}
  278. };
  279. class LLScriptStateExitEvent : public LLScriptEvent
  280. {
  281. public:
  282. LLScriptStateExitEvent(S32 line, S32 col)
  283. : LLScriptEvent(line, col, LSTT_STATE_EXIT)
  284. {
  285. }
  286. ~LLScriptStateExitEvent() {}
  287. 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);
  288. S32 getSize();
  289. };
  290. class LLScriptTouchStartEvent : public LLScriptEvent
  291. {
  292. public:
  293. LLScriptTouchStartEvent(S32 line, S32 col, LLScriptIdentifier *count)
  294. : LLScriptEvent(line, col, LSTT_TOUCH_START), mCount(count)
  295. {
  296. }
  297. ~LLScriptTouchStartEvent()
  298. {
  299. }
  300. 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);
  301. S32 getSize();
  302. LLScriptIdentifier *mCount;
  303. };
  304. class LLScriptTouchEvent : public LLScriptEvent
  305. {
  306. public:
  307. LLScriptTouchEvent(S32 line, S32 col, LLScriptIdentifier *count)
  308. : LLScriptEvent(line, col, LSTT_TOUCH), mCount(count)
  309. {
  310. }
  311. ~LLScriptTouchEvent()
  312. {
  313. }
  314. 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);
  315. S32 getSize();
  316. LLScriptIdentifier *mCount;
  317. };
  318. class LLScriptTouchEndEvent : public LLScriptEvent
  319. {
  320. public:
  321. LLScriptTouchEndEvent(S32 line, S32 col, LLScriptIdentifier *count)
  322. : LLScriptEvent(line, col, LSTT_TOUCH_END), mCount(count)
  323. {
  324. }
  325. ~LLScriptTouchEndEvent()
  326. {
  327. }
  328. 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);
  329. S32 getSize();
  330. LLScriptIdentifier *mCount;
  331. };
  332. class LLScriptCollisionStartEvent : public LLScriptEvent
  333. {
  334. public:
  335. LLScriptCollisionStartEvent(S32 line, S32 col, LLScriptIdentifier *count)
  336. : LLScriptEvent(line, col, LSTT_COLLISION_START), mCount(count)
  337. {
  338. }
  339. ~LLScriptCollisionStartEvent()
  340. {
  341. }
  342. 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);
  343. S32 getSize();
  344. LLScriptIdentifier *mCount;
  345. };
  346. class LLScriptCollisionEvent : public LLScriptEvent
  347. {
  348. public:
  349. LLScriptCollisionEvent(S32 line, S32 col, LLScriptIdentifier *count)
  350. : LLScriptEvent(line, col, LSTT_COLLISION), mCount(count)
  351. {
  352. }
  353. ~LLScriptCollisionEvent()
  354. {
  355. }
  356. 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);
  357. S32 getSize();
  358. LLScriptIdentifier *mCount;
  359. };
  360. class LLScriptCollisionEndEvent : public LLScriptEvent
  361. {
  362. public:
  363. LLScriptCollisionEndEvent(S32 line, S32 col, LLScriptIdentifier *count)
  364. : LLScriptEvent(line, col, LSTT_COLLISION_END), mCount(count)
  365. {
  366. }
  367. ~LLScriptCollisionEndEvent()
  368. {
  369. }
  370. 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);
  371. S32 getSize();
  372. LLScriptIdentifier *mCount;
  373. };
  374. class LLScriptLandCollisionStartEvent : public LLScriptEvent
  375. {
  376. public:
  377. LLScriptLandCollisionStartEvent(S32 line, S32 col, LLScriptIdentifier *pos)
  378. : LLScriptEvent(line, col, LSTT_LAND_COLLISION_START), mPosition(pos)
  379. {
  380. }
  381. ~LLScriptLandCollisionStartEvent()
  382. {
  383. }
  384. 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);
  385. S32 getSize();
  386. LLScriptIdentifier *mPosition;
  387. };
  388. class LLScriptLandCollisionEvent : public LLScriptEvent
  389. {
  390. public:
  391. LLScriptLandCollisionEvent(S32 line, S32 col, LLScriptIdentifier *pos)
  392. : LLScriptEvent(line, col, LSTT_LAND_COLLISION), mPosition(pos)
  393. {
  394. }
  395. ~LLScriptLandCollisionEvent()
  396. {
  397. }
  398. 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);
  399. S32 getSize();
  400. LLScriptIdentifier *mPosition;
  401. };
  402. class LLScriptLandCollisionEndEvent : public LLScriptEvent
  403. {
  404. public:
  405. LLScriptLandCollisionEndEvent(S32 line, S32 col, LLScriptIdentifier *pos)
  406. : LLScriptEvent(line, col, LSTT_LAND_COLLISION_END), mPosition(pos)
  407. {
  408. }
  409. ~LLScriptLandCollisionEndEvent()
  410. {
  411. }
  412. 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);
  413. S32 getSize();
  414. LLScriptIdentifier *mPosition;
  415. };
  416. class LLScriptInventoryEvent : public LLScriptEvent
  417. {
  418. public:
  419. LLScriptInventoryEvent(S32 line, S32 col, LLScriptIdentifier *change)
  420. : LLScriptEvent(line, col, LSTT_INVENTORY), mChange(change)
  421. {
  422. }
  423. ~LLScriptInventoryEvent() {}
  424. 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);
  425. S32 getSize();
  426. LLScriptIdentifier *mChange;
  427. };
  428. class LLScriptAttachEvent : public LLScriptEvent
  429. {
  430. public:
  431. LLScriptAttachEvent(S32 line, S32 col, LLScriptIdentifier *attach)
  432. : LLScriptEvent(line, col, LSTT_ATTACH), mAttach(attach)
  433. {
  434. }
  435. ~LLScriptAttachEvent() {}
  436. 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);
  437. S32 getSize();
  438. LLScriptIdentifier *mAttach;
  439. };
  440. class LLScriptDataserverEvent : public LLScriptEvent
  441. {
  442. public:
  443. LLScriptDataserverEvent(S32 line, S32 col, LLScriptIdentifier *id, LLScriptIdentifier *data)
  444. : LLScriptEvent(line, col, LSTT_DATASERVER), mID(id), mData(data)
  445. {
  446. }
  447. ~LLScriptDataserverEvent() {}
  448. 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);
  449. S32 getSize();
  450. LLScriptIdentifier *mID;
  451. LLScriptIdentifier *mData;
  452. };
  453. class LLScriptTimerEvent : public LLScriptEvent
  454. {
  455. public:
  456. LLScriptTimerEvent(S32 line, S32 col)
  457. : LLScriptEvent(line, col, LSTT_TIMER)
  458. {
  459. }
  460. ~LLScriptTimerEvent() {}
  461. 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);
  462. S32 getSize();
  463. };
  464. class LLScriptMovingStartEvent : public LLScriptEvent
  465. {
  466. public:
  467. LLScriptMovingStartEvent(S32 line, S32 col)
  468. : LLScriptEvent(line, col, LSTT_MOVING_START)
  469. {
  470. }
  471. ~LLScriptMovingStartEvent() {}
  472. 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);
  473. S32 getSize();
  474. };
  475. class LLScriptMovingEndEvent : public LLScriptEvent
  476. {
  477. public:
  478. LLScriptMovingEndEvent(S32 line, S32 col)
  479. : LLScriptEvent(line, col, LSTT_MOVING_END)
  480. {
  481. }
  482. ~LLScriptMovingEndEvent() {}
  483. 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);
  484. S32 getSize();
  485. };
  486. class LLScriptRTPEvent : public LLScriptEvent
  487. {
  488. public:
  489. LLScriptRTPEvent(S32 line, S32 col, LLScriptIdentifier *rtperm)
  490. : LLScriptEvent(line, col, LSTT_RTPERMISSIONS), mRTPermissions(rtperm)
  491. {
  492. }
  493. ~LLScriptRTPEvent() {}
  494. 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);
  495. S32 getSize();
  496. LLScriptIdentifier *mRTPermissions;
  497. };
  498. class LLScriptChatEvent : public LLScriptEvent
  499. {
  500. public:
  501. LLScriptChatEvent(S32 line, S32 col, LLScriptIdentifier *channel, LLScriptIdentifier *name, LLScriptIdentifier *id, LLScriptIdentifier *message)
  502. : LLScriptEvent(line, col, LSTT_CHAT), mChannel(channel), mName(name), mID(id), mMessage(message)
  503. {
  504. }
  505. ~LLScriptChatEvent()
  506. {
  507. }
  508. 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);
  509. S32 getSize();
  510. LLScriptIdentifier *mChannel;
  511. LLScriptIdentifier *mName;
  512. LLScriptIdentifier *mID;
  513. LLScriptIdentifier *mMessage;
  514. };
  515. class LLScriptObjectRezEvent : public LLScriptEvent
  516. {
  517. public:
  518. LLScriptObjectRezEvent(S32 line, S32 col, LLScriptIdentifier *id)
  519. : LLScriptEvent(line, col, LSTT_OBJECT_REZ), mID(id)
  520. {
  521. }
  522. ~LLScriptObjectRezEvent()
  523. {
  524. }
  525. 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);
  526. S32 getSize();
  527. LLScriptIdentifier *mID;
  528. };
  529. class LLScriptSensorEvent : public LLScriptEvent
  530. {
  531. public:
  532. LLScriptSensorEvent(S32 line, S32 col, LLScriptIdentifier *number)
  533. : LLScriptEvent(line, col, LSTT_SENSOR), mNumber(number)
  534. {
  535. }
  536. ~LLScriptSensorEvent()
  537. {
  538. }
  539. 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);
  540. S32 getSize();
  541. LLScriptIdentifier *mNumber;
  542. };
  543. class LLScriptControlEvent : public LLScriptEvent
  544. {
  545. public:
  546. LLScriptControlEvent(S32 line, S32 col, LLScriptIdentifier *name, LLScriptIdentifier *levels, LLScriptIdentifier *edges)
  547. : LLScriptEvent(line, col, LSTT_CONTROL), mName(name), mLevels(levels), mEdges(edges)
  548. {
  549. }
  550. ~LLScriptControlEvent()
  551. {
  552. }
  553. 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);
  554. S32 getSize();
  555. LLScriptIdentifier *mName;
  556. LLScriptIdentifier *mLevels;
  557. LLScriptIdentifier *mEdges;
  558. };
  559. class LLScriptLinkMessageEvent : public LLScriptEvent
  560. {
  561. public:
  562. LLScriptLinkMessageEvent(S32 line, S32 col, LLScriptIdentifier *sender, LLScriptIdentifier *num, LLScriptIdentifier *str, LLScriptIdentifier *id)
  563. : LLScriptEvent(line, col, LSTT_LINK_MESSAGE), mSender(sender), mNum(num), mStr(str), mID(id)
  564. {
  565. }
  566. ~LLScriptLinkMessageEvent()
  567. {
  568. }
  569. 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);
  570. S32 getSize();
  571. LLScriptIdentifier *mSender;
  572. LLScriptIdentifier *mNum;
  573. LLScriptIdentifier *mStr;
  574. LLScriptIdentifier *mID;
  575. };
  576. class LLScriptRemoteEvent : public LLScriptEvent
  577. {
  578. public:
  579. LLScriptRemoteEvent(S32 line, S32 col, LLScriptIdentifier *type, LLScriptIdentifier *channel, LLScriptIdentifier *message_id, LLScriptIdentifier *sender, LLScriptIdentifier *int_val, LLScriptIdentifier *str_val)
  580. : LLScriptEvent(line, col, LSTT_REMOTE_DATA), mType(type), mChannel(channel), mMessageID(message_id), mSender(sender), mIntVal(int_val), mStrVal(str_val)
  581. {
  582. }
  583. ~LLScriptRemoteEvent()
  584. {
  585. }
  586. 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);
  587. S32 getSize();
  588. LLScriptIdentifier *mType;
  589. LLScriptIdentifier *mChannel;
  590. LLScriptIdentifier *mMessageID;
  591. LLScriptIdentifier *mSender;
  592. LLScriptIdentifier *mIntVal;
  593. LLScriptIdentifier *mStrVal;
  594. };
  595. class LLScriptHTTPResponseEvent : public LLScriptEvent
  596. {
  597. public:
  598. LLScriptHTTPResponseEvent(S32 line, S32 col,
  599. LLScriptIdentifier *request_id,
  600. LLScriptIdentifier *status,
  601. LLScriptIdentifier *metadata,
  602. LLScriptIdentifier *body)
  603. : LLScriptEvent(line, col, LSTT_HTTP_RESPONSE),
  604. mRequestId(request_id), mStatus(status), mMetadata(metadata), mBody(body)
  605. {
  606. }
  607. void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass,
  608. LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope,
  609. LSCRIPTType &type, LSCRIPTType basetype, U64 &count,
  610. LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap,
  611. S32 stacksize, LLScriptScopeEntry *entry,
  612. S32 entrycount, LLScriptLibData **ldata);
  613. S32 getSize();
  614. LLScriptIdentifier *mRequestId;
  615. LLScriptIdentifier *mStatus;
  616. LLScriptIdentifier *mMetadata;
  617. LLScriptIdentifier *mBody;
  618. };
  619. class LLScriptHTTPRequestEvent : public LLScriptEvent
  620. {
  621. public:
  622. LLScriptHTTPRequestEvent(S32 line, S32 col,
  623. LLScriptIdentifier *request_id,
  624. LLScriptIdentifier *method,
  625. LLScriptIdentifier *body)
  626. : LLScriptEvent(line, col, LSTT_HTTP_REQUEST),
  627. mRequestId(request_id), mMethod(method), mBody(body)
  628. {
  629. }
  630. void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass,
  631. LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope,
  632. LSCRIPTType &type, LSCRIPTType basetype, U64 &count,
  633. LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap,
  634. S32 stacksize, LLScriptScopeEntry *entry,
  635. S32 entrycount, LLScriptLibData **ldata);
  636. S32 getSize();
  637. LLScriptIdentifier *mRequestId;
  638. LLScriptIdentifier *mMethod;
  639. LLScriptIdentifier *mBody;
  640. };
  641. class LLScriptRezEvent : public LLScriptEvent
  642. {
  643. public:
  644. LLScriptRezEvent(S32 line, S32 col, LLScriptIdentifier *start_param)
  645. : LLScriptEvent(line, col, LSTT_REZ), mStartParam(start_param)
  646. {
  647. }
  648. ~LLScriptRezEvent() {}
  649. 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);
  650. S32 getSize();
  651. LLScriptIdentifier *mStartParam;
  652. };
  653. class LLScriptNoSensorEvent : public LLScriptEvent
  654. {
  655. public:
  656. LLScriptNoSensorEvent(S32 line, S32 col)
  657. : LLScriptEvent(line, col, LSTT_NO_SENSOR)
  658. {
  659. }
  660. 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);
  661. S32 getSize();
  662. ~LLScriptNoSensorEvent() {}
  663. };
  664. class LLScriptAtTarget : public LLScriptEvent
  665. {
  666. public:
  667. LLScriptAtTarget(S32 line, S32 col, LLScriptIdentifier *tnumber, LLScriptIdentifier *tpos, LLScriptIdentifier *ourpos)
  668. : LLScriptEvent(line, col, LSTT_AT_TARGET), mTargetNumber(tnumber), mTargetPosition(tpos), mOurPosition(ourpos)
  669. {
  670. }
  671. 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);
  672. S32 getSize();
  673. ~LLScriptAtTarget() {}
  674. LLScriptIdentifier *mTargetNumber;
  675. LLScriptIdentifier *mTargetPosition;
  676. LLScriptIdentifier *mOurPosition;
  677. };
  678. class LLScriptNotAtTarget : public LLScriptEvent
  679. {
  680. public:
  681. LLScriptNotAtTarget(S32 line, S32 col)
  682. : LLScriptEvent(line, col, LSTT_NOT_AT_TARGET)
  683. {
  684. }
  685. 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);
  686. S32 getSize();
  687. ~LLScriptNotAtTarget() {}
  688. };
  689. class LLScriptAtRotTarget : public LLScriptEvent
  690. {
  691. public:
  692. LLScriptAtRotTarget(S32 line, S32 col, LLScriptIdentifier *tnumber, LLScriptIdentifier *trot, LLScriptIdentifier *ourrot)
  693. : LLScriptEvent(line, col, LSTT_AT_ROT_TARGET), mTargetNumber(tnumber), mTargetRotation(trot), mOurRotation(ourrot)
  694. {
  695. }
  696. 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);
  697. S32 getSize();
  698. ~LLScriptAtRotTarget() {}
  699. LLScriptIdentifier *mTargetNumber;
  700. LLScriptIdentifier *mTargetRotation;
  701. LLScriptIdentifier *mOurRotation;
  702. };
  703. class LLScriptNotAtRotTarget : public LLScriptEvent
  704. {
  705. public:
  706. LLScriptNotAtRotTarget(S32 line, S32 col)
  707. : LLScriptEvent(line, col, LSTT_NOT_AT_ROT_TARGET)
  708. {
  709. }
  710. 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);
  711. S32 getSize();
  712. ~LLScriptNotAtRotTarget() {}
  713. };
  714. class LLScriptMoneyEvent : public LLScriptEvent
  715. {
  716. public:
  717. LLScriptMoneyEvent(S32 line, S32 col, LLScriptIdentifier *name, LLScriptIdentifier *amount)
  718. : LLScriptEvent(line, col, LSTT_MONEY), mName(name), mAmount(amount)
  719. {
  720. }
  721. ~LLScriptMoneyEvent()
  722. {
  723. }
  724. 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);
  725. S32 getSize();
  726. LLScriptIdentifier *mName;
  727. LLScriptIdentifier *mAmount;
  728. };
  729. class LLScriptEmailEvent : public LLScriptEvent
  730. {
  731. public:
  732. LLScriptEmailEvent(S32 line, S32 col, LLScriptIdentifier *time, LLScriptIdentifier *address, LLScriptIdentifier *subject, LLScriptIdentifier *body, LLScriptIdentifier *number)
  733. : LLScriptEvent(line, col, LSTT_EMAIL), mTime(time), mAddress(address), mSubject(subject), mBody(body), mNumber(number)
  734. {
  735. }
  736. ~LLScriptEmailEvent()
  737. {
  738. }
  739. 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);
  740. S32 getSize();
  741. LLScriptIdentifier *mTime;
  742. LLScriptIdentifier *mAddress;
  743. LLScriptIdentifier *mSubject;
  744. LLScriptIdentifier *mBody;
  745. LLScriptIdentifier *mNumber;
  746. };
  747. class LLScriptExpression : public LLScriptFilePosition
  748. {
  749. public:
  750. LLScriptExpression(S32 line, S32 col, LSCRIPTExpressionType type)
  751. : LLScriptFilePosition(line, col), mType(type), mNextp(NULL), mLeftType(LST_NULL), mRightType(LST_NULL), mReturnType(LST_NULL)
  752. {
  753. }
  754. void addExpression(LLScriptExpression *expression);
  755. virtual ~LLScriptExpression()
  756. {
  757. // don't delete next pointer because we're going to store allocation lists and delete from those
  758. }
  759. 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);
  760. 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);
  761. S32 getSize();
  762. LSCRIPTExpressionType mType;
  763. LLScriptExpression *mNextp;
  764. LSCRIPTType mLeftType, mRightType, mReturnType;
  765. };
  766. class LLScriptForExpressionList : public LLScriptExpression
  767. {
  768. public:
  769. LLScriptForExpressionList(S32 line, S32 col, LLScriptExpression *first, LLScriptExpression *second)
  770. : LLScriptExpression(line, col, LET_FOR_EXPRESSION_LIST), mFirstp(first), mSecondp(second)
  771. {
  772. }
  773. ~LLScriptForExpressionList()
  774. {
  775. }
  776. 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);
  777. S32 getSize();
  778. LLScriptExpression *mFirstp;
  779. LLScriptExpression *mSecondp;
  780. };
  781. class LLScriptFuncExpressionList : public LLScriptExpression
  782. {
  783. public:
  784. LLScriptFuncExpressionList(S32 line, S32 col, LLScriptExpression *first, LLScriptExpression *second)
  785. : LLScriptExpression(line, col, LET_FUNC_EXPRESSION_LIST), mFirstp(first), mSecondp(second)
  786. {
  787. }
  788. ~LLScriptFuncExpressionList()
  789. {
  790. }
  791. 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);
  792. S32 getSize();
  793. LLScriptExpression *mFirstp;
  794. LLScriptExpression *mSecondp;
  795. };
  796. class LLScriptListExpressionList : public LLScriptExpression
  797. {
  798. public:
  799. LLScriptListExpressionList(S32 line, S32 col, LLScriptExpression *first, LLScriptExpression *second)
  800. : LLScriptExpression(line, col, LET_LIST_EXPRESSION_LIST), mFirstp(first), mSecondp(second)
  801. {
  802. }
  803. ~LLScriptListExpressionList()
  804. {
  805. }
  806. 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);
  807. S32 getSize();
  808. LLScriptExpression *mFirstp;
  809. LLScriptExpression *mSecondp;
  810. };
  811. class LLScriptLValue : public LLScriptExpression
  812. {
  813. public:
  814. LLScriptLValue(S32 line, S32 col, LLScriptIdentifier *identifier, LLScriptIdentifier *accessor)
  815. : LLScriptExpression(line, col, LET_LVALUE), mOffset(0), mIdentifier(identifier), mAccessor(accessor)
  816. {
  817. }
  818. ~LLScriptLValue()
  819. {
  820. }
  821. 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);
  822. S32 getSize();
  823. S32 mOffset;
  824. LLScriptIdentifier *mIdentifier;
  825. LLScriptIdentifier *mAccessor;
  826. };
  827. class LLScriptAssignment : public LLScriptExpression
  828. {
  829. public:
  830. LLScriptAssignment(S32 line, S32 col, LLScriptExpression *lvalue, LLScriptExpression *rightside)
  831. : LLScriptExpression(line, col, LET_ASSIGNMENT), mLValue(lvalue), mRightSide(rightside)
  832. {
  833. }
  834. ~LLScriptAssignment()
  835. {
  836. }
  837. 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);
  838. S32 getSize();
  839. LLScriptExpression *mLValue;
  840. LLScriptExpression *mRightSide;
  841. };
  842. class LLScriptAddAssignment : public LLScriptExpression
  843. {
  844. public:
  845. LLScriptAddAssignment(S32 line, S32 col, LLScriptExpression *lvalue, LLScriptExpression *rightside)
  846. : LLScriptExpression(line, col, LET_ADD_ASSIGN), mLValue(lvalue), mRightSide(rightside)
  847. {
  848. }
  849. ~LLScriptAddAssignment()
  850. {
  851. }
  852. 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);
  853. S32 getSize();
  854. LLScriptExpression *mLValue;
  855. LLScriptExpression *mRightSide;
  856. };
  857. class LLScriptSubAssignment : public LLScriptExpression
  858. {
  859. public:
  860. LLScriptSubAssignment(S32 line, S32 col, LLScriptExpression *lvalue, LLScriptExpression *rightside)
  861. : LLScriptExpression(line, col, LET_SUB_ASSIGN), mLValue(lvalue), mRightSide(rightside)
  862. {
  863. }
  864. ~LLScriptSubAssignment()
  865. {
  866. }
  867. 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);
  868. S32 getSize();
  869. LLScriptExpression *mLValue;
  870. LLScriptExpression *mRightSide;
  871. };
  872. class LLScriptMulAssignment : public LLScriptExpression
  873. {
  874. public:
  875. LLScriptMulAssignment(S32 line, S32 col, LLScriptExpression *lvalue, LLScriptExpression *rightside)
  876. : LLScriptExpression(line, col, LET_MUL_ASSIGN), mLValue(lvalue), mRightSide(rightside)
  877. {
  878. }
  879. ~LLScriptMulAssignment()
  880. {
  881. }
  882. 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);
  883. S32 getSize();
  884. LLScriptExpression *mLValue;
  885. LLScriptExpression *mRightSide;
  886. };
  887. class LLScriptDivAssignment : public LLScriptExpression
  888. {
  889. public:
  890. LLScriptDivAssignment(S32 line, S32 col, LLScriptExpression *lvalue, LLScriptExpression *rightside)
  891. : LLScriptExpression(line, col, LET_DIV_ASSIGN), mLValue(lvalue), mRightSide(rightside)
  892. {
  893. }
  894. ~LLScriptDivAssignment()
  895. {
  896. }
  897. 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);
  898. S32 getSize();
  899. LLScriptExpression *mLValue;
  900. LLScriptExpression *mRightSide;
  901. };
  902. class LLScriptModAssignment : public LLScriptExpression
  903. {
  904. public:
  905. LLScriptModAssignment(S32 line, S32 col, LLScriptExpression *lvalue, LLScriptExpression *rightside)
  906. : LLScriptExpression(line, col, LET_MOD_ASSIGN), mLValue(lvalue), mRightSide(rightside)
  907. {
  908. }
  909. ~LLScriptModAssignment()
  910. {
  911. }
  912. 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);
  913. S32 getSize();
  914. LLScriptExpression *mLValue;
  915. LLScriptExpression *mRightSide;
  916. };
  917. class LLScriptEquality : public LLScriptExpression
  918. {
  919. public:
  920. LLScriptEquality(S32 line, S32 col, LLScriptExpression *leftside, LLScriptExpression *rightside)
  921. : LLScriptExpression(line, col, LET_EQUALITY), mLeftSide(leftside), mRightSide(rightside)
  922. {
  923. }
  924. ~LLScriptEquality()
  925. {
  926. }
  927. 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);
  928. S32 getSize();
  929. LLScriptExpression *mLeftSide;
  930. LLScriptExpression *mRightSide;
  931. };
  932. class LLScriptNotEquals : public LLScriptExpression
  933. {
  934. public:
  935. LLScriptNotEquals(S32 line, S32 col, LLScriptExpression *leftside, LLScriptExpression *rightside)
  936. : LLScriptExpression(line, col, LET_NOT_EQUALS), mLeftSide(leftside), mRightSide(rightside)
  937. {
  938. }
  939. ~LLScriptNotEquals()
  940. {
  941. }
  942. 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);
  943. S32 getSize();
  944. LLScriptExpression *mLeftSide;
  945. LLScriptExpression *mRightSide;
  946. };
  947. class LLScriptLessEquals : public LLScriptExpression
  948. {
  949. public:
  950. LLScriptLessEquals(S32 line, S32 col, LLScriptExpression *leftside, LLScriptExpression *rightside)
  951. : LLScriptExpression(line, col, LET_LESS_EQUALS), mLeftSide(leftside), mRightSide(rightside)
  952. {
  953. }
  954. ~LLScriptLessEquals()
  955. {
  956. }
  957. 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);
  958. S32 getSize();
  959. LLScriptExpression *mLeftSide;
  960. LLScriptExpression *mRightSide;
  961. };
  962. class LLScriptGreaterEquals : public LLScriptExpression
  963. {
  964. public:
  965. LLScriptGreaterEquals(S32 line, S32 col, LLScriptExpression *leftside, LLScriptExpression *rightside)
  966. : LLScriptExpression(line, col, LET_GREATER_EQUALS), mLeftSide(leftside), mRightSide(rightside)
  967. {
  968. }
  969. ~LLScriptGreaterEquals()
  970. {
  971. }
  972. 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);
  973. S32 getSize();
  974. LLScriptExpression *mLeftSide;
  975. LLScriptExpression *mRightSide;
  976. };
  977. class LLScriptLessThan : public LLScriptExpression
  978. {
  979. public:
  980. LLScriptLessThan(S32 line, S32 col, LLScriptExpression *leftside, LLScriptExpression *rightside)
  981. : LLScriptExpression(line, col, LET_LESS_THAN), mLeftSide(leftside), mRightSide(rightside)
  982. {
  983. }
  984. ~LLScriptLessThan()
  985. {
  986. }
  987. 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);
  988. S32 getSize();
  989. LLScriptExpression *mLeftSide;
  990. LLScriptExpression *mRightSide;
  991. };
  992. class LLScriptGreaterThan : public LLScriptExpression
  993. {
  994. public:
  995. LLScriptGreaterThan(S32 line, S32 col, LLScriptExpression *leftside, LLScriptExpression *rightside)
  996. : LLScriptExpression(line, col, LET_GREATER_THAN), mLeftSide(leftside), mRightSide(rightside)
  997. {
  998. }
  999. ~LLScriptGreaterThan()
  1000. {
  1001. }
  1002. 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);
  1003. S32 getSize();
  1004. LLScriptExpression *mLeftSide;
  1005. LLScriptExpression *mRightSide;
  1006. };
  1007. class LLScriptPlus : public LLScriptExpression
  1008. {
  1009. public:
  1010. LLScriptPlus(S32 line, S32 col, LLScriptExpression *leftside, LLScriptExpression *rightside)
  1011. : LLScriptExpression(line, col, LET_PLUS), mLeftSide(leftside), mRightSide(rightside)
  1012. {
  1013. }
  1014. ~LLScriptPlus()
  1015. {
  1016. }
  1017. 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);
  1018. S32 getSize();
  1019. LLScriptExpression *mLeftSide;
  1020. LLScriptExpression *mRightSide;
  1021. };
  1022. class LLScriptMinus : public LLScriptExpression
  1023. {
  1024. public:
  1025. LLScriptMinus(S32 line, S32 col, LLScriptExpression *leftside, LLScriptExpression *rightside)
  1026. : LLScriptExpression(line, col, LET_MINUS), mLeftSide(leftside), mRightSide(rightside)
  1027. {
  1028. }
  1029. ~LLScriptMinus()
  1030. {
  1031. }
  1032. 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);
  1033. S32 getSize();
  1034. LLScriptExpression *mLeftSide;
  1035. LLScriptExpression *mRightSide;
  1036. };
  1037. class LLScriptTimes : public LLScriptExpression
  1038. {
  1039. public:
  1040. LLScriptTimes(S32 line, S32 col, LLScriptExpression *leftside, LLScriptExpression *rightside)
  1041. : LLScriptExpression(line, col, LET_TIMES), mLeftSide(leftside), mRightSide(rightside)
  1042. {
  1043. }
  1044. ~LLScriptTimes()
  1045. {
  1046. }
  1047. 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);
  1048. S32 getSize();
  1049. LLScriptExpression *mLeftSide;
  1050. LLScriptExpression *mRightSide;
  1051. };
  1052. class LLScriptDivide : public LLScriptExpression
  1053. {
  1054. public:
  1055. LLScriptDivide(S32 line, S32 col, LLScriptExpression *leftside, LLScriptExpression *rightside)
  1056. : LLScriptExpression(line, col, LET_DIVIDE), mLeftSide(leftside), mRightSide(rightside)
  1057. {
  1058. }
  1059. ~LLScriptDivide()
  1060. {
  1061. }
  1062. 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);
  1063. S32 getSize();
  1064. LLScriptExpression *mLeftSide;
  1065. LLScriptExpression *mRightSide;
  1066. };
  1067. class LLScriptMod : public LLScriptExpression
  1068. {
  1069. public:
  1070. LLScriptMod(S32 line, S32 col, LLScriptExpression *leftside, LLScriptExpression *rightside)
  1071. : LLScriptExpression(line, col, LET_MOD), mLeftSide(leftside), mRightSide(rightside)
  1072. {
  1073. }
  1074. ~LLScriptMod()
  1075. {
  1076. }
  1077. 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);
  1078. S32 getSize();
  1079. LLScriptExpression *mLeftSide;
  1080. LLScriptExpression *mRightSide;
  1081. };
  1082. class LLScriptBitAnd : public LLScriptExpression
  1083. {
  1084. public:
  1085. LLScriptBitAnd(S32 line, S32 col, LLScriptExpression *leftside, LLScriptExpression *rightside)
  1086. : LLScriptExpression(line, col, LET_BIT_AND), mLeftSide(leftside), mRightSide(rightside)
  1087. {
  1088. }
  1089. ~LLScriptBitAnd()
  1090. {
  1091. }
  1092. 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);
  1093. S32 getSize();
  1094. LLScriptExpression *mLeftSide;
  1095. LLScriptExpression *mRightSide;
  1096. };
  1097. class LLScriptBitOr : public LLScriptExpression
  1098. {
  1099. public:
  1100. LLScriptBitOr(S32 line, S32 col, LLScriptExpression *leftside, LLScriptExpression *rightside)
  1101. : LLScriptExpression(line, col, LET_BIT_OR), mLeftSide(leftside), mRightSide(rightside)
  1102. {
  1103. }
  1104. ~LLScriptBitOr()
  1105. {
  1106. }
  1107. 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);
  1108. S32 getSize();
  1109. LLScriptExpression *mLeftSide;
  1110. LLScriptExpression *mRightSide;
  1111. };
  1112. class LLScriptBitXor : public LLScriptExpression
  1113. {
  1114. public:
  1115. LLScriptBitXor(S32 line, S32 col, LLScriptExpression *leftside, LLScriptExpression *rightside)
  1116. : LLScriptExpression(line, col, LET_BIT_XOR), mLeftSide(leftside), mRightSide(rightside)
  1117. {
  1118. }
  1119. ~LLScriptBitXor()
  1120. {
  1121. }
  1122. 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);
  1123. S32 getSize();
  1124. LLScriptExpression *mLeftSide;
  1125. LLScriptExpression *mRightSide;
  1126. };
  1127. class LLScriptBooleanAnd : public LLScriptExpression
  1128. {
  1129. public:
  1130. LLScriptBooleanAnd(S32 line, S32 col, LLScriptExpression *leftside, LLScriptExpression *rightside)
  1131. : LLScriptExpression(line, col, LET_BOOLEAN_AND), mLeftSide(leftside), mRightSide(rightside)
  1132. {
  1133. }
  1134. ~LLScriptBooleanAnd()
  1135. {
  1136. }
  1137. 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);
  1138. S32 getSize();
  1139. LLScriptExpression *mLeftSide;
  1140. LLScriptExpression *mRightSide;
  1141. };
  1142. class LLScriptBooleanOr : public LLScriptExpression
  1143. {
  1144. public:
  1145. LLScriptBooleanOr(S32 line, S32 col, LLScriptExpression *leftside, LLScriptExpression *rightside)
  1146. : LLScriptExpression(line, col, LET_BOOLEAN_OR), mLeftSide(leftside), mRightSide(rightside)
  1147. {
  1148. }
  1149. ~LLScriptBooleanOr()
  1150. {
  1151. }
  1152. 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);
  1153. S32 getSize();
  1154. LLScriptExpression *mLeftSide;
  1155. LLScriptExpression *mRightSide;
  1156. };
  1157. class LLScriptShiftLeft : public LLScriptExpression
  1158. {
  1159. public:
  1160. LLScriptShiftLeft(S32 line, S32 col, LLScriptExpression *leftside, LLScriptExpression *rightside)
  1161. : LLScriptExpression(line, col, LET_SHIFT_LEFT), mLeftSide(leftside), mRightSide(rightside)
  1162. {
  1163. }
  1164. ~LLScriptShiftLeft()
  1165. {
  1166. }
  1167. 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);
  1168. S32 getSize();
  1169. LLScriptExpression *mLeftSide;
  1170. LLScriptExpression *mRightSide;
  1171. };
  1172. class LLScriptShiftRight : public LLScriptExpression
  1173. {
  1174. public:
  1175. LLScriptShiftRight(S32 line, S32 col, LLScriptExpression *leftside, LLScriptExpression *rightside)
  1176. : LLScriptExpression(line, col, LET_SHIFT_RIGHT), mLeftSide(leftside), mRightSide(rightside)
  1177. {
  1178. }
  1179. ~LLScriptShiftRight()
  1180. {
  1181. }
  1182. 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);
  1183. S32 getSize();
  1184. LLScriptExpression *mLeftSide;
  1185. LLScriptExpression *mRightSide;
  1186. };
  1187. class LLScriptParenthesis : public LLScriptExpression
  1188. {
  1189. public:
  1190. LLScriptParenthesis(S32 line, S32 col, LLScriptExpression *expression)
  1191. : LLScriptExpression(line, col, LET_PARENTHESIS), mExpression(expression)
  1192. {
  1193. }
  1194. ~LLScriptParenthesis()
  1195. {
  1196. }
  1197. 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);
  1198. S32 getSize();
  1199. LLScriptExpression *mExpression;
  1200. };
  1201. class LLScriptUnaryMinus : public LLScriptExpression
  1202. {
  1203. public:
  1204. LLScriptUnaryMinus(S32 line, S32 col, LLScriptExpression *expression)
  1205. : LLScriptExpression(line, col, LET_UNARY_MINUS), mExpression(expression)
  1206. {
  1207. }
  1208. ~LLScriptUnaryMinus()
  1209. {
  1210. }
  1211. 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);
  1212. S32 getSize();
  1213. LLScriptExpression *mExpression;
  1214. };
  1215. class LLScriptBooleanNot : public LLScriptExpression
  1216. {
  1217. public:
  1218. LLScriptBooleanNot(S32 line, S32 col, LLScriptExpression *expression)
  1219. : LLScriptExpression(line, col, LET_BOOLEAN_NOT), mExpression(expression)
  1220. {
  1221. }
  1222. ~LLScriptBooleanNot()
  1223. {
  1224. }
  1225. 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);
  1226. S32 getSize();
  1227. LLScriptExpression *mExpression;
  1228. };
  1229. class LLScriptBitNot : public LLScriptExpression
  1230. {
  1231. public:
  1232. LLScriptBitNot(S32 line, S32 col, LLScriptExpression *expression)
  1233. : LLScriptExpression(line, col, LET_BIT_NOT), mExpression(expression)
  1234. {
  1235. }
  1236. ~LLScriptBitNot()
  1237. {
  1238. }
  1239. 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);
  1240. S32 getSize();
  1241. LLScriptExpression *mExpression;
  1242. };
  1243. class LLScriptPreIncrement : public LLScriptExpression
  1244. {
  1245. public:
  1246. LLScriptPreIncrement(S32 line, S32 col, LLScriptExpression *expression)
  1247. : LLScriptExpression(line, col, LET_PRE_INCREMENT), mExpression(expression)
  1248. {
  1249. }
  1250. ~LLScriptPreIncrement()
  1251. {
  1252. }
  1253. 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);
  1254. S32 getSize();
  1255. LLScriptExpression *mExpression;
  1256. };
  1257. class LLScriptPreDecrement : public LLScriptExpression
  1258. {
  1259. public:
  1260. LLScriptPreDecrement(S32 line, S32 col, LLScriptExpression *expression)
  1261. : LLScriptExpression(line, col, LET_PRE_DECREMENT), mExpression(expression)
  1262. {
  1263. }
  1264. ~LLScriptPreDecrement()
  1265. {
  1266. }
  1267. 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);
  1268. S32 getSize();
  1269. LLScriptExpression *mExpression;
  1270. };
  1271. class LLScriptTypeCast : public LLScriptExpression
  1272. {
  1273. public:
  1274. LLScriptTypeCast(S32 line, S32 col, LLScriptType *type, LLScriptExpression *expression)
  1275. : LLScriptExpression(line, col, LET_CAST), mType(type), mExpression(expression)
  1276. {
  1277. }
  1278. ~LLScriptTypeCast()
  1279. {
  1280. }
  1281. 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);
  1282. S32 getSize();
  1283. LLScriptType *mType;
  1284. LLScriptExpression *mExpression;
  1285. };
  1286. class LLScriptVectorInitializer : public LLScriptExpression
  1287. {
  1288. public:
  1289. LLScriptVectorInitializer(S32 line, S32 col, LLScriptExpression *expression1,
  1290. LLScriptExpression *expression2,
  1291. LLScriptExpression *expression3)
  1292. : LLScriptExpression(line, col, LET_VECTOR_INITIALIZER),
  1293. mExpression1(expression1),
  1294. mExpression2(expression2),
  1295. mExpression3(expression3)
  1296. {
  1297. }
  1298. ~LLScriptVectorInitializer()
  1299. {
  1300. }
  1301. 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);
  1302. S32 getSize();
  1303. LLScriptExpression *mExpression1;
  1304. LLScriptExpression *mExpression2;
  1305. LLScriptExpression *mExpression3;
  1306. };
  1307. class LLScriptQuaternionInitializer : public LLScriptExpression
  1308. {
  1309. public:
  1310. LLScriptQuaternionInitializer(S32 line, S32 col, LLScriptExpression *expression1,
  1311. LLScriptExpression *expression2,
  1312. LLScriptExpression *expression3,
  1313. LLScriptExpression *expression4)
  1314. : LLScriptExpression(line, col, LET_VECTOR_INITIALIZER),
  1315. mExpression1(expression1),
  1316. mExpression2(expression2),
  1317. mExpression3(expression3),
  1318. mExpression4(expression4)
  1319. {
  1320. }
  1321. ~LLScriptQuaternionInitializer()
  1322. {
  1323. }
  1324. 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);
  1325. S32 getSize();
  1326. LLScriptExpression *mExpression1;
  1327. LLScriptExpression *mExpression2;
  1328. LLScriptExpression *mExpression3;
  1329. LLScriptExpression *mExpression4;
  1330. };
  1331. class LLScriptListInitializer : public LLScriptExpression
  1332. {
  1333. public:
  1334. LLScriptListInitializer(S32 line, S32 col, LLScriptExpression *expressionlist)
  1335. : LLScriptExpression(line, col, LET_LIST_INITIALIZER), mExpressionList(expressionlist)
  1336. {
  1337. }
  1338. ~LLScriptListInitializer()
  1339. {
  1340. }
  1341. 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);
  1342. S32 getSize();
  1343. LLScriptExpression *mExpressionList;
  1344. };
  1345. class LLScriptPostIncrement : public LLScriptExpression
  1346. {
  1347. public:
  1348. LLScriptPostIncrement(S32 line, S32 col, LLScriptExpression *expression)
  1349. : LLScriptExpression(line, col, LET_POST_INCREMENT), mExpression(expression)
  1350. {
  1351. }
  1352. ~LLScriptPostIncrement()
  1353. {
  1354. }
  1355. 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);
  1356. S32 getSize();
  1357. LLScriptExpression *mExpression;
  1358. };
  1359. class LLScriptPostDecrement : public LLScriptExpression
  1360. {
  1361. public:
  1362. LLScriptPostDecrement(S32 line, S32 col, LLScriptExpression *expression)
  1363. : LLScriptExpression(line, col, LET_POST_DECREMENT), mExpression(expression)
  1364. {
  1365. }
  1366. ~LLScriptPostDecrement()
  1367. {
  1368. }
  1369. 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);
  1370. S32 getSize();
  1371. LLScriptExpression *mExpression;
  1372. };
  1373. class LLScriptFunctionCall : public LLScriptExpression
  1374. {
  1375. public:
  1376. LLScriptFunctionCall(S32 line, S32 col, LLScriptIdentifier *identifier, LLScriptExpression *expressionlist)
  1377. : LLScriptExpression(line, col, LET_FUNCTION_CALL), mIdentifier(identifier), mExpressionList(expressionlist)
  1378. {
  1379. }
  1380. ~LLScriptFunctionCall()
  1381. {
  1382. }
  1383. 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);
  1384. S32 getSize();
  1385. LLScriptIdentifier *mIdentifier;
  1386. LLScriptExpression *mExpressionList;
  1387. };
  1388. class LLScriptPrint : public LLScriptExpression
  1389. {
  1390. public:
  1391. LLScriptPrint(S32 line, S32 col, LLScriptExpression *expression)
  1392. : LLScriptExpression(line, col, LET_PRINT), mExpression(expression)
  1393. {
  1394. }
  1395. ~LLScriptPrint()
  1396. {
  1397. }
  1398. 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);
  1399. S32 getSize();
  1400. LLScriptExpression *mExpression;
  1401. };
  1402. class LLScriptConstantExpression : public LLScriptExpression
  1403. {
  1404. public:
  1405. LLScriptConstantExpression(S32 line, S32 col, LLScriptConstant *constant)
  1406. : LLScriptExpression(line, col,