aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO')
-rw-r--r--OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/Common.cs168
-rw-r--r--OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/Engine.cs600
-rw-r--r--OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/IL_common_functions.cs112
-rw-r--r--OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_BaseClass.cs120
-rw-r--r--OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_BaseClass_Builtins.cs746
-rw-r--r--OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_BaseClass_OPCODES.cs700
-rw-r--r--OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_CLRInterface.cs158
-rw-r--r--OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_OPCODE_IL_processor.cs872
-rw-r--r--OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSO_Enums.cs1114
-rw-r--r--OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSO_Parser.cs1444
-rw-r--r--OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSO_Struct.cs270
11 files changed, 3152 insertions, 3152 deletions
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/Common.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/Common.cs
index a6cf03e..00eb899 100644
--- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/Common.cs
+++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/Common.cs
@@ -1,84 +1,84 @@
1/* 1/*
2* Copyright (c) Contributors, http://opensimulator.org/ 2* Copyright (c) Contributors, http://opensimulator.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders. 3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4* 4*
5* Redistribution and use in source and binary forms, with or without 5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met: 6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright 7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer. 8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright 9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the 10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution. 11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the 12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products 13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission. 14* derived from this software without specific prior written permission.
15* 15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY 16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY 19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26* 26*
27*/ 27*/
28/* Original code: Tedd Hansen */ 28/* Original code: Tedd Hansen */
29using System; 29using System;
30using System.Collections.Generic; 30using System.Collections.Generic;
31using System.Text; 31using System.Text;
32 32
33namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO 33namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO
34{ 34{
35 public static class Common 35 public static class Common
36 { 36 {
37 static public bool Debug = true; 37 static public bool Debug = true;
38 static public bool IL_UseTryCatch = true; 38 static public bool IL_UseTryCatch = true;
39 static public bool IL_CreateConstructor = true; 39 static public bool IL_CreateConstructor = true;
40 static public bool IL_CreateFunctionList = true; 40 static public bool IL_CreateFunctionList = true;
41 static public bool IL_ProcessCodeChunks = true; 41 static public bool IL_ProcessCodeChunks = true;
42 42
43 public delegate void SendToDebugEventDelegate(string Message); 43 public delegate void SendToDebugEventDelegate(string Message);
44 public delegate void SendToLogEventDelegate(string Message); 44 public delegate void SendToLogEventDelegate(string Message);
45 static public event SendToDebugEventDelegate SendToDebugEvent; 45 static public event SendToDebugEventDelegate SendToDebugEvent;
46 static public event SendToLogEventDelegate SendToLogEvent; 46 static public event SendToLogEventDelegate SendToLogEvent;
47 47
48 static public void SendToDebug(string Message) 48 static public void SendToDebug(string Message)
49 { 49 {
50 //if (Debug == true) 50 //if (Debug == true)
51 Console.WriteLine("COMPILER:Debug: " + Message); 51 Console.WriteLine("COMPILER:Debug: " + Message);
52 SendToDebugEvent("\r\n" + DateTime.Now.ToString("[HH:mm:ss] ") + Message); 52 SendToDebugEvent("\r\n" + DateTime.Now.ToString("[HH:mm:ss] ") + Message);
53 } 53 }
54 static public void SendToLog(string Message) 54 static public void SendToLog(string Message)
55 { 55 {
56 //if (Debug == true) 56 //if (Debug == true)
57 Console.WriteLine("COMPILER:LOG: " + Message); 57 Console.WriteLine("COMPILER:LOG: " + Message);
58 SendToLogEvent("\r\n" + DateTime.Now.ToString("[HH:mm:ss] ") + Message); 58 SendToLogEvent("\r\n" + DateTime.Now.ToString("[HH:mm:ss] ") + Message);
59 } 59 }
60 } 60 }
61 61
62 // TEMPORARY TEST THINGIES 62 // TEMPORARY TEST THINGIES
63 public static class IL_Helper 63 public static class IL_Helper
64 { 64 {
65 public static string ReverseFormatString(string text1, string format) 65 public static string ReverseFormatString(string text1, string format)
66 { 66 {
67 Common.SendToDebug("ReverseFormatString text1: " + text1); 67 Common.SendToDebug("ReverseFormatString text1: " + text1);
68 Common.SendToDebug("ReverseFormatString format: " + format); 68 Common.SendToDebug("ReverseFormatString format: " + format);
69 return string.Format(format, text1); 69 return string.Format(format, text1);
70 } 70 }
71 public static string ReverseFormatString(string text1, UInt32 text2, string format) 71 public static string ReverseFormatString(string text1, UInt32 text2, string format)
72 { 72 {
73 Common.SendToDebug("ReverseFormatString text1: " + text1); 73 Common.SendToDebug("ReverseFormatString text1: " + text1);
74 Common.SendToDebug("ReverseFormatString text2: " + text2.ToString()); 74 Common.SendToDebug("ReverseFormatString text2: " + text2.ToString());
75 Common.SendToDebug("ReverseFormatString format: " + format); 75 Common.SendToDebug("ReverseFormatString format: " + format);
76 return string.Format(format, text1, text2.ToString()); 76 return string.Format(format, text1, text2.ToString());
77 } 77 }
78 public static string Cast_ToString(object obj) 78 public static string Cast_ToString(object obj)
79 { 79 {
80 Common.SendToDebug("OBJECT TO BE CASTED: " + obj.GetType().ToString()); 80 Common.SendToDebug("OBJECT TO BE CASTED: " + obj.GetType().ToString());
81 return "ABCDEFGIHJKLMNOPQ123"; 81 return "ABCDEFGIHJKLMNOPQ123";
82 } 82 }
83 } 83 }
84} 84}
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/Engine.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/Engine.cs
index a0c900f..f060f06 100644
--- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/Engine.cs
+++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/Engine.cs
@@ -1,300 +1,300 @@
1/* 1/*
2* Copyright (c) Contributors, http://opensimulator.org/ 2* Copyright (c) Contributors, http://opensimulator.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders. 3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4* 4*
5* Redistribution and use in source and binary forms, with or without 5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met: 6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright 7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer. 8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright 9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the 10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution. 11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the 12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products 13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission. 14* derived from this software without specific prior written permission.
15* 15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY 16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY 19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26* 26*
27*/ 27*/
28/* Original code: Tedd Hansen */ 28/* Original code: Tedd Hansen */
29using System; 29using System;
30using System.Reflection; 30using System.Reflection;
31using System.Reflection.Emit; 31using System.Reflection.Emit;
32using System.Threading; 32using System.Threading;
33 33
34 34
35namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO 35namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO
36{ 36{
37 37
38 38
39 public class Engine 39 public class Engine
40 { 40 {
41 //private string LSO_FileName = @"LSO\AdditionTest.lso"; 41 //private string LSO_FileName = @"LSO\AdditionTest.lso";
42 private string LSO_FileName;// = @"LSO\CloseToDefault.lso"; 42 private string LSO_FileName;// = @"LSO\CloseToDefault.lso";
43 AppDomain appDomain; 43 AppDomain appDomain;
44 44
45 public string Compile(string LSOFileName) 45 public string Compile(string LSOFileName)
46 { 46 {
47 LSO_FileName = LSOFileName; 47 LSO_FileName = LSOFileName;
48 48
49 49
50 //appDomain = AppDomain.CreateDomain("AlternateAppDomain"); 50 //appDomain = AppDomain.CreateDomain("AlternateAppDomain");
51 appDomain = Thread.GetDomain(); 51 appDomain = Thread.GetDomain();
52 52
53 // Create Assembly Name 53 // Create Assembly Name
54 AssemblyName asmName = new AssemblyName(); 54 AssemblyName asmName = new AssemblyName();
55 asmName.Name = System.IO.Path.GetFileNameWithoutExtension(LSO_FileName); 55 asmName.Name = System.IO.Path.GetFileNameWithoutExtension(LSO_FileName);
56 //asmName.Name = "TestAssembly"; 56 //asmName.Name = "TestAssembly";
57 57
58 string DLL_FileName = asmName.Name + ".dll"; 58 string DLL_FileName = asmName.Name + ".dll";
59 string DLL_FileName_WithPath = System.IO.Path.GetDirectoryName(LSO_FileName) + @"\" + DLL_FileName; 59 string DLL_FileName_WithPath = System.IO.Path.GetDirectoryName(LSO_FileName) + @"\" + DLL_FileName;
60 60
61 Common.SendToLog("LSO File Name: " + System.IO.Path.GetFileName(LSO_FileName)); 61 Common.SendToLog("LSO File Name: " + System.IO.Path.GetFileName(LSO_FileName));
62 Common.SendToLog("Assembly name: " + asmName.Name); 62 Common.SendToLog("Assembly name: " + asmName.Name);
63 Common.SendToLog("Assembly File Name: " + asmName.Name + ".dll"); 63 Common.SendToLog("Assembly File Name: " + asmName.Name + ".dll");
64 Common.SendToLog("Starting processing of LSL ByteCode..."); 64 Common.SendToLog("Starting processing of LSL ByteCode...");
65 Common.SendToLog(""); 65 Common.SendToLog("");
66 66
67 67
68 68
69 // Create Assembly 69 // Create Assembly
70 AssemblyBuilder asmBuilder = appDomain.DefineDynamicAssembly( 70 AssemblyBuilder asmBuilder = appDomain.DefineDynamicAssembly(
71 asmName, 71 asmName,
72 AssemblyBuilderAccess.RunAndSave 72 AssemblyBuilderAccess.RunAndSave
73 ); 73 );
74 //// Create Assembly 74 //// Create Assembly
75 //AssemblyBuilder asmBuilder = 75 //AssemblyBuilder asmBuilder =
76 // Thread.GetDomain().DefineDynamicAssembly 76 // Thread.GetDomain().DefineDynamicAssembly
77 //(asmName, AssemblyBuilderAccess.RunAndSave); 77 //(asmName, AssemblyBuilderAccess.RunAndSave);
78 78
79 // Create a module (and save to disk) 79 // Create a module (and save to disk)
80 ModuleBuilder modBuilder = asmBuilder.DefineDynamicModule 80 ModuleBuilder modBuilder = asmBuilder.DefineDynamicModule
81 (asmName.Name, 81 (asmName.Name,
82 DLL_FileName); 82 DLL_FileName);
83 83
84 //Common.SendToDebug("asmName.Name is still \"" + asmName.Name + "\""); 84 //Common.SendToDebug("asmName.Name is still \"" + asmName.Name + "\"");
85 // Create a Class (/Type) 85 // Create a Class (/Type)
86 TypeBuilder typeBuilder = modBuilder.DefineType( 86 TypeBuilder typeBuilder = modBuilder.DefineType(
87 "LSL_ScriptObject", 87 "LSL_ScriptObject",
88 TypeAttributes.Public | TypeAttributes.BeforeFieldInit, 88 TypeAttributes.Public | TypeAttributes.BeforeFieldInit,
89 typeof(OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO.LSL_BaseClass)); 89 typeof(OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO.LSL_BaseClass));
90 //, 90 //,
91 // typeof()); 91 // typeof());
92 //, typeof(LSL_BuiltIn_Commands_Interface)); 92 //, typeof(LSL_BuiltIn_Commands_Interface));
93 //, 93 //,
94 // typeof(object), 94 // typeof(object),
95 // new Type[] { typeof(LSL_CLRInterface.LSLScript) }); 95 // new Type[] { typeof(LSL_CLRInterface.LSLScript) });
96 96
97 97
98 98
99 /* 99 /*
100 * Generate the IL itself 100 * Generate the IL itself
101 */ 101 */
102 102
103 LSO_Parser LSOP = new LSO_Parser(LSO_FileName, typeBuilder); 103 LSO_Parser LSOP = new LSO_Parser(LSO_FileName, typeBuilder);
104 LSOP.OpenFile(); 104 LSOP.OpenFile();
105 LSOP.Parse(); 105 LSOP.Parse();
106 106
107 // Constructor has to be created AFTER LSO_Parser because of accumulated variables 107 // Constructor has to be created AFTER LSO_Parser because of accumulated variables
108 if (Common.IL_CreateConstructor) 108 if (Common.IL_CreateConstructor)
109 IL_CREATE_CONSTRUCTOR(typeBuilder, LSOP); 109 IL_CREATE_CONSTRUCTOR(typeBuilder, LSOP);
110 110
111 LSOP.CloseFile(); 111 LSOP.CloseFile();
112 /* 112 /*
113 * Done generating. Create a type and run it. 113 * Done generating. Create a type and run it.
114 */ 114 */
115 115
116 116
117 Common.SendToLog("Attempting to compile assembly..."); 117 Common.SendToLog("Attempting to compile assembly...");
118 // Compile it 118 // Compile it
119 Type type = typeBuilder.CreateType(); 119 Type type = typeBuilder.CreateType();
120 Common.SendToLog("Compilation successful!"); 120 Common.SendToLog("Compilation successful!");
121 121
122 Common.SendToLog("Saving assembly: " + DLL_FileName); 122 Common.SendToLog("Saving assembly: " + DLL_FileName);
123 asmBuilder.Save(DLL_FileName); 123 asmBuilder.Save(DLL_FileName);
124 124
125 Common.SendToLog("Returning assembly filename: " + DLL_FileName); 125 Common.SendToLog("Returning assembly filename: " + DLL_FileName);
126 126
127 127
128 return DLL_FileName; 128 return DLL_FileName;
129 129
130 130
131 //Common.SendToLog("Creating an instance of new assembly..."); 131 //Common.SendToLog("Creating an instance of new assembly...");
132 //// Create an instance we can play with 132 //// Create an instance we can play with
133 ////LSLScript hello = (LSLScript)Activator.CreateInstance(type); 133 ////LSLScript hello = (LSLScript)Activator.CreateInstance(type);
134 ////LSL_CLRInterface.LSLScript MyScript = (LSL_CLRInterface.LSLScript)Activator.CreateInstance(type); 134 ////LSL_CLRInterface.LSLScript MyScript = (LSL_CLRInterface.LSLScript)Activator.CreateInstance(type);
135 //object MyScript = (object)Activator.CreateInstance(type); 135 //object MyScript = (object)Activator.CreateInstance(type);
136 136
137 137
138 138
139 139
140 140
141 //System.Reflection.MemberInfo[] Members = type.GetMembers(); 141 //System.Reflection.MemberInfo[] Members = type.GetMembers();
142 142
143 //Common.SendToLog("Members of assembly " + type.ToString() + ":"); 143 //Common.SendToLog("Members of assembly " + type.ToString() + ":");
144 //foreach (MemberInfo member in Members) 144 //foreach (MemberInfo member in Members)
145 // Common.SendToLog(member.ToString()); 145 // Common.SendToLog(member.ToString());
146 146
147 147
148 //// Play with it 148 //// Play with it
149 ////MyScript.event_state_entry("Test"); 149 ////MyScript.event_state_entry("Test");
150 //object[] args = { null }; 150 //object[] args = { null };
151 ////System.Collections.Generic.List<string> Functions = (System.Collections.Generic.List<string>)type.InvokeMember("GetFunctions", BindingFlags.InvokeMethod, null, MyScript, null); 151 ////System.Collections.Generic.List<string> Functions = (System.Collections.Generic.List<string>)type.InvokeMember("GetFunctions", BindingFlags.InvokeMethod, null, MyScript, null);
152 152
153 //string[] ret = { }; 153 //string[] ret = { };
154 //if (Common.IL_CreateFunctionList) 154 //if (Common.IL_CreateFunctionList)
155 // ret = (string[])type.InvokeMember("GetFunctions", BindingFlags.InvokeMethod, null, MyScript, null); 155 // ret = (string[])type.InvokeMember("GetFunctions", BindingFlags.InvokeMethod, null, MyScript, null);
156 156
157 //foreach (string s in ret) 157 //foreach (string s in ret)
158 //{ 158 //{
159 // Common.SendToLog(""); 159 // Common.SendToLog("");
160 // Common.SendToLog("*** Executing LSL Server Event: " + s); 160 // Common.SendToLog("*** Executing LSL Server Event: " + s);
161 // //object test = type.GetMember(s); 161 // //object test = type.GetMember(s);
162 // //object runner = type.InvokeMember(s, BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Instance, null, MyScript, args); 162 // //object runner = type.InvokeMember(s, BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Instance, null, MyScript, args);
163 // //runner(); 163 // //runner();
164 // //objBooks_Late = type.InvokeMember(s, BindingFlags.CreateInstance, null, objApp_Late, null); 164 // //objBooks_Late = type.InvokeMember(s, BindingFlags.CreateInstance, null, objApp_Late, null);
165 // type.InvokeMember(s, BindingFlags.InvokeMethod, null, MyScript, new object[] { "Test" }); 165 // type.InvokeMember(s, BindingFlags.InvokeMethod, null, MyScript, new object[] { "Test" });
166 166
167 //} 167 //}
168 168
169 169
170 } 170 }
171 171
172 172
173 private static void IL_CREATE_CONSTRUCTOR(TypeBuilder typeBuilder, LSO_Parser LSOP) 173 private static void IL_CREATE_CONSTRUCTOR(TypeBuilder typeBuilder, LSO_Parser LSOP)
174 { 174 {
175 175
176 176
177 Common.SendToDebug("IL_CREATE_CONSTRUCTOR()"); 177 Common.SendToDebug("IL_CREATE_CONSTRUCTOR()");
178 //ConstructorBuilder constructor = typeBuilder.DefineConstructor( 178 //ConstructorBuilder constructor = typeBuilder.DefineConstructor(
179 // MethodAttributes.Public, 179 // MethodAttributes.Public,
180 // CallingConventions.Standard, 180 // CallingConventions.Standard,
181 // new Type[0]); 181 // new Type[0]);
182 ConstructorBuilder constructor = typeBuilder.DefineConstructor( 182 ConstructorBuilder constructor = typeBuilder.DefineConstructor(
183 MethodAttributes.Public | 183 MethodAttributes.Public |
184 MethodAttributes.SpecialName | 184 MethodAttributes.SpecialName |
185 MethodAttributes.RTSpecialName, 185 MethodAttributes.RTSpecialName,
186 CallingConventions.Standard, 186 CallingConventions.Standard,
187 new Type[0]); 187 new Type[0]);
188 188
189 //Define the reflection ConstructorInfor for System.Object 189 //Define the reflection ConstructorInfor for System.Object
190 ConstructorInfo conObj = typeof(LSL_BaseClass).GetConstructor(new Type[0]); 190 ConstructorInfo conObj = typeof(LSL_BaseClass).GetConstructor(new Type[0]);
191 191
192 //call constructor of base object 192 //call constructor of base object
193 ILGenerator il = constructor.GetILGenerator(); 193 ILGenerator il = constructor.GetILGenerator();
194 194
195 il.Emit(OpCodes.Ldarg_0); 195 il.Emit(OpCodes.Ldarg_0);
196 il.Emit(OpCodes.Call, conObj); 196 il.Emit(OpCodes.Call, conObj);
197 197
198 198
199 //Common.SendToDebug("IL_CREATE_CONSTRUCTOR: Creating global: UInt32 State = 0;"); 199 //Common.SendToDebug("IL_CREATE_CONSTRUCTOR: Creating global: UInt32 State = 0;");
200 //string FieldName; 200 //string FieldName;
201 //// Create state object 201 //// Create state object
202 //FieldName = "State"; 202 //FieldName = "State";
203 //FieldBuilder State_fb = typeBuilder.DefineField( 203 //FieldBuilder State_fb = typeBuilder.DefineField(
204 // FieldName, 204 // FieldName,
205 // typeof(UInt32), 205 // typeof(UInt32),
206 // FieldAttributes.Public); 206 // FieldAttributes.Public);
207 //il.Emit(OpCodes.Ldarg_0); 207 //il.Emit(OpCodes.Ldarg_0);
208 //il.Emit(OpCodes.Ldc_I4, 0); 208 //il.Emit(OpCodes.Ldc_I4, 0);
209 //il.Emit(OpCodes.Stfld, State_fb); 209 //il.Emit(OpCodes.Stfld, State_fb);
210 210
211 211
212 //Common.SendToDebug("IL_CREATE_CONSTRUCTOR: Creating global: LSL_BuiltIn_Commands_TestImplementation LSL_BuiltIns = New LSL_BuiltIn_Commands_TestImplementation();"); 212 //Common.SendToDebug("IL_CREATE_CONSTRUCTOR: Creating global: LSL_BuiltIn_Commands_TestImplementation LSL_BuiltIns = New LSL_BuiltIn_Commands_TestImplementation();");
213 ////Type objType1 = typeof(object); 213 ////Type objType1 = typeof(object);
214 //Type objType1 = typeof(LSL_BuiltIn_Commands_TestImplementation); 214 //Type objType1 = typeof(LSL_BuiltIn_Commands_TestImplementation);
215 215
216 //FieldName = "LSL_BuiltIns"; 216 //FieldName = "LSL_BuiltIns";
217 //FieldBuilder LSL_BuiltIns_fb = typeBuilder.DefineField( 217 //FieldBuilder LSL_BuiltIns_fb = typeBuilder.DefineField(
218 // FieldName, 218 // FieldName,
219 // objType1, 219 // objType1,
220 // FieldAttributes.Public); 220 // FieldAttributes.Public);
221 221
222 ////LSL_BuiltIn_Commands_TestImplementation _ti = new LSL_BuiltIn_Commands_TestImplementation(); 222 ////LSL_BuiltIn_Commands_TestImplementation _ti = new LSL_BuiltIn_Commands_TestImplementation();
223 //il.Emit(OpCodes.Ldarg_0); 223 //il.Emit(OpCodes.Ldarg_0);
224 ////il.Emit(OpCodes.Ldstr, "Test 123"); 224 ////il.Emit(OpCodes.Ldstr, "Test 123");
225 //il.Emit(OpCodes.Newobj, objType1.GetConstructor(new Type[] { })); 225 //il.Emit(OpCodes.Newobj, objType1.GetConstructor(new Type[] { }));
226 //il.Emit(OpCodes.Stfld, LSL_BuiltIns_fb); 226 //il.Emit(OpCodes.Stfld, LSL_BuiltIns_fb);
227 227
228 foreach (UInt32 pos in LSOP.StaticBlocks.Keys) 228 foreach (UInt32 pos in LSOP.StaticBlocks.Keys)
229 { 229 {
230 LSO_Struct.StaticBlock sb; 230 LSO_Struct.StaticBlock sb;
231 LSOP.StaticBlocks.TryGetValue(pos, out sb); 231 LSOP.StaticBlocks.TryGetValue(pos, out sb);
232 232
233 if (sb.ObjectType > 0 && sb.ObjectType < 8) { // We don't want void or null's 233 if (sb.ObjectType > 0 && sb.ObjectType < 8) { // We don't want void or null's
234 234
235 il.Emit(OpCodes.Ldarg_0); 235 il.Emit(OpCodes.Ldarg_0);
236 // Push position to stack 236 // Push position to stack
237 il.Emit(OpCodes.Ldc_I4, pos); 237 il.Emit(OpCodes.Ldc_I4, pos);
238 //il.Emit(OpCodes.Box, typeof(UInt32)); 238 //il.Emit(OpCodes.Box, typeof(UInt32));
239 239
240 240
241 Type datatype = null; 241 Type datatype = null;
242 242
243 // Push data to stack 243 // Push data to stack
244 Common.SendToDebug("Adding to static (" + pos + ") type: " + ((LSO_Enums.Variable_Type_Codes)sb.ObjectType).ToString() + " (" + sb.ObjectType + ")"); 244 Common.SendToDebug("Adding to static (" + pos + ") type: " + ((LSO_Enums.Variable_Type_Codes)sb.ObjectType).ToString() + " (" + sb.ObjectType + ")");
245 switch ((LSO_Enums.Variable_Type_Codes)sb.ObjectType) 245 switch ((LSO_Enums.Variable_Type_Codes)sb.ObjectType)
246 { 246 {
247 case LSO_Enums.Variable_Type_Codes.Float: 247 case LSO_Enums.Variable_Type_Codes.Float:
248 case LSO_Enums.Variable_Type_Codes.Integer: 248 case LSO_Enums.Variable_Type_Codes.Integer:
249 //UInt32 249 //UInt32
250 il.Emit(OpCodes.Ldc_I4, BitConverter.ToUInt32(sb.BlockVariable, 0)); 250 il.Emit(OpCodes.Ldc_I4, BitConverter.ToUInt32(sb.BlockVariable, 0));
251 datatype = typeof(UInt32); 251 datatype = typeof(UInt32);
252 il.Emit(OpCodes.Box, datatype); 252 il.Emit(OpCodes.Box, datatype);
253 break; 253 break;
254 case LSO_Enums.Variable_Type_Codes.String: 254 case LSO_Enums.Variable_Type_Codes.String:
255 case LSO_Enums.Variable_Type_Codes.Key: 255 case LSO_Enums.Variable_Type_Codes.Key:
256 //String 256 //String
257 LSO_Struct.HeapBlock hb = LSOP.GetHeap(LSOP.myHeader.HR + BitConverter.ToUInt32(sb.BlockVariable, 0) - 1); 257 LSO_Struct.HeapBlock hb = LSOP.GetHeap(LSOP.myHeader.HR + BitConverter.ToUInt32(sb.BlockVariable, 0) - 1);
258 il.Emit(OpCodes.Ldstr, System.Text.Encoding.UTF8.GetString(hb.Data)); 258 il.Emit(OpCodes.Ldstr, System.Text.Encoding.UTF8.GetString(hb.Data));
259 datatype = typeof(string); 259 datatype = typeof(string);
260 break; 260 break;
261 case LSO_Enums.Variable_Type_Codes.Vector: 261 case LSO_Enums.Variable_Type_Codes.Vector:
262 datatype = typeof(LSO_Enums.Vector); 262 datatype = typeof(LSO_Enums.Vector);
263 //TODO: Not implemented 263 //TODO: Not implemented
264 break; 264 break;
265 case LSO_Enums.Variable_Type_Codes.Rotation: 265 case LSO_Enums.Variable_Type_Codes.Rotation:
266 //Object 266 //Object
267 //TODO: Not implemented 267 //TODO: Not implemented
268 datatype = typeof(LSO_Enums.Rotation); 268 datatype = typeof(LSO_Enums.Rotation);
269 break; 269 break;
270 default: 270 default:
271 datatype = typeof(object); 271 datatype = typeof(object);
272 break; 272 break;
273 } 273 }
274 274
275 275
276 // Make call 276 // Make call
277 il.Emit(OpCodes.Call, typeof(LSL_BaseClass).GetMethod("AddToStatic", new Type[] { typeof(UInt32), datatype })); 277 il.Emit(OpCodes.Call, typeof(LSL_BaseClass).GetMethod("AddToStatic", new Type[] { typeof(UInt32), datatype }));
278 } 278 }
279 279
280 } 280 }
281 281
282 282
283 283
284 284
285 ////il.Emit(OpCodes.Newobj, typeof(UInt32)); 285 ////il.Emit(OpCodes.Newobj, typeof(UInt32));
286 //il.Emit(OpCodes.Starg_0); 286 //il.Emit(OpCodes.Starg_0);
287 //// Create LSL function library 287 //// Create LSL function library
288 //FieldBuilder LSL_BuiltIns_fb = typeBuilder.DefineField("LSL_BuiltIns", typeof(LSL_BuiltIn_Commands_Interface), FieldAttributes.Public); 288 //FieldBuilder LSL_BuiltIns_fb = typeBuilder.DefineField("LSL_BuiltIns", typeof(LSL_BuiltIn_Commands_Interface), FieldAttributes.Public);
289 //il.Emit(OpCodes.Newobj, typeof(LSL_BuiltIn_Commands_Interface)); 289 //il.Emit(OpCodes.Newobj, typeof(LSL_BuiltIn_Commands_Interface));
290 //il.Emit(OpCodes.Stloc_1); 290 //il.Emit(OpCodes.Stloc_1);
291 291
292 il.Emit(OpCodes.Ret); 292 il.Emit(OpCodes.Ret);
293 } 293 }
294 294
295 295
296 296
297 297
298 // End of class 298 // End of class
299 } 299 }
300} 300}
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/IL_common_functions.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/IL_common_functions.cs
index f6444be..65be5e3 100644
--- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/IL_common_functions.cs
+++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/IL_common_functions.cs
@@ -1,56 +1,56 @@
1/* 1/*
2* Copyright (c) Contributors, http://opensimulator.org/ 2* Copyright (c) Contributors, http://opensimulator.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders. 3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4* 4*
5* Redistribution and use in source and binary forms, with or without 5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met: 6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright 7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer. 8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright 9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the 10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution. 11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the 12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products 13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission. 14* derived from this software without specific prior written permission.
15* 15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY 16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY 19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26* 26*
27*/ 27*/
28/* Original code: Tedd Hansen */ 28/* Original code: Tedd Hansen */
29using System; 29using System;
30using System.Collections.Generic; 30using System.Collections.Generic;
31using System.Text; 31using System.Text;
32using System.Reflection; 32using System.Reflection;
33using System.Reflection.Emit; 33using System.Reflection.Emit;
34 34
35namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO 35namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO
36{ 36{
37 partial class LSO_Parser 37 partial class LSO_Parser
38 { 38 {
39 private static TypeBuilder CreateType(ModuleBuilder modBuilder, string typeName) 39 private static TypeBuilder CreateType(ModuleBuilder modBuilder, string typeName)
40 { 40 {
41 TypeBuilder typeBuilder = modBuilder.DefineType(typeName, 41 TypeBuilder typeBuilder = modBuilder.DefineType(typeName,
42 TypeAttributes.Public | 42 TypeAttributes.Public |
43 TypeAttributes.Class | 43 TypeAttributes.Class |
44 TypeAttributes.AutoClass | 44 TypeAttributes.AutoClass |
45 TypeAttributes.AnsiClass | 45 TypeAttributes.AnsiClass |
46 TypeAttributes.BeforeFieldInit | 46 TypeAttributes.BeforeFieldInit |
47 TypeAttributes.AutoLayout, 47 TypeAttributes.AutoLayout,
48 typeof(object), 48 typeof(object),
49 new Type[] { typeof(object) }); 49 new Type[] { typeof(object) });
50 return typeBuilder; 50 return typeBuilder;
51 51
52 } 52 }
53 53
54 54
55 } 55 }
56} 56}
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_BaseClass.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_BaseClass.cs
index 374d37d..9cbb879 100644
--- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_BaseClass.cs
+++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_BaseClass.cs
@@ -1,60 +1,60 @@
1using System; 1using System;
2using System.Collections.Generic; 2using System.Collections.Generic;
3using System.Text; 3using System.Text;
4using System.IO; 4using System.IO;
5using OpenSim.Region.ScriptEngine.DotNetEngine.Compiler; 5using OpenSim.Region.ScriptEngine.DotNetEngine.Compiler;
6using OpenSim.Region.ScriptEngine.Common; 6using OpenSim.Region.ScriptEngine.Common;
7 7
8namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO 8namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO
9{ 9{
10 public partial class LSL_BaseClass 10 public partial class LSL_BaseClass
11 { 11 {
12 //public MemoryStream LSLStack = new MemoryStream(); 12 //public MemoryStream LSLStack = new MemoryStream();
13 public Stack<object> LSLStack = new Stack<object>(); 13 public Stack<object> LSLStack = new Stack<object>();
14 public Dictionary<UInt32, object> StaticVariables = new Dictionary<UInt32, object>(); 14 public Dictionary<UInt32, object> StaticVariables = new Dictionary<UInt32, object>();
15 public Dictionary<UInt32, object> GlobalVariables = new Dictionary<UInt32, object>(); 15 public Dictionary<UInt32, object> GlobalVariables = new Dictionary<UInt32, object>();
16 public Dictionary<UInt32, object> LocalVariables = new Dictionary<UInt32, object>(); 16 public Dictionary<UInt32, object> LocalVariables = new Dictionary<UInt32, object>();
17 //public System.Collections.Generic.List<string> FunctionList = new System.Collections.Generic.List<string>(); 17 //public System.Collections.Generic.List<string> FunctionList = new System.Collections.Generic.List<string>();
18 //public void AddFunction(String x) { 18 //public void AddFunction(String x) {
19 // FunctionList.Add(x); 19 // FunctionList.Add(x);
20 //} 20 //}
21 //public Stack<StackItemStruct> LSLStack = new Stack<StackItemStruct>; 21 //public Stack<StackItemStruct> LSLStack = new Stack<StackItemStruct>;
22 //public struct StackItemStruct 22 //public struct StackItemStruct
23 //{ 23 //{
24 // public LSO_Enums.Variable_Type_Codes ItemType; 24 // public LSO_Enums.Variable_Type_Codes ItemType;
25 // public object Data; 25 // public object Data;
26 //} 26 //}
27 public UInt32 State = 0; 27 public UInt32 State = 0;
28 public LSL_BuiltIn_Commands_Interface LSL_Builtins; 28 public LSL_BuiltIn_Commands_Interface LSL_Builtins;
29 public LSL_BuiltIn_Commands_Interface GetLSL_BuiltIn() 29 public LSL_BuiltIn_Commands_Interface GetLSL_BuiltIn()
30 { 30 {
31 return LSL_Builtins; 31 return LSL_Builtins;
32 } 32 }
33 33
34 34
35 public LSL_BaseClass() { } 35 public LSL_BaseClass() { }
36 36
37 37
38 public virtual int OverrideMe() 38 public virtual int OverrideMe()
39 { 39 {
40 return 0; 40 return 0;
41 } 41 }
42 public void Start(LSL_BuiltIn_Commands_Interface LSLBuiltins) 42 public void Start(LSL_BuiltIn_Commands_Interface LSLBuiltins)
43 { 43 {
44 LSL_Builtins = LSLBuiltins; 44 LSL_Builtins = LSLBuiltins;
45 45
46 Common.SendToLog("OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO.LSL_BaseClass.Start() called"); 46 Common.SendToLog("OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO.LSL_BaseClass.Start() called");
47 //LSL_Builtins.llSay(0, "Test"); 47 //LSL_Builtins.llSay(0, "Test");
48 return; 48 return;
49 } 49 }
50 50
51 public void AddToStatic(UInt32 index, object obj) 51 public void AddToStatic(UInt32 index, object obj)
52 { 52 {
53 Common.SendToDebug("AddToStatic: " + index + " type: " + obj.GetType()); 53 Common.SendToDebug("AddToStatic: " + index + " type: " + obj.GetType());
54 StaticVariables.Add(index, obj); 54 StaticVariables.Add(index, obj);
55 } 55 }
56 56
57 57
58 58
59 } 59 }
60} 60}
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_BaseClass_Builtins.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_BaseClass_Builtins.cs
index d3ca625..3b47d08 100644
--- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_BaseClass_Builtins.cs
+++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_BaseClass_Builtins.cs
@@ -1,373 +1,373 @@
1//using System; 1//using System;
2//using System.Collections.Generic; 2//using System.Collections.Generic;
3//using System.Text; 3//using System.Text;
4 4
5//namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO 5//namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO
6//{ 6//{
7// public partial class LSL_BaseClass 7// public partial class LSL_BaseClass
8// { 8// {
9 9
10 10
11// public float llSin() { 11// public float llSin() {
12// float f = (float)LSLStack.Pop(); 12// float f = (float)LSLStack.Pop();
13// return LSL_Builtins.llSin(f); 13// return LSL_Builtins.llSin(f);
14// } 14// }
15// public float llCos() { 15// public float llCos() {
16// float f = (float)LSLStack.Pop(); 16// float f = (float)LSLStack.Pop();
17// return LSL_Builtins.llCos(f); 17// return LSL_Builtins.llCos(f);
18// } 18// }
19// public float llTan() { 19// public float llTan() {
20// float f = (float)LSLStack.Pop(); 20// float f = (float)LSLStack.Pop();
21// return LSL_Builtins.llTan(f); 21// return LSL_Builtins.llTan(f);
22// } 22// }
23// public float llAtan2() { 23// public float llAtan2() {
24// float x = (float)LSLStack.Pop(); 24// float x = (float)LSLStack.Pop();
25// float y = (float)LSLStack.Pop(); 25// float y = (float)LSLStack.Pop();
26// return LSL_Builtins.llAtan2(x, y); 26// return LSL_Builtins.llAtan2(x, y);
27// } 27// }
28// public float llSqrt() { 28// public float llSqrt() {
29// float f = (float)LSLStack.Pop(); 29// float f = (float)LSLStack.Pop();
30// return LSL_Builtins.llSqrt(f); 30// return LSL_Builtins.llSqrt(f);
31// } 31// }
32// float llPow() 32// float llPow()
33// { 33// {
34// float fexponent = (float)LSLStack.Pop(); 34// float fexponent = (float)LSLStack.Pop();
35// float fbase = (float)LSLStack.Pop(); 35// float fbase = (float)LSLStack.Pop();
36// return LSL_Builtins.llPow(fbase, fexponent); 36// return LSL_Builtins.llPow(fbase, fexponent);
37// } 37// }
38// //UInt32 llAbs(UInt32 i){ return; } 38// //UInt32 llAbs(UInt32 i){ return; }
39// //float llFabs(float f){ return; } 39// //float llFabs(float f){ return; }
40// //float llFrand(float mag){ return; } 40// //float llFrand(float mag){ return; }
41// //UInt32 llFloor(float f){ return; } 41// //UInt32 llFloor(float f){ return; }
42// //UInt32 llCeil(float f){ return; } 42// //UInt32 llCeil(float f){ return; }
43// //UInt32 llRound(float f){ return; } 43// //UInt32 llRound(float f){ return; }
44// //float llVecMag(LSO_Enums.Vector v){ return; } 44// //float llVecMag(LSO_Enums.Vector v){ return; }
45// //LSO_Enums.Vector llVecNorm(LSO_Enums.Vector v){ return; } 45// //LSO_Enums.Vector llVecNorm(LSO_Enums.Vector v){ return; }
46// //float llVecDist(LSO_Enums.Vector a, LSO_Enums.Vector b){ return; } 46// //float llVecDist(LSO_Enums.Vector a, LSO_Enums.Vector b){ return; }
47// //LSO_Enums.Vector llRot2Euler(LSO_Enums.Rotation r){ return; } 47// //LSO_Enums.Vector llRot2Euler(LSO_Enums.Rotation r){ return; }
48// //LSO_Enums.Rotation llEuler2Rot(LSO_Enums.Vector v){ return; } 48// //LSO_Enums.Rotation llEuler2Rot(LSO_Enums.Vector v){ return; }
49// //LSO_Enums.Rotation llAxes2Rot(LSO_Enums.Vector fwd, LSO_Enums.Vector left, LSO_Enums.Vector up){ return; } 49// //LSO_Enums.Rotation llAxes2Rot(LSO_Enums.Vector fwd, LSO_Enums.Vector left, LSO_Enums.Vector up){ return; }
50// //LSO_Enums.Vector llRot2Fwd(LSO_Enums.Rotation r){ return; } 50// //LSO_Enums.Vector llRot2Fwd(LSO_Enums.Rotation r){ return; }
51// //LSO_Enums.Vector llRot2Left(LSO_Enums.Rotation r){ return; } 51// //LSO_Enums.Vector llRot2Left(LSO_Enums.Rotation r){ return; }
52// //LSO_Enums.Vector llRot2Up(LSO_Enums.Rotation r){ return; } 52// //LSO_Enums.Vector llRot2Up(LSO_Enums.Rotation r){ return; }
53// //LSO_Enums.Rotation llRotBetween(LSO_Enums.Vector start, LSO_Enums.Vector end){ return; } 53// //LSO_Enums.Rotation llRotBetween(LSO_Enums.Vector start, LSO_Enums.Vector end){ return; }
54// public void llWhisper() 54// public void llWhisper()
55// { 55// {
56// UInt16 i = (UInt16)LSLStack.Pop(); 56// UInt16 i = (UInt16)LSLStack.Pop();
57// string s = (string)LSLStack.Pop(); 57// string s = (string)LSLStack.Pop();
58// LSL_Builtins.llWhisper(i, s); 58// LSL_Builtins.llWhisper(i, s);
59// } 59// }
60// public void llSay() 60// public void llSay()
61// { 61// {
62// UInt16 i = (UInt16)LSLStack.Pop(); 62// UInt16 i = (UInt16)LSLStack.Pop();
63// string s = (string)LSLStack.Pop(); 63// string s = (string)LSLStack.Pop();
64// LSL_Builtins.llSay(i, s); 64// LSL_Builtins.llSay(i, s);
65// } 65// }
66// //void llShout(UInt16 channelID, string text); 66// //void llShout(UInt16 channelID, string text);
67// //UInt32 llListen(UInt16 channelID, string name, LSO_Enums.Key ID, string msg); 67// //UInt32 llListen(UInt16 channelID, string name, LSO_Enums.Key ID, string msg);
68// //void llListenControl(UInt32 number, UInt32 active); 68// //void llListenControl(UInt32 number, UInt32 active);
69// //void llListenRemove(UInt32 number); 69// //void llListenRemove(UInt32 number);
70// //void llSensor(string name, LSO_Enums.Key id, UInt32 type, float range, float arc); 70// //void llSensor(string name, LSO_Enums.Key id, UInt32 type, float range, float arc);
71// //void llSensorRepeat(string name, LSO_Enums.Key id, UInt32 type, float range, float arc, float rate); 71// //void llSensorRepeat(string name, LSO_Enums.Key id, UInt32 type, float range, float arc, float rate);
72// //void llSensorRemove(); 72// //void llSensorRemove();
73// //string llDetectedName(UInt32 number); 73// //string llDetectedName(UInt32 number);
74// //LSO_Enums.Key llDetectedKey(UInt32 number); 74// //LSO_Enums.Key llDetectedKey(UInt32 number);
75// //LSO_Enums.Key llDetectedOwner(UInt32 number); 75// //LSO_Enums.Key llDetectedOwner(UInt32 number);
76// //UInt32 llDetectedType(UInt32 number); 76// //UInt32 llDetectedType(UInt32 number);
77// //LSO_Enums.Vector llDetectedPos(UInt32 number); 77// //LSO_Enums.Vector llDetectedPos(UInt32 number);
78// //LSO_Enums.Vector llDetectedVel(UInt32 number); 78// //LSO_Enums.Vector llDetectedVel(UInt32 number);
79// //LSO_Enums.Vector llDetectedGrab(UInt32 number); 79// //LSO_Enums.Vector llDetectedGrab(UInt32 number);
80// //LSO_Enums.Rotation llDetectedRot(UInt32 number); 80// //LSO_Enums.Rotation llDetectedRot(UInt32 number);
81// //UInt32 llDetectedGroup(UInt32 number); 81// //UInt32 llDetectedGroup(UInt32 number);
82// //UInt32 llDetectedLinkNumber(UInt32 number); 82// //UInt32 llDetectedLinkNumber(UInt32 number);
83// //void llDie(); 83// //void llDie();
84// //float llGround(LSO_Enums.Vector offset); 84// //float llGround(LSO_Enums.Vector offset);
85// //float llCloud(LSO_Enums.Vector offset); 85// //float llCloud(LSO_Enums.Vector offset);
86// //LSO_Enums.Vector llWind(LSO_Enums.Vector offset); 86// //LSO_Enums.Vector llWind(LSO_Enums.Vector offset);
87// //void llSetStatus(UInt32 status, UInt32 value); 87// //void llSetStatus(UInt32 status, UInt32 value);
88// //UInt32 llGetStatus(UInt32 status); 88// //UInt32 llGetStatus(UInt32 status);
89// //void llSetScale(LSO_Enums.Vector scale); 89// //void llSetScale(LSO_Enums.Vector scale);
90// //LSO_Enums.Vector llGetScale(); 90// //LSO_Enums.Vector llGetScale();
91// //void llSetColor(); 91// //void llSetColor();
92// //float llGetAlpha(); 92// //float llGetAlpha();
93// //void llSetAlpha(); 93// //void llSetAlpha();
94// //LSO_Enums.Vector llGetColor(); 94// //LSO_Enums.Vector llGetColor();
95// //void llSetTexture(); 95// //void llSetTexture();
96// //void llScaleTexture(); 96// //void llScaleTexture();
97// //void llOffsetTexture(); 97// //void llOffsetTexture();
98// //void llRotateTexture(); 98// //void llRotateTexture();
99// //string llGetTexture(); 99// //string llGetTexture();
100// //void llSetPos(); 100// //void llSetPos();
101 101
102// public void llGetPos() { } 102// public void llGetPos() { }
103// public void llGetLocalPos() { } 103// public void llGetLocalPos() { }
104// public void llSetRot() { } 104// public void llSetRot() { }
105// public void llGetRot() { } 105// public void llGetRot() { }
106// public void llGetLocalRot() { } 106// public void llGetLocalRot() { }
107// public void llSetForce() { } 107// public void llSetForce() { }
108// public void llGetForce() { } 108// public void llGetForce() { }
109// public void llTarget() { } 109// public void llTarget() { }
110// public void llTargetRemove() { } 110// public void llTargetRemove() { }
111// public void llRotTarget() { } 111// public void llRotTarget() { }
112// public void llRotTargetRemove() { } 112// public void llRotTargetRemove() { }
113// public void llMoveToTarget() { } 113// public void llMoveToTarget() { }
114// public void llStopMoveToTarget() { } 114// public void llStopMoveToTarget() { }
115// public void llApplyImpulse() { } 115// public void llApplyImpulse() { }
116// public void llApplyRotationalImpulse() { } 116// public void llApplyRotationalImpulse() { }
117// public void llSetTorque() { } 117// public void llSetTorque() { }
118// public void llGetTorque() { } 118// public void llGetTorque() { }
119// public void llSetForceAndTorque() { } 119// public void llSetForceAndTorque() { }
120// public void llGetVel() { } 120// public void llGetVel() { }
121// public void llGetAccel() { } 121// public void llGetAccel() { }
122// public void llGetOmega() { } 122// public void llGetOmega() { }
123// public void llGetTimeOfDay() { } 123// public void llGetTimeOfDay() { }
124// public void llGetWallclock() { } 124// public void llGetWallclock() { }
125// public void llGetTime() { } 125// public void llGetTime() { }
126// public void llResetTime() { } 126// public void llResetTime() { }
127// public void llGetAndResetTime() { } 127// public void llGetAndResetTime() { }
128// public void llSound() { } 128// public void llSound() { }
129// public void llPlaySound() { } 129// public void llPlaySound() { }
130// public void llLoopSound() { } 130// public void llLoopSound() { }
131// public void llLoopSoundMaster() { } 131// public void llLoopSoundMaster() { }
132// public void llLoopSoundSlave() { } 132// public void llLoopSoundSlave() { }
133// public void llPlaySoundSlave() { } 133// public void llPlaySoundSlave() { }
134// public void llTriggerSound() { } 134// public void llTriggerSound() { }
135// public void llStopSound() { } 135// public void llStopSound() { }
136// public void llPreloadSound() { } 136// public void llPreloadSound() { }
137// public void llGetSubString() { } 137// public void llGetSubString() { }
138// public void llDeleteSubString() { } 138// public void llDeleteSubString() { }
139// public void llInsertString() { } 139// public void llInsertString() { }
140// public void llToUpper() { } 140// public void llToUpper() { }
141// public void llToLower() { } 141// public void llToLower() { }
142// public void llGiveMoney() { } 142// public void llGiveMoney() { }
143// public void llMakeExplosion() { } 143// public void llMakeExplosion() { }
144// public void llMakeFountain() { } 144// public void llMakeFountain() { }
145// public void llMakeSmoke() { } 145// public void llMakeSmoke() { }
146// public void llMakeFire() { } 146// public void llMakeFire() { }
147// public void llRezObject() { } 147// public void llRezObject() { }
148// public void llLookAt() { } 148// public void llLookAt() { }
149// public void llStopLookAt() { } 149// public void llStopLookAt() { }
150// public void llSetTimerEvent() { } 150// public void llSetTimerEvent() { }
151// public void llSleep() { } 151// public void llSleep() { }
152// public void llGetMass() { } 152// public void llGetMass() { }
153// public void llCollisionFilter() { } 153// public void llCollisionFilter() { }
154// public void llTakeControls() { } 154// public void llTakeControls() { }
155// public void llReleaseControls() { } 155// public void llReleaseControls() { }
156// public void llAttachToAvatar() { } 156// public void llAttachToAvatar() { }
157// public void llDetachFromAvatar() { } 157// public void llDetachFromAvatar() { }
158// public void llTakeCamera() { } 158// public void llTakeCamera() { }
159// public void llReleaseCamera() { } 159// public void llReleaseCamera() { }
160// public void llGetOwner() { } 160// public void llGetOwner() { }
161// public void llInstantMessage() { } 161// public void llInstantMessage() { }
162// public void llEmail() { } 162// public void llEmail() { }
163// public void llGetNextEmail() { } 163// public void llGetNextEmail() { }
164// public void llGetKey() { } 164// public void llGetKey() { }
165// public void llSetBuoyancy() { } 165// public void llSetBuoyancy() { }
166// public void llSetHoverHeight() { } 166// public void llSetHoverHeight() { }
167// public void llStopHover() { } 167// public void llStopHover() { }
168// public void llMinEventDelay() { } 168// public void llMinEventDelay() { }
169// public void llSoundPreload() { } 169// public void llSoundPreload() { }
170// public void llRotLookAt() { } 170// public void llRotLookAt() { }
171// public void llStringLength() { } 171// public void llStringLength() { }
172// public void llStartAnimation() { } 172// public void llStartAnimation() { }
173// public void llStopAnimation() { } 173// public void llStopAnimation() { }
174// public void llPointAt() { } 174// public void llPointAt() { }
175// public void llStopPointAt() { } 175// public void llStopPointAt() { }
176// public void llTargetOmega() { } 176// public void llTargetOmega() { }
177// public void llGetStartParameter() { } 177// public void llGetStartParameter() { }
178// public void llGodLikeRezObject() { } 178// public void llGodLikeRezObject() { }
179// public void llRequestPermissions() { } 179// public void llRequestPermissions() { }
180// public void llGetPermissionsKey() { } 180// public void llGetPermissionsKey() { }
181// public void llGetPermissions() { } 181// public void llGetPermissions() { }
182// public void llGetLinkNumber() { } 182// public void llGetLinkNumber() { }
183// public void llSetLinkColor() { } 183// public void llSetLinkColor() { }
184// public void llCreateLink() { } 184// public void llCreateLink() { }
185// public void llBreakLink() { } 185// public void llBreakLink() { }
186// public void llBreakAllLinks() { } 186// public void llBreakAllLinks() { }
187// public void llGetLinkKey() { } 187// public void llGetLinkKey() { }
188// public void llGetLinkName() { } 188// public void llGetLinkName() { }
189// public void llGetInventoryNumber() { } 189// public void llGetInventoryNumber() { }
190// public void llGetInventoryName() { } 190// public void llGetInventoryName() { }
191// public void llSetScriptState() { } 191// public void llSetScriptState() { }
192// public void llGetEnergy() { } 192// public void llGetEnergy() { }
193// public void llGiveInventory() { } 193// public void llGiveInventory() { }
194// public void llRemoveInventory() { } 194// public void llRemoveInventory() { }
195// public void llSetText() { } 195// public void llSetText() { }
196// public void llWater() { } 196// public void llWater() { }
197// public void llPassTouches() { } 197// public void llPassTouches() { }
198// public void llRequestAgentData() { } 198// public void llRequestAgentData() { }
199// public void llRequestInventoryData() { } 199// public void llRequestInventoryData() { }
200// public void llSetDamage() { } 200// public void llSetDamage() { }
201// public void llTeleportAgentHome() { } 201// public void llTeleportAgentHome() { }
202// public void llModifyLand() { } 202// public void llModifyLand() { }
203// public void llCollisionSound() { } 203// public void llCollisionSound() { }
204// public void llCollisionSprite() { } 204// public void llCollisionSprite() { }
205// public void llGetAnimation() { } 205// public void llGetAnimation() { }
206// public void llResetScript() { } 206// public void llResetScript() { }
207// public void llMessageLinked() { } 207// public void llMessageLinked() { }
208// public void llPushObject() { } 208// public void llPushObject() { }
209// public void llPassCollisions() { } 209// public void llPassCollisions() { }
210// public void llGetScriptName() { } 210// public void llGetScriptName() { }
211// public void llGetNumberOfSides() { } 211// public void llGetNumberOfSides() { }
212// public void llAxisAngle2Rot() { } 212// public void llAxisAngle2Rot() { }
213// public void llRot2Axis() { } 213// public void llRot2Axis() { }
214// public void llRot2Angle() { } 214// public void llRot2Angle() { }
215// public void llAcos() { } 215// public void llAcos() { }
216// public void llAsin() { } 216// public void llAsin() { }
217// public void llAngleBetween() { } 217// public void llAngleBetween() { }
218// public void llGetInventoryKey() { } 218// public void llGetInventoryKey() { }
219// public void llAllowInventoryDrop() { } 219// public void llAllowInventoryDrop() { }
220// public void llGetSunDirection() { } 220// public void llGetSunDirection() { }
221// public void llGetTextureOffset() { } 221// public void llGetTextureOffset() { }
222// public void llGetTextureScale() { } 222// public void llGetTextureScale() { }
223// public void llGetTextureRot() { } 223// public void llGetTextureRot() { }
224// public void llSubStringIndex() { } 224// public void llSubStringIndex() { }
225// public void llGetOwnerKey() { } 225// public void llGetOwnerKey() { }
226// public void llGetCenterOfMass() { } 226// public void llGetCenterOfMass() { }
227// public void llListSort() { } 227// public void llListSort() { }
228// public void llGetListLength() { } 228// public void llGetListLength() { }
229// public void llList2Integer() { } 229// public void llList2Integer() { }
230// public void llList2Float() { } 230// public void llList2Float() { }
231// public void llList2String() { } 231// public void llList2String() { }
232// public void llList2Key() { } 232// public void llList2Key() { }
233// public void llList2Vector() { } 233// public void llList2Vector() { }
234// public void llList2Rot() { } 234// public void llList2Rot() { }
235// public void llList2List() { } 235// public void llList2List() { }
236// public void llDeleteSubList() { } 236// public void llDeleteSubList() { }
237// public void llGetListEntryType() { } 237// public void llGetListEntryType() { }
238// public void llList2CSV() { } 238// public void llList2CSV() { }
239// public void llCSV2List() { } 239// public void llCSV2List() { }
240// public void llListRandomize() { } 240// public void llListRandomize() { }
241// public void llList2ListStrided() { } 241// public void llList2ListStrided() { }
242// public void llGetRegionCorner() { } 242// public void llGetRegionCorner() { }
243// public void llListInsertList() { } 243// public void llListInsertList() { }
244// public void llListFindList() { } 244// public void llListFindList() { }
245// public void llGetObjectName() { } 245// public void llGetObjectName() { }
246// public void llSetObjectName() { } 246// public void llSetObjectName() { }
247// public void llGetDate() { } 247// public void llGetDate() { }
248// public void llEdgeOfWorld() { } 248// public void llEdgeOfWorld() { }
249// public void llGetAgentInfo() { } 249// public void llGetAgentInfo() { }
250// public void llAdjustSoundVolume() { } 250// public void llAdjustSoundVolume() { }
251// public void llSetSoundQueueing() { } 251// public void llSetSoundQueueing() { }
252// public void llSetSoundRadius() { } 252// public void llSetSoundRadius() { }
253// public void llKey2Name() { } 253// public void llKey2Name() { }
254// public void llSetTextureAnim() { } 254// public void llSetTextureAnim() { }
255// public void llTriggerSoundLimited() { } 255// public void llTriggerSoundLimited() { }
256// public void llEjectFromLand() { } 256// public void llEjectFromLand() { }
257// public void llParseString2List() { } 257// public void llParseString2List() { }
258// public void llOverMyLand() { } 258// public void llOverMyLand() { }
259// public void llGetLandOwnerAt() { } 259// public void llGetLandOwnerAt() { }
260// public void llGetNotecardLine() { } 260// public void llGetNotecardLine() { }
261// public void llGetAgentSize() { } 261// public void llGetAgentSize() { }
262// public void llSameGroup() { } 262// public void llSameGroup() { }
263// public void llUnSit() { } 263// public void llUnSit() { }
264// public void llGroundSlope() { } 264// public void llGroundSlope() { }
265// public void llGroundNormal() { } 265// public void llGroundNormal() { }
266// public void llGroundContour() { } 266// public void llGroundContour() { }
267// public void llGetAttached() { } 267// public void llGetAttached() { }
268// public void llGetFreeMemory() { } 268// public void llGetFreeMemory() { }
269// public void llGetRegionName() { } 269// public void llGetRegionName() { }
270// public void llGetRegionTimeDilation() { } 270// public void llGetRegionTimeDilation() { }
271// public void llGetRegionFPS() { } 271// public void llGetRegionFPS() { }
272// public void llParticleSystem() { } 272// public void llParticleSystem() { }
273// public void llGroundRepel() { } 273// public void llGroundRepel() { }
274// public void llGiveInventoryList() { } 274// public void llGiveInventoryList() { }
275// public void llSetVehicleType() { } 275// public void llSetVehicleType() { }
276// public void llSetVehicleFloatParam() { } 276// public void llSetVehicleFloatParam() { }
277// public void llSetVehicleVectorParam() { } 277// public void llSetVehicleVectorParam() { }
278// public void llSetVehicleRotationParam() { } 278// public void llSetVehicleRotationParam() { }
279// public void llSetVehicleFlags() { } 279// public void llSetVehicleFlags() { }
280// public void llRemoveVehicleFlags() { } 280// public void llRemoveVehicleFlags() { }
281// public void llSitTarget() { } 281// public void llSitTarget() { }
282// public void llAvatarOnSitTarget() { } 282// public void llAvatarOnSitTarget() { }
283// public void llAddToLandPassList() { } 283// public void llAddToLandPassList() { }
284// public void llSetTouchText() { } 284// public void llSetTouchText() { }
285// public void llSetSitText() { } 285// public void llSetSitText() { }
286// public void llSetCameraEyeOffset() { } 286// public void llSetCameraEyeOffset() { }
287// public void llSetCameraAtOffset() { } 287// public void llSetCameraAtOffset() { }
288// public void llDumpList2String() { } 288// public void llDumpList2String() { }
289// public void llScriptDanger() { } 289// public void llScriptDanger() { }
290// public void llDialog() { } 290// public void llDialog() { }
291// public void llVolumeDetect() { } 291// public void llVolumeDetect() { }
292// public void llResetOtherScript() { } 292// public void llResetOtherScript() { }
293// public void llGetScriptState() { } 293// public void llGetScriptState() { }
294// public void llRemoteLoadScript() { } 294// public void llRemoteLoadScript() { }
295// public void llSetRemoteScriptAccessPin() { } 295// public void llSetRemoteScriptAccessPin() { }
296// public void llRemoteLoadScriptPin() { } 296// public void llRemoteLoadScriptPin() { }
297// public void llOpenRemoteDataChannel() { } 297// public void llOpenRemoteDataChannel() { }
298// public void llSendRemoteData() { } 298// public void llSendRemoteData() { }
299// public void llRemoteDataReply() { } 299// public void llRemoteDataReply() { }
300// public void llCloseRemoteDataChannel() { } 300// public void llCloseRemoteDataChannel() { }
301// public void llMD5String() { } 301// public void llMD5String() { }
302// public void llSetPrimitiveParams() { } 302// public void llSetPrimitiveParams() { }
303// public void llStringToBase64() { } 303// public void llStringToBase64() { }
304// public void llBase64ToString() { } 304// public void llBase64ToString() { }
305// public void llXorBase64Strings() { } 305// public void llXorBase64Strings() { }
306// public void llRemoteDataSetRegion() { } 306// public void llRemoteDataSetRegion() { }
307// public void llLog10() { } 307// public void llLog10() { }
308// public void llLog() { } 308// public void llLog() { }
309// public void llGetAnimationList() { } 309// public void llGetAnimationList() { }
310// public void llSetParcelMusicURL() { } 310// public void llSetParcelMusicURL() { }
311// public void llGetRootPosition() { } 311// public void llGetRootPosition() { }
312// public void llGetRootRotation() { } 312// public void llGetRootRotation() { }
313// public void llGetObjectDesc() { } 313// public void llGetObjectDesc() { }
314// public void llSetObjectDesc() { } 314// public void llSetObjectDesc() { }
315// public void llGetCreator() { } 315// public void llGetCreator() { }
316// public void llGetTimestamp() { } 316// public void llGetTimestamp() { }
317// public void llSetLinkAlpha() { } 317// public void llSetLinkAlpha() { }
318// public void llGetNumberOfPrims() { } 318// public void llGetNumberOfPrims() { }
319// public void llGetNumberOfNotecardLines() { } 319// public void llGetNumberOfNotecardLines() { }
320// public void llGetBoundingBox() { } 320// public void llGetBoundingBox() { }
321// public void llGetGeometricCenter() { } 321// public void llGetGeometricCenter() { }
322// public void llGetPrimitiveParams() { } 322// public void llGetPrimitiveParams() { }
323// public void llIntegerToBase64() { } 323// public void llIntegerToBase64() { }
324// public void llBase64ToInteger() { } 324// public void llBase64ToInteger() { }
325// public void llGetGMTclock() { } 325// public void llGetGMTclock() { }
326// public void llGetSimulatorHostname() { } 326// public void llGetSimulatorHostname() { }
327// public void llSetLocalRot() { } 327// public void llSetLocalRot() { }
328// public void llParseStringKeepNulls() { } 328// public void llParseStringKeepNulls() { }
329// public void llRezAtRoot() { } 329// public void llRezAtRoot() { }
330// public void llGetObjectPermMask() { } 330// public void llGetObjectPermMask() { }
331// public void llSetObjectPermMask() { } 331// public void llSetObjectPermMask() { }
332// public void llGetInventoryPermMask() { } 332// public void llGetInventoryPermMask() { }
333// public void llSetInventoryPermMask() { } 333// public void llSetInventoryPermMask() { }
334// public void llGetInventoryCreator() { } 334// public void llGetInventoryCreator() { }
335// public void llOwnerSay() { } 335// public void llOwnerSay() { }
336// public void llRequestSimulatorData() { } 336// public void llRequestSimulatorData() { }
337// public void llForceMouselook() { } 337// public void llForceMouselook() { }
338// public void llGetObjectMass() { } 338// public void llGetObjectMass() { }
339// public void llListReplaceList() { } 339// public void llListReplaceList() { }
340// public void llLoadURL() { } 340// public void llLoadURL() { }
341// public void llParcelMediaCommandList() { } 341// public void llParcelMediaCommandList() { }
342// public void llParcelMediaQuery() { } 342// public void llParcelMediaQuery() { }
343// public void llModPow() { } 343// public void llModPow() { }
344// public void llGetInventoryType() { } 344// public void llGetInventoryType() { }
345// public void llSetPayPrice() { } 345// public void llSetPayPrice() { }
346// public void llGetCameraPos() { } 346// public void llGetCameraPos() { }
347// public void llGetCameraRot() { } 347// public void llGetCameraRot() { }
348// public void llSetPrimURL() { } 348// public void llSetPrimURL() { }
349// public void llRefreshPrimURL() { } 349// public void llRefreshPrimURL() { }
350// public void llEscapeURL() { } 350// public void llEscapeURL() { }
351// public void llUnescapeURL() { } 351// public void llUnescapeURL() { }
352// public void llMapDestination() { } 352// public void llMapDestination() { }
353// public void llAddToLandBanList() { } 353// public void llAddToLandBanList() { }
354// public void llRemoveFromLandPassList() { } 354// public void llRemoveFromLandPassList() { }
355// public void llRemoveFromLandBanList() { } 355// public void llRemoveFromLandBanList() { }
356// public void llSetCameraParams() { } 356// public void llSetCameraParams() { }
357// public void llClearCameraParams() { } 357// public void llClearCameraParams() { }
358// public void llListStatistics() { } 358// public void llListStatistics() { }
359// public void llGetUnixTime() { } 359// public void llGetUnixTime() { }
360// public void llGetParcelFlags() { } 360// public void llGetParcelFlags() { }
361// public void llGetRegionFlags() { } 361// public void llGetRegionFlags() { }
362// public void llXorBase64StringsCorrect() { } 362// public void llXorBase64StringsCorrect() { }
363// public void llHTTPRequest() { } 363// public void llHTTPRequest() { }
364// public void llResetLandBanList() { } 364// public void llResetLandBanList() { }
365// public void llResetLandPassList() { } 365// public void llResetLandPassList() { }
366// public void llGetParcelPrimCount() { } 366// public void llGetParcelPrimCount() { }
367// public void llGetParcelPrimOwners() { } 367// public void llGetParcelPrimOwners() { }
368// public void llGetObjectPrimCount() { } 368// public void llGetObjectPrimCount() { }
369// public void llGetParcelMaxPrims() { } 369// public void llGetParcelMaxPrims() { }
370// public void llGetParcelDetails() { } 370// public void llGetParcelDetails() { }
371 371
372// } 372// }
373//} 373//}
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_BaseClass_OPCODES.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_BaseClass_OPCODES.cs
index e55f28d..09a24d5 100644
--- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_BaseClass_OPCODES.cs
+++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_BaseClass_OPCODES.cs
@@ -1,350 +1,350 @@
1using System; 1using System;
2using System.Collections.Generic; 2using System.Collections.Generic;
3using System.Text; 3using System.Text;
4 4
5namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO 5namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO
6{ 6{
7 public partial class LSL_BaseClass 7 public partial class LSL_BaseClass
8 { 8 {
9 /* 9 /*
10 * OPCODES 10 * OPCODES
11 * 11 *
12 * These are internal "assembly" commands, 12 * These are internal "assembly" commands,
13 * basic operators like "ADD", "PUSH" and "POP" 13 * basic operators like "ADD", "PUSH" and "POP"
14 * 14 *
15 * It also contains managed stack and keeps track of internal variables, etc. 15 * It also contains managed stack and keeps track of internal variables, etc.
16 * 16 *
17 */ 17 */
18 18
19 19
20 public void StoreToLocal(UInt32 index) 20 public void StoreToLocal(UInt32 index)
21 { 21 {
22 // TODO: How to determine local? 22 // TODO: How to determine local?
23 Common.SendToDebug("::StoreToLocal " + index); 23 Common.SendToDebug("::StoreToLocal " + index);
24 if (LocalVariables.ContainsKey(index)) 24 if (LocalVariables.ContainsKey(index))
25 LocalVariables.Remove(index); 25 LocalVariables.Remove(index);
26 LocalVariables.Add(index, LSLStack.Peek()); 26 LocalVariables.Add(index, LSLStack.Peek());
27 } 27 }
28 public void StoreToGlobal(UInt32 index) 28 public void StoreToGlobal(UInt32 index)
29 { 29 {
30 Common.SendToDebug("::StoreToGlobal " + index); 30 Common.SendToDebug("::StoreToGlobal " + index);
31 if (GlobalVariables.ContainsKey(index)) 31 if (GlobalVariables.ContainsKey(index))
32 GlobalVariables.Remove(index); 32 GlobalVariables.Remove(index);
33 GlobalVariables.Add(index, LSLStack.Peek()); 33 GlobalVariables.Add(index, LSLStack.Peek());
34 } 34 }
35 public void StoreToStatic(UInt32 index) 35 public void StoreToStatic(UInt32 index)
36 { 36 {
37 Common.SendToDebug("::StoreToStatic " + index); 37 Common.SendToDebug("::StoreToStatic " + index);
38 //if (StaticVariables.ContainsKey(index)) 38 //if (StaticVariables.ContainsKey(index))
39 // StaticVariables.Remove(index); 39 // StaticVariables.Remove(index);
40 StaticVariables.Add(index, LSLStack.Peek()); 40 StaticVariables.Add(index, LSLStack.Peek());
41 } 41 }
42 public void GetFromLocal(UInt32 index) 42 public void GetFromLocal(UInt32 index)
43 { 43 {
44 // TODO: How to determine local? 44 // TODO: How to determine local?
45 Common.SendToDebug("::GetFromLocal " + index); 45 Common.SendToDebug("::GetFromLocal " + index);
46 object ret; 46 object ret;
47 LocalVariables.TryGetValue(index, out ret); 47 LocalVariables.TryGetValue(index, out ret);
48 LSLStack.Push(ret); 48 LSLStack.Push(ret);
49 //return ret; 49 //return ret;
50 } 50 }
51 public void GetFromGlobal(UInt32 index) 51 public void GetFromGlobal(UInt32 index)
52 { 52 {
53 Common.SendToDebug("::GetFromGlobal " + index); 53 Common.SendToDebug("::GetFromGlobal " + index);
54 object ret; 54 object ret;
55 GlobalVariables.TryGetValue(index, out ret); 55 GlobalVariables.TryGetValue(index, out ret);
56 LSLStack.Push(ret); 56 LSLStack.Push(ret);
57 //return ret; 57 //return ret;
58 } 58 }
59 public void GetFromStatic(UInt32 index) 59 public void GetFromStatic(UInt32 index)
60 { 60 {
61 Common.SendToDebug("::GetFromStatic " + index); 61 Common.SendToDebug("::GetFromStatic " + index);
62 object ret; 62 object ret;
63 StaticVariables.TryGetValue(index, out ret); 63 StaticVariables.TryGetValue(index, out ret);
64 Common.SendToDebug("::GetFromStatic - ObjectType: " + ret.GetType().ToString()); 64 Common.SendToDebug("::GetFromStatic - ObjectType: " + ret.GetType().ToString());
65 LSLStack.Push(ret); 65 LSLStack.Push(ret);
66 //return ret; 66 //return ret;
67 } 67 }
68 68
69 public object POPToStack() 69 public object POPToStack()
70 { 70 {
71 Common.SendToDebug("::POPToStack"); 71 Common.SendToDebug("::POPToStack");
72 //return LSLStack.Pop(); 72 //return LSLStack.Pop();
73 object p = LSLStack.Pop(); 73 object p = LSLStack.Pop();
74 if (p.GetType() == typeof(UInt32)) 74 if (p.GetType() == typeof(UInt32))
75 return (UInt32)p; 75 return (UInt32)p;
76 if (p.GetType() == typeof(string)) 76 if (p.GetType() == typeof(string))
77 return (string)p; 77 return (string)p;
78 if (p.GetType() == typeof(Int32)) 78 if (p.GetType() == typeof(Int32))
79 return (Int32)p; 79 return (Int32)p;
80 if (p.GetType() == typeof(UInt16)) 80 if (p.GetType() == typeof(UInt16))
81 return (UInt16)p; 81 return (UInt16)p;
82 if (p.GetType() == typeof(float)) 82 if (p.GetType() == typeof(float))
83 return (float)p; 83 return (float)p;
84 if (p.GetType() == typeof(LSO_Enums.Vector)) 84 if (p.GetType() == typeof(LSO_Enums.Vector))
85 return (LSO_Enums.Vector)p; 85 return (LSO_Enums.Vector)p;
86 if (p.GetType() == typeof(LSO_Enums.Rotation)) 86 if (p.GetType() == typeof(LSO_Enums.Rotation))
87 return (LSO_Enums.Rotation)p; 87 return (LSO_Enums.Rotation)p;
88 if (p.GetType() == typeof(LSO_Enums.Key)) 88 if (p.GetType() == typeof(LSO_Enums.Key))
89 return (LSO_Enums.Key)p; 89 return (LSO_Enums.Key)p;
90 90
91 return p; 91 return p;
92 } 92 }
93 93
94 //public object POPToStack(UInt32 count) 94 //public object POPToStack(UInt32 count)
95 //{ 95 //{
96 // // POP NUMBER FROM TOP OF STACK 96 // // POP NUMBER FROM TOP OF STACK
97 // //LSLStack.SetLength(LSLStack.Length - 4); 97 // //LSLStack.SetLength(LSLStack.Length - 4);
98 // Common.SendToDebug("::POPToStack " + count); 98 // Common.SendToDebug("::POPToStack " + count);
99 // if (count < 2) 99 // if (count < 2)
100 // return LSLStack.Pop(); 100 // return LSLStack.Pop();
101 101
102 // Stack<object> s = new Stack<object>(); 102 // Stack<object> s = new Stack<object>();
103 // for (int i = 0; i < count; i++) 103 // for (int i = 0; i < count; i++)
104 // { 104 // {
105 // s.Push(LSLStack.Pop); 105 // s.Push(LSLStack.Pop);
106 106
107 // } 107 // }
108 108
109 //} 109 //}
110 110
111 public void POP() 111 public void POP()
112 { 112 {
113 // POP NUMBER FROM TOP OF STACK 113 // POP NUMBER FROM TOP OF STACK
114 //LSLStack.SetLength(LSLStack.Length - 4); 114 //LSLStack.SetLength(LSLStack.Length - 4);
115 Common.SendToDebug("::POP"); 115 Common.SendToDebug("::POP");
116 if (LSLStack.Count < 1) 116 if (LSLStack.Count < 1)
117 { 117 {
118 //TODO: Temporary fix 118 //TODO: Temporary fix
119 Common.SendToDebug("ERROR: TRYING TO POP EMPTY STACK!"); 119 Common.SendToDebug("ERROR: TRYING TO POP EMPTY STACK!");
120 } 120 }
121 else 121 else
122 { 122 {
123 LSLStack.Pop(); 123 LSLStack.Pop();
124 } 124 }
125 } 125 }
126 public void PUSH(object Param) 126 public void PUSH(object Param)
127 { 127 {
128 if (Param == null) 128 if (Param == null)
129 { 129 {
130 Common.SendToDebug("::PUSH: <null>"); 130 Common.SendToDebug("::PUSH: <null>");
131 } 131 }
132 else 132 else
133 { 133 {
134 134
135 //Common.SendToDebug("::PUSH: " + Param.GetType()); 135 //Common.SendToDebug("::PUSH: " + Param.GetType());
136 } 136 }
137 137
138 LSLStack.Push(Param); 138 LSLStack.Push(Param);
139 } 139 }
140 public void ADD(UInt32 Param) 140 public void ADD(UInt32 Param)
141 { 141 {
142 Common.SendToDebug("::ADD: " + Param); 142 Common.SendToDebug("::ADD: " + Param);
143 object o2 = LSLStack.Pop(); 143 object o2 = LSLStack.Pop();
144 object o1 = LSLStack.Pop(); 144 object o1 = LSLStack.Pop();
145 Common.SendToDebug("::ADD: Debug: o1: " + o1.GetType() + " (" + o1.ToString() + "), o2: " + o2.GetType() + " (" + o2.ToString() + ")"); 145 Common.SendToDebug("::ADD: Debug: o1: " + o1.GetType() + " (" + o1.ToString() + "), o2: " + o2.GetType() + " (" + o2.ToString() + ")");
146 if (o2.GetType() == typeof(string)) 146 if (o2.GetType() == typeof(string))
147 { 147 {
148 LSLStack.Push((string)o1 + (string)o2); 148 LSLStack.Push((string)o1 + (string)o2);
149 return; 149 return;
150 } 150 }
151 if (o2.GetType() == typeof(UInt32)) 151 if (o2.GetType() == typeof(UInt32))
152 { 152 {
153 LSLStack.Push((UInt32)o1 + (UInt32)o2); 153 LSLStack.Push((UInt32)o1 + (UInt32)o2);
154 return; 154 return;
155 } 155 }
156 156
157 } 157 }
158 public void SUB(UInt32 Param) 158 public void SUB(UInt32 Param)
159 { 159 {
160 Common.SendToDebug("::SUB: " + Param); 160 Common.SendToDebug("::SUB: " + Param);
161 UInt32 i2 = (UInt32)LSLStack.Pop(); 161 UInt32 i2 = (UInt32)LSLStack.Pop();
162 UInt32 i1 = (UInt32)LSLStack.Pop(); 162 UInt32 i1 = (UInt32)LSLStack.Pop();
163 LSLStack.Push((UInt32)(i1 - i2)); 163 LSLStack.Push((UInt32)(i1 - i2));
164 } 164 }
165 public void MUL(UInt32 Param) 165 public void MUL(UInt32 Param)
166 { 166 {
167 Common.SendToDebug("::SUB: " + Param); 167 Common.SendToDebug("::SUB: " + Param);
168 UInt32 i2 = (UInt32)LSLStack.Pop(); 168 UInt32 i2 = (UInt32)LSLStack.Pop();
169 UInt32 i1 = (UInt32)LSLStack.Pop(); 169 UInt32 i1 = (UInt32)LSLStack.Pop();
170 LSLStack.Push((UInt32)(i1 * i2)); 170 LSLStack.Push((UInt32)(i1 * i2));
171 } 171 }
172 public void DIV(UInt32 Param) 172 public void DIV(UInt32 Param)
173 { 173 {
174 Common.SendToDebug("::DIV: " + Param); 174 Common.SendToDebug("::DIV: " + Param);
175 UInt32 i2 = (UInt32)LSLStack.Pop(); 175 UInt32 i2 = (UInt32)LSLStack.Pop();
176 UInt32 i1 = (UInt32)LSLStack.Pop(); 176 UInt32 i1 = (UInt32)LSLStack.Pop();
177 LSLStack.Push((UInt32)(i1 / i2)); 177 LSLStack.Push((UInt32)(i1 / i2));
178 } 178 }
179 179
180 180
181 public void MOD(UInt32 Param) 181 public void MOD(UInt32 Param)
182 { 182 {
183 Common.SendToDebug("::MOD: " + Param); 183 Common.SendToDebug("::MOD: " + Param);
184 UInt32 i2 = (UInt32)LSLStack.Pop(); 184 UInt32 i2 = (UInt32)LSLStack.Pop();
185 UInt32 i1 = (UInt32)LSLStack.Pop(); 185 UInt32 i1 = (UInt32)LSLStack.Pop();
186 LSLStack.Push((UInt32)(i1 % i2)); 186 LSLStack.Push((UInt32)(i1 % i2));
187 } 187 }
188 public void EQ(UInt32 Param) 188 public void EQ(UInt32 Param)
189 { 189 {
190 Common.SendToDebug("::EQ: " + Param); 190 Common.SendToDebug("::EQ: " + Param);
191 UInt32 i2 = (UInt32)LSLStack.Pop(); 191 UInt32 i2 = (UInt32)LSLStack.Pop();
192 UInt32 i1 = (UInt32)LSLStack.Pop(); 192 UInt32 i1 = (UInt32)LSLStack.Pop();
193 if (i1 == i2) 193 if (i1 == i2)
194 { 194 {
195 LSLStack.Push((UInt32)1); 195 LSLStack.Push((UInt32)1);
196 } 196 }
197 else 197 else
198 { 198 {
199 LSLStack.Push((UInt32)0); 199 LSLStack.Push((UInt32)0);
200 } 200 }
201 } 201 }
202 public void NEQ(UInt32 Param) 202 public void NEQ(UInt32 Param)
203 { 203 {
204 Common.SendToDebug("::NEQ: " + Param); 204 Common.SendToDebug("::NEQ: " + Param);
205 UInt32 i2 = (UInt32)LSLStack.Pop(); 205 UInt32 i2 = (UInt32)LSLStack.Pop();
206 UInt32 i1 = (UInt32)LSLStack.Pop(); 206 UInt32 i1 = (UInt32)LSLStack.Pop();
207 if (i1 != i2) 207 if (i1 != i2)
208 { 208 {
209 LSLStack.Push((UInt32)1); 209 LSLStack.Push((UInt32)1);
210 } 210 }
211 else 211 else
212 { 212 {
213 LSLStack.Push((UInt32)0); 213 LSLStack.Push((UInt32)0);
214 } 214 }
215 } 215 }
216 public void LEQ(UInt32 Param) 216 public void LEQ(UInt32 Param)
217 { 217 {
218 Common.SendToDebug("::LEQ: " + Param); 218 Common.SendToDebug("::LEQ: " + Param);
219 UInt32 i2 = (UInt32)LSLStack.Pop(); 219 UInt32 i2 = (UInt32)LSLStack.Pop();
220 UInt32 i1 = (UInt32)LSLStack.Pop(); 220 UInt32 i1 = (UInt32)LSLStack.Pop();
221 if (i1 <= i2) 221 if (i1 <= i2)
222 { 222 {
223 LSLStack.Push((UInt32)1); 223 LSLStack.Push((UInt32)1);
224 } 224 }
225 else 225 else
226 { 226 {
227 LSLStack.Push((UInt32)0); 227 LSLStack.Push((UInt32)0);
228 } 228 }
229 } 229 }
230 public void GEQ(UInt32 Param) 230 public void GEQ(UInt32 Param)
231 { 231 {
232 Common.SendToDebug("::GEQ: " + Param); 232 Common.SendToDebug("::GEQ: " + Param);
233 UInt32 i2 = (UInt32)LSLStack.Pop(); 233 UInt32 i2 = (UInt32)LSLStack.Pop();
234 UInt32 i1 = (UInt32)LSLStack.Pop(); 234 UInt32 i1 = (UInt32)LSLStack.Pop();
235 if (i1 >= i2) 235 if (i1 >= i2)
236 { 236 {
237 LSLStack.Push((UInt32)1); 237 LSLStack.Push((UInt32)1);
238 } 238 }
239 else 239 else
240 { 240 {
241 LSLStack.Push((UInt32)0); 241 LSLStack.Push((UInt32)0);
242 } 242 }
243 } 243 }
244 public void LESS(UInt32 Param) 244 public void LESS(UInt32 Param)
245 { 245 {
246 Common.SendToDebug("::LESS: " + Param); 246 Common.SendToDebug("::LESS: " + Param);
247 UInt32 i2 = (UInt32)LSLStack.Pop(); 247 UInt32 i2 = (UInt32)LSLStack.Pop();
248 UInt32 i1 = (UInt32)LSLStack.Pop(); 248 UInt32 i1 = (UInt32)LSLStack.Pop();
249 if (i1 < i2) 249 if (i1 < i2)
250 { 250 {
251 LSLStack.Push((UInt32)1); 251 LSLStack.Push((UInt32)1);
252 } 252 }
253 else 253 else
254 { 254 {
255 LSLStack.Push((UInt32)0); 255 LSLStack.Push((UInt32)0);
256 } 256 }
257 } 257 }
258 public void GREATER(UInt32 Param) 258 public void GREATER(UInt32 Param)
259 { 259 {
260 Common.SendToDebug("::GREATER: " + Param); 260 Common.SendToDebug("::GREATER: " + Param);
261 UInt32 i2 = (UInt32)LSLStack.Pop(); 261 UInt32 i2 = (UInt32)LSLStack.Pop();
262 UInt32 i1 = (UInt32)LSLStack.Pop(); 262 UInt32 i1 = (UInt32)LSLStack.Pop();
263 if (i1 > i2) 263 if (i1 > i2)
264 { 264 {
265 LSLStack.Push((UInt32)1); 265 LSLStack.Push((UInt32)1);
266 } 266 }
267 else 267 else
268 { 268 {
269 LSLStack.Push((UInt32)0); 269 LSLStack.Push((UInt32)0);
270 } 270 }
271 } 271 }
272 272
273 273
274 274
275 public void BITAND() 275 public void BITAND()
276 { 276 {
277 Common.SendToDebug("::BITAND"); 277 Common.SendToDebug("::BITAND");
278 UInt32 i2 = (UInt32)LSLStack.Pop(); 278 UInt32 i2 = (UInt32)LSLStack.Pop();
279 UInt32 i1 = (UInt32)LSLStack.Pop(); 279 UInt32 i1 = (UInt32)LSLStack.Pop();
280 LSLStack.Push((UInt32)(i1 & i2)); 280 LSLStack.Push((UInt32)(i1 & i2));
281 } 281 }
282 public void BITOR() 282 public void BITOR()
283 { 283 {
284 Common.SendToDebug("::BITOR"); 284 Common.SendToDebug("::BITOR");
285 UInt32 i2 = (UInt32)LSLStack.Pop(); 285 UInt32 i2 = (UInt32)LSLStack.Pop();
286 UInt32 i1 = (UInt32)LSLStack.Pop(); 286 UInt32 i1 = (UInt32)LSLStack.Pop();
287 LSLStack.Push((UInt32)(i1 | i2)); 287 LSLStack.Push((UInt32)(i1 | i2));
288 } 288 }
289 public void BITXOR() 289 public void BITXOR()
290 { 290 {
291 Common.SendToDebug("::BITXOR"); 291 Common.SendToDebug("::BITXOR");
292 UInt32 i2 = (UInt32)LSLStack.Pop(); 292 UInt32 i2 = (UInt32)LSLStack.Pop();
293 UInt32 i1 = (UInt32)LSLStack.Pop(); 293 UInt32 i1 = (UInt32)LSLStack.Pop();
294 LSLStack.Push((UInt32)(i1 ^ i2)); 294 LSLStack.Push((UInt32)(i1 ^ i2));
295 } 295 }
296 public void BOOLAND() 296 public void BOOLAND()
297 { 297 {
298 Common.SendToDebug("::BOOLAND"); 298 Common.SendToDebug("::BOOLAND");
299 bool b2 = bool.Parse((string)LSLStack.Pop()); 299 bool b2 = bool.Parse((string)LSLStack.Pop());
300 bool b1 = bool.Parse((string)LSLStack.Pop()); 300 bool b1 = bool.Parse((string)LSLStack.Pop());
301 if (b1 && b2) 301 if (b1 && b2)
302 { 302 {
303 LSLStack.Push((UInt32)1); 303 LSLStack.Push((UInt32)1);
304 } 304 }
305 else 305 else
306 { 306 {
307 LSLStack.Push((UInt32)0); 307 LSLStack.Push((UInt32)0);
308 } 308 }
309 } 309 }
310 public void BOOLOR() 310 public void BOOLOR()
311 { 311 {
312 Common.SendToDebug("::BOOLOR"); 312 Common.SendToDebug("::BOOLOR");
313 bool b2 = bool.Parse((string)LSLStack.Pop()); 313 bool b2 = bool.Parse((string)LSLStack.Pop());
314 bool b1 = bool.Parse((string)LSLStack.Pop()); 314 bool b1 = bool.Parse((string)LSLStack.Pop());
315 315
316 if (b1 || b2) 316 if (b1 || b2)
317 { 317 {
318 LSLStack.Push((UInt32)1); 318 LSLStack.Push((UInt32)1);
319 } 319 }
320 else 320 else
321 { 321 {
322 LSLStack.Push((UInt32)0); 322 LSLStack.Push((UInt32)0);
323 } 323 }
324 324
325 } 325 }
326 public void NEG(UInt32 Param) 326 public void NEG(UInt32 Param)
327 { 327 {
328 Common.SendToDebug("::NEG: " + Param); 328 Common.SendToDebug("::NEG: " + Param);
329 //UInt32 i2 = (UInt32)LSLStack.Pop(); 329 //UInt32 i2 = (UInt32)LSLStack.Pop();
330 UInt32 i1 = (UInt32)LSLStack.Pop(); 330 UInt32 i1 = (UInt32)LSLStack.Pop();
331 LSLStack.Push((UInt32)(i1 * -1)); 331 LSLStack.Push((UInt32)(i1 * -1));
332 } 332 }
333 public void BITNOT() 333 public void BITNOT()
334 { 334 {
335 //Common.SendToDebug("::BITNOT"); 335 //Common.SendToDebug("::BITNOT");
336 //UInt32 i2 = (UInt32)LSLStack.Pop(); 336 //UInt32 i2 = (UInt32)LSLStack.Pop();
337 //UInt32 i1 = (UInt32)LSLStack.Pop(); 337 //UInt32 i1 = (UInt32)LSLStack.Pop();
338 //LSLStack.Push((UInt32)(i1 / i2)); 338 //LSLStack.Push((UInt32)(i1 / i2));
339 } 339 }
340 public void BOOLNOT() 340 public void BOOLNOT()
341 { 341 {
342 //Common.SendToDebug("::BOOLNOT"); 342 //Common.SendToDebug("::BOOLNOT");
343 ////UInt32 i2 = (UInt32)LSLStack.Pop(); 343 ////UInt32 i2 = (UInt32)LSLStack.Pop();
344 //UInt32 i1 = (UInt32)LSLStack.Pop(); 344 //UInt32 i1 = (UInt32)LSLStack.Pop();
345 //LSLStack.Push((UInt32)(i1)); 345 //LSLStack.Push((UInt32)(i1));
346 } 346 }
347 347
348 348
349 } 349 }
350} 350}
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_CLRInterface.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_CLRInterface.cs
index a59f531..5f01bf5 100644
--- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_CLRInterface.cs
+++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_CLRInterface.cs
@@ -1,79 +1,79 @@
1/* 1/*
2* Copyright (c) Contributors, http://opensimulator.org/ 2* Copyright (c) Contributors, http://opensimulator.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders. 3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4* 4*
5* Redistribution and use in source and binary forms, with or without 5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met: 6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright 7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer. 8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright 9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the 10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution. 11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the 12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products 13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission. 14* derived from this software without specific prior written permission.
15* 15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY 16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY 19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26* 26*
27*/ 27*/
28/* Original code: Tedd Hansen */ 28/* Original code: Tedd Hansen */
29using System; 29using System;
30using System.Collections.Generic; 30using System.Collections.Generic;
31using System.Text; 31using System.Text;
32 32
33namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO 33namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO
34{ 34{
35 public class LSL_CLRInterface 35 public class LSL_CLRInterface
36 { 36 {
37 public interface LSLScript 37 public interface LSLScript
38 { 38 {
39 //public virtual void Run(object arg) 39 //public virtual void Run(object arg)
40 //{ 40 //{
41 //} 41 //}
42 //void Run(object arg); 42 //void Run(object arg);
43 43
44 //void event_state_entry(object arg); 44 //void event_state_entry(object arg);
45 //void event_state_exit(); 45 //void event_state_exit();
46 //void event_touch_start(object arg); 46 //void event_touch_start(object arg);
47 //void event_touch(); 47 //void event_touch();
48 //void event_touch_end(); 48 //void event_touch_end();
49 //void event_collision_start(); 49 //void event_collision_start();
50 //void event_collision(); 50 //void event_collision();
51 //void event_collision_end(); 51 //void event_collision_end();
52 //void event_land_collision_start(); 52 //void event_land_collision_start();
53 //void event_land_collision(); 53 //void event_land_collision();
54 //void event_land_collision_end(); 54 //void event_land_collision_end();
55 //void event_timer(); 55 //void event_timer();
56 //void event_listen(); 56 //void event_listen();
57 //void event_on_rez(); 57 //void event_on_rez();
58 //void event_sensor(); 58 //void event_sensor();
59 //void event_no_sensor(); 59 //void event_no_sensor();
60 //void event_control(); 60 //void event_control();
61 //void event_money(); 61 //void event_money();
62 //void event_email(); 62 //void event_email();
63 //void event_at_target(); 63 //void event_at_target();
64 //void event_not_at_target(); 64 //void event_not_at_target();
65 //void event_at_rot_target(); 65 //void event_at_rot_target();
66 //void event_not_at_rot_target(); 66 //void event_not_at_rot_target();
67 //void event_run_time_permissions(); 67 //void event_run_time_permissions();
68 //void event_changed(); 68 //void event_changed();
69 //void event_attach(); 69 //void event_attach();
70 //void event_dataserver(); 70 //void event_dataserver();
71 //void event_link_message(); 71 //void event_link_message();
72 //void event_moving_start(); 72 //void event_moving_start();
73 //void event_moving_end(); 73 //void event_moving_end();
74 //void event_object_rez(); 74 //void event_object_rez();
75 //void event_remote_data(); 75 //void event_remote_data();
76 //void event_http_response(); 76 //void event_http_response();
77 } 77 }
78 } 78 }
79} 79}
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_OPCODE_IL_processor.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_OPCODE_IL_processor.cs
index d8ce6c1..ee166a6 100644
--- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_OPCODE_IL_processor.cs
+++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_OPCODE_IL_processor.cs
@@ -1,436 +1,436 @@
1/* 1/*
2* Copyright (c) Contributors, http://opensimulator.org/ 2* Copyright (c) Contributors, http://opensimulator.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders. 3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4* 4*
5* Redistribution and use in source and binary forms, with or without 5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met: 6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright 7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer. 8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright 9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the 10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution. 11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the 12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products 13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission. 14* derived from this software without specific prior written permission.
15* 15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY 16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY 19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26* 26*
27*/ 27*/
28/* Original code: Tedd Hansen */ 28/* Original code: Tedd Hansen */
29using System; 29using System;
30using System.Collections.Generic; 30using System.Collections.Generic;
31using System.Text; 31using System.Text;
32using System.Reflection; 32using System.Reflection;
33using System.Reflection.Emit; 33using System.Reflection.Emit;
34using OpenSim.Region.ScriptEngine.Common; 34using OpenSim.Region.ScriptEngine.Common;
35 35
36namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO 36namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO
37{ 37{
38 partial class LSO_Parser 38 partial class LSO_Parser
39 { 39 {
40 //internal Stack<Type> ILStack = new Stack<Type>(); 40 //internal Stack<Type> ILStack = new Stack<Type>();
41 //LSO_Enums MyLSO_Enums = new LSO_Enums(); 41 //LSO_Enums MyLSO_Enums = new LSO_Enums();
42 42
43 internal bool LSL_PROCESS_OPCODE(ILGenerator il) 43 internal bool LSL_PROCESS_OPCODE(ILGenerator il)
44 { 44 {
45 45
46 byte bp1; 46 byte bp1;
47 UInt32 u32p1; 47 UInt32 u32p1;
48 float fp1; 48 float fp1;
49 UInt16 opcode = br_read(1)[0]; 49 UInt16 opcode = br_read(1)[0];
50 Common.SendToDebug("OPCODE: " + ((LSO_Enums.Operation_Table)opcode).ToString()); 50 Common.SendToDebug("OPCODE: " + ((LSO_Enums.Operation_Table)opcode).ToString());
51 string idesc = ((LSO_Enums.Operation_Table)opcode).ToString(); 51 string idesc = ((LSO_Enums.Operation_Table)opcode).ToString();
52 switch ((LSO_Enums.Operation_Table)opcode) 52 switch ((LSO_Enums.Operation_Table)opcode)
53 { 53 {
54 54
55 /*************** 55 /***************
56 * IMPLEMENTED * 56 * IMPLEMENTED *
57 ***************/ 57 ***************/
58 case LSO_Enums.Operation_Table.NOOP: 58 case LSO_Enums.Operation_Table.NOOP:
59 break; 59 break;
60 case LSO_Enums.Operation_Table.PUSHSP: 60 case LSO_Enums.Operation_Table.PUSHSP:
61 // Push Stack Top (Memory Address) to stack 61 // Push Stack Top (Memory Address) to stack
62 Common.SendToDebug("Instruction " + idesc); 62 Common.SendToDebug("Instruction " + idesc);
63 Common.SendToDebug("Instruction " + idesc + ": Description: Pushing Stack Top (Memory Address from header) to stack"); 63 Common.SendToDebug("Instruction " + idesc + ": Description: Pushing Stack Top (Memory Address from header) to stack");
64 IL_Push(il, (UInt32)myHeader.SP); 64 IL_Push(il, (UInt32)myHeader.SP);
65 break; 65 break;
66 // BYTE 66 // BYTE
67 case LSO_Enums.Operation_Table.PUSHARGB: 67 case LSO_Enums.Operation_Table.PUSHARGB:
68 Common.SendToDebug("Param1: " + br_read(1)[0]); 68 Common.SendToDebug("Param1: " + br_read(1)[0]);
69 break; 69 break;
70 // INTEGER 70 // INTEGER
71 case LSO_Enums.Operation_Table.PUSHARGI: 71 case LSO_Enums.Operation_Table.PUSHARGI:
72 u32p1 = BitConverter.ToUInt32(br_read(4), 0); 72 u32p1 = BitConverter.ToUInt32(br_read(4), 0);
73 Common.SendToDebug("Instruction " + idesc + ", Param1: " + u32p1); 73 Common.SendToDebug("Instruction " + idesc + ", Param1: " + u32p1);
74 IL_Push(il, u32p1); 74 IL_Push(il, u32p1);
75 break; 75 break;
76 // FLOAT 76 // FLOAT
77 case LSO_Enums.Operation_Table.PUSHARGF: 77 case LSO_Enums.Operation_Table.PUSHARGF:
78 fp1 = BitConverter.ToUInt32(br_read(4), 0); 78 fp1 = BitConverter.ToUInt32(br_read(4), 0);
79 Common.SendToDebug("Instruction " + idesc + ", Param1: " + fp1); 79 Common.SendToDebug("Instruction " + idesc + ", Param1: " + fp1);
80 IL_Push(il, fp1); 80 IL_Push(il, fp1);
81 break; 81 break;
82 // STRING 82 // STRING
83 case LSO_Enums.Operation_Table.PUSHARGS: 83 case LSO_Enums.Operation_Table.PUSHARGS:
84 string s = Read_String(); 84 string s = Read_String();
85 Common.SendToDebug("Instruction " + idesc + ", Param1: " + s); 85 Common.SendToDebug("Instruction " + idesc + ", Param1: " + s);
86 IL_Debug(il, "OPCODE: " + idesc + ":" + s); 86 IL_Debug(il, "OPCODE: " + idesc + ":" + s);
87 IL_Push(il, s); 87 IL_Push(il, s);
88 break; 88 break;
89 // VECTOR z,y,x 89 // VECTOR z,y,x
90 case LSO_Enums.Operation_Table.PUSHARGV: 90 case LSO_Enums.Operation_Table.PUSHARGV:
91 LSO_Enums.Vector v = new LSO_Enums.Vector(); 91 LSO_Enums.Vector v = new LSO_Enums.Vector();
92 v.Z = BitConverter.ToUInt32(br_read(4), 0); 92 v.Z = BitConverter.ToUInt32(br_read(4), 0);
93 v.Y = BitConverter.ToUInt32(br_read(4), 0); 93 v.Y = BitConverter.ToUInt32(br_read(4), 0);
94 v.X = BitConverter.ToUInt32(br_read(4), 0); 94 v.X = BitConverter.ToUInt32(br_read(4), 0);
95 Common.SendToDebug("Param1 Z: " + v.Z); 95 Common.SendToDebug("Param1 Z: " + v.Z);
96 Common.SendToDebug("Param1 Y: " + v.Y); 96 Common.SendToDebug("Param1 Y: " + v.Y);
97 Common.SendToDebug("Param1 X: " + v.X); 97 Common.SendToDebug("Param1 X: " + v.X);
98 IL_Push(il, v); 98 IL_Push(il, v);
99 break; 99 break;
100 // ROTATION s,z,y,x 100 // ROTATION s,z,y,x
101 case LSO_Enums.Operation_Table.PUSHARGQ: 101 case LSO_Enums.Operation_Table.PUSHARGQ:
102 LSO_Enums.Rotation r = new LSO_Enums.Rotation(); 102 LSO_Enums.Rotation r = new LSO_Enums.Rotation();
103 r.S = BitConverter.ToUInt32(br_read(4), 0); 103 r.S = BitConverter.ToUInt32(br_read(4), 0);
104 r.Z = BitConverter.ToUInt32(br_read(4), 0); 104 r.Z = BitConverter.ToUInt32(br_read(4), 0);
105 r.Y = BitConverter.ToUInt32(br_read(4), 0); 105 r.Y = BitConverter.ToUInt32(br_read(4), 0);
106 r.X = BitConverter.ToUInt32(br_read(4), 0); 106 r.X = BitConverter.ToUInt32(br_read(4), 0);
107 Common.SendToDebug("Param1 S: " + r.S); 107 Common.SendToDebug("Param1 S: " + r.S);
108 Common.SendToDebug("Param1 Z: " + r.Z); 108 Common.SendToDebug("Param1 Z: " + r.Z);
109 Common.SendToDebug("Param1 Y: " + r.Y); 109 Common.SendToDebug("Param1 Y: " + r.Y);
110 Common.SendToDebug("Param1 X: " + r.X); 110 Common.SendToDebug("Param1 X: " + r.X);
111 IL_Push(il, r); 111 IL_Push(il, r);
112 break; 112 break;
113 113
114 case LSO_Enums.Operation_Table.PUSHE: 114 case LSO_Enums.Operation_Table.PUSHE:
115 IL_Push(il, (UInt32)0); 115 IL_Push(il, (UInt32)0);
116 break; 116 break;
117 117
118 case LSO_Enums.Operation_Table.PUSHARGE: 118 case LSO_Enums.Operation_Table.PUSHARGE:
119 u32p1 = BitConverter.ToUInt32(br_read(4), 0); 119 u32p1 = BitConverter.ToUInt32(br_read(4), 0);
120 Common.SendToDebug("Param1: " + u32p1); 120 Common.SendToDebug("Param1: " + u32p1);
121 //IL_Push(il, new string(" ".ToCharArray()[0], Convert.ToInt32(u32p1))); 121 //IL_Push(il, new string(" ".ToCharArray()[0], Convert.ToInt32(u32p1)));
122 IL_Push(il, u32p1); 122 IL_Push(il, u32p1);
123 break; 123 break;
124 // BYTE 124 // BYTE
125 case LSO_Enums.Operation_Table.ADD: 125 case LSO_Enums.Operation_Table.ADD:
126 case LSO_Enums.Operation_Table.SUB: 126 case LSO_Enums.Operation_Table.SUB:
127 case LSO_Enums.Operation_Table.MUL: 127 case LSO_Enums.Operation_Table.MUL:
128 case LSO_Enums.Operation_Table.DIV: 128 case LSO_Enums.Operation_Table.DIV:
129 case LSO_Enums.Operation_Table.EQ: 129 case LSO_Enums.Operation_Table.EQ:
130 case LSO_Enums.Operation_Table.NEQ: 130 case LSO_Enums.Operation_Table.NEQ:
131 case LSO_Enums.Operation_Table.LEQ: 131 case LSO_Enums.Operation_Table.LEQ:
132 case LSO_Enums.Operation_Table.GEQ: 132 case LSO_Enums.Operation_Table.GEQ:
133 case LSO_Enums.Operation_Table.LESS: 133 case LSO_Enums.Operation_Table.LESS:
134 case LSO_Enums.Operation_Table.GREATER: 134 case LSO_Enums.Operation_Table.GREATER:
135 case LSO_Enums.Operation_Table.NEG: 135 case LSO_Enums.Operation_Table.NEG:
136 case LSO_Enums.Operation_Table.MOD: 136 case LSO_Enums.Operation_Table.MOD:
137 bp1 = br_read(1)[0]; 137 bp1 = br_read(1)[0];
138 Common.SendToDebug("Param1: " + bp1); 138 Common.SendToDebug("Param1: " + bp1);
139 IL_CallBaseFunction(il, idesc, (UInt32)bp1); 139 IL_CallBaseFunction(il, idesc, (UInt32)bp1);
140 break; 140 break;
141 141
142 // NO ARGUMENTS 142 // NO ARGUMENTS
143 case LSO_Enums.Operation_Table.BITAND: 143 case LSO_Enums.Operation_Table.BITAND:
144 case LSO_Enums.Operation_Table.BITOR: 144 case LSO_Enums.Operation_Table.BITOR:
145 case LSO_Enums.Operation_Table.BITXOR: 145 case LSO_Enums.Operation_Table.BITXOR:
146 case LSO_Enums.Operation_Table.BOOLAND: 146 case LSO_Enums.Operation_Table.BOOLAND:
147 case LSO_Enums.Operation_Table.BOOLOR: 147 case LSO_Enums.Operation_Table.BOOLOR:
148 case LSO_Enums.Operation_Table.BITNOT: 148 case LSO_Enums.Operation_Table.BITNOT:
149 case LSO_Enums.Operation_Table.BOOLNOT: 149 case LSO_Enums.Operation_Table.BOOLNOT:
150 IL_CallBaseFunction(il, idesc); 150 IL_CallBaseFunction(il, idesc);
151 break; 151 break;
152 // SHORT 152 // SHORT
153 case LSO_Enums.Operation_Table.CALLLIB_TWO_BYTE: 153 case LSO_Enums.Operation_Table.CALLLIB_TWO_BYTE:
154 // TODO: What is size of short? 154 // TODO: What is size of short?
155 UInt16 U16p1 = BitConverter.ToUInt16(br_read(2), 0); 155 UInt16 U16p1 = BitConverter.ToUInt16(br_read(2), 0);
156 Common.SendToDebug("Instruction " + idesc + ": Builtin Command: " + ((LSO_Enums.BuiltIn_Functions)U16p1).ToString()); 156 Common.SendToDebug("Instruction " + idesc + ": Builtin Command: " + ((LSO_Enums.BuiltIn_Functions)U16p1).ToString());
157 //Common.SendToDebug("Param1: " + U16p1); 157 //Common.SendToDebug("Param1: " + U16p1);
158 string fname = ((LSO_Enums.BuiltIn_Functions)U16p1).ToString(); 158 string fname = ((LSO_Enums.BuiltIn_Functions)U16p1).ToString();
159 159
160 bool cmdFound = false; 160 bool cmdFound = false;
161 foreach (MethodInfo mi in typeof(LSL_BuiltIn_Commands_Interface).GetMethods()) 161 foreach (MethodInfo mi in typeof(LSL_BuiltIn_Commands_Interface).GetMethods())
162 { 162 {
163 // Found command 163 // Found command
164 if (mi.Name == fname) 164 if (mi.Name == fname)
165 { 165 {
166 il.Emit(OpCodes.Ldarg_0); 166 il.Emit(OpCodes.Ldarg_0);
167 il.Emit(OpCodes.Call, typeof(LSL_BaseClass).GetMethod("GetLSL_BuiltIn", new Type[] { })); 167 il.Emit(OpCodes.Call, typeof(LSL_BaseClass).GetMethod("GetLSL_BuiltIn", new Type[] { }));
168 // Pop required number of items from my stack to .Net stack 168 // Pop required number of items from my stack to .Net stack
169 IL_PopToStack(il, mi.GetParameters().Length); 169 IL_PopToStack(il, mi.GetParameters().Length);
170 il.Emit(OpCodes.Callvirt, mi); 170 il.Emit(OpCodes.Callvirt, mi);
171 cmdFound = true; 171 cmdFound = true;
172 break; 172 break;
173 } 173 }
174 } 174 }
175 if (cmdFound == false) 175 if (cmdFound == false)
176 { 176 {
177 Common.SendToDebug("ERROR: UNABLE TO LOCATE OPCODE " + idesc + " IN BASECLASS"); 177 Common.SendToDebug("ERROR: UNABLE TO LOCATE OPCODE " + idesc + " IN BASECLASS");
178 } 178 }
179 179
180 break; 180 break;
181 181
182 // RETURN 182 // RETURN
183 case LSO_Enums.Operation_Table.RETURN: 183 case LSO_Enums.Operation_Table.RETURN:
184 184
185 Common.SendToDebug("OPCODE: RETURN"); 185 Common.SendToDebug("OPCODE: RETURN");
186 return true; 186 return true;
187 187
188 case LSO_Enums.Operation_Table.POP: 188 case LSO_Enums.Operation_Table.POP:
189 case LSO_Enums.Operation_Table.POPS: 189 case LSO_Enums.Operation_Table.POPS:
190 case LSO_Enums.Operation_Table.POPL: 190 case LSO_Enums.Operation_Table.POPL:
191 case LSO_Enums.Operation_Table.POPV: 191 case LSO_Enums.Operation_Table.POPV:
192 case LSO_Enums.Operation_Table.POPQ: 192 case LSO_Enums.Operation_Table.POPQ:
193 // Pops a specific datatype from the stack 193 // Pops a specific datatype from the stack
194 // We just ignore the datatype for now 194 // We just ignore the datatype for now
195 IL_Pop(il); 195 IL_Pop(il);
196 break; 196 break;
197 197
198 // LONG 198 // LONG
199 case LSO_Enums.Operation_Table.STORE: 199 case LSO_Enums.Operation_Table.STORE:
200 case LSO_Enums.Operation_Table.STORES: 200 case LSO_Enums.Operation_Table.STORES:
201 case LSO_Enums.Operation_Table.STOREL: 201 case LSO_Enums.Operation_Table.STOREL:
202 case LSO_Enums.Operation_Table.STOREV: 202 case LSO_Enums.Operation_Table.STOREV:
203 case LSO_Enums.Operation_Table.STOREQ: 203 case LSO_Enums.Operation_Table.STOREQ:
204 u32p1 = BitConverter.ToUInt32(br_read(4), 0); 204 u32p1 = BitConverter.ToUInt32(br_read(4), 0);
205 Common.SendToDebug("Param1: " + u32p1.ToString()); 205 Common.SendToDebug("Param1: " + u32p1.ToString());
206 IL_CallBaseFunction(il, "StoreToLocal", u32p1); 206 IL_CallBaseFunction(il, "StoreToLocal", u32p1);
207 break; 207 break;
208 208
209 case LSO_Enums.Operation_Table.STOREG: 209 case LSO_Enums.Operation_Table.STOREG:
210 case LSO_Enums.Operation_Table.STOREGS: 210 case LSO_Enums.Operation_Table.STOREGS:
211 case LSO_Enums.Operation_Table.STOREGL: 211 case LSO_Enums.Operation_Table.STOREGL:
212 case LSO_Enums.Operation_Table.STOREGV: 212 case LSO_Enums.Operation_Table.STOREGV:
213 case LSO_Enums.Operation_Table.STOREGQ: 213 case LSO_Enums.Operation_Table.STOREGQ:
214 u32p1 = BitConverter.ToUInt32(br_read(4), 0); 214 u32p1 = BitConverter.ToUInt32(br_read(4), 0);
215 Common.SendToDebug("Param1: " + u32p1.ToString()); 215 Common.SendToDebug("Param1: " + u32p1.ToString());
216 IL_CallBaseFunction(il, "StoreToGlobal", u32p1); 216 IL_CallBaseFunction(il, "StoreToGlobal", u32p1);
217 break; 217 break;
218 218
219 case LSO_Enums.Operation_Table.LOADP: 219 case LSO_Enums.Operation_Table.LOADP:
220 case LSO_Enums.Operation_Table.LOADSP: 220 case LSO_Enums.Operation_Table.LOADSP:
221 case LSO_Enums.Operation_Table.LOADLP: 221 case LSO_Enums.Operation_Table.LOADLP:
222 case LSO_Enums.Operation_Table.LOADVP: 222 case LSO_Enums.Operation_Table.LOADVP:
223 case LSO_Enums.Operation_Table.LOADQP: 223 case LSO_Enums.Operation_Table.LOADQP:
224 u32p1 = BitConverter.ToUInt32(br_read(4), 0); 224 u32p1 = BitConverter.ToUInt32(br_read(4), 0);
225 Common.SendToDebug("Param1: " + u32p1.ToString()); 225 Common.SendToDebug("Param1: " + u32p1.ToString());
226 IL_CallBaseFunction(il, "StoreToLocal", u32p1); 226 IL_CallBaseFunction(il, "StoreToLocal", u32p1);
227 IL_Pop(il); 227 IL_Pop(il);
228 break; 228 break;
229 229
230 case LSO_Enums.Operation_Table.LOADGP: 230 case LSO_Enums.Operation_Table.LOADGP:
231 case LSO_Enums.Operation_Table.LOADGSP: 231 case LSO_Enums.Operation_Table.LOADGSP:
232 case LSO_Enums.Operation_Table.LOADGLP: 232 case LSO_Enums.Operation_Table.LOADGLP:
233 case LSO_Enums.Operation_Table.LOADGVP: 233 case LSO_Enums.Operation_Table.LOADGVP:
234 case LSO_Enums.Operation_Table.LOADGQP: 234 case LSO_Enums.Operation_Table.LOADGQP:
235 u32p1 = BitConverter.ToUInt32(br_read(4), 0); 235 u32p1 = BitConverter.ToUInt32(br_read(4), 0);
236 Common.SendToDebug("Param1: " + u32p1.ToString()); 236 Common.SendToDebug("Param1: " + u32p1.ToString());
237 IL_CallBaseFunction(il, "StoreToStatic", u32p1 - 6 + myHeader.GVR); 237 IL_CallBaseFunction(il, "StoreToStatic", u32p1 - 6 + myHeader.GVR);
238 IL_Pop(il); 238 IL_Pop(il);
239 break; 239 break;
240 240
241 // PUSH FROM LOCAL FRAME 241 // PUSH FROM LOCAL FRAME
242 case LSO_Enums.Operation_Table.PUSH: 242 case LSO_Enums.Operation_Table.PUSH:
243 case LSO_Enums.Operation_Table.PUSHS: 243 case LSO_Enums.Operation_Table.PUSHS:
244 case LSO_Enums.Operation_Table.PUSHL: 244 case LSO_Enums.Operation_Table.PUSHL:
245 case LSO_Enums.Operation_Table.PUSHV: 245 case LSO_Enums.Operation_Table.PUSHV:
246 case LSO_Enums.Operation_Table.PUSHQ: 246 case LSO_Enums.Operation_Table.PUSHQ:
247 u32p1 = BitConverter.ToUInt32(br_read(4), 0); 247 u32p1 = BitConverter.ToUInt32(br_read(4), 0);
248 Common.SendToDebug("Param1: " + u32p1.ToString()); 248 Common.SendToDebug("Param1: " + u32p1.ToString());
249 IL_CallBaseFunction(il, "GetFromLocal", u32p1); 249 IL_CallBaseFunction(il, "GetFromLocal", u32p1);
250 250
251 break; 251 break;
252 252
253 // PUSH FROM STATIC FRAME 253 // PUSH FROM STATIC FRAME
254 case LSO_Enums.Operation_Table.PUSHG: 254 case LSO_Enums.Operation_Table.PUSHG:
255 case LSO_Enums.Operation_Table.PUSHGS: 255 case LSO_Enums.Operation_Table.PUSHGS:
256 case LSO_Enums.Operation_Table.PUSHGL: 256 case LSO_Enums.Operation_Table.PUSHGL:
257 case LSO_Enums.Operation_Table.PUSHGV: 257 case LSO_Enums.Operation_Table.PUSHGV:
258 case LSO_Enums.Operation_Table.PUSHGQ: 258 case LSO_Enums.Operation_Table.PUSHGQ:
259 u32p1 = BitConverter.ToUInt32(br_read(4), 0); 259 u32p1 = BitConverter.ToUInt32(br_read(4), 0);
260 Common.SendToDebug("Param1: " + u32p1.ToString()); 260 Common.SendToDebug("Param1: " + u32p1.ToString());
261 IL_CallBaseFunction(il, "GetFromStatic", u32p1 - 6 + myHeader.GVR); 261 IL_CallBaseFunction(il, "GetFromStatic", u32p1 - 6 + myHeader.GVR);
262 break; 262 break;
263 263
264 264
265 /*********************** 265 /***********************
266 * NOT IMPLEMENTED YET * 266 * NOT IMPLEMENTED YET *
267 ***********************/ 267 ***********************/
268 268
269 269
270 270
271 case LSO_Enums.Operation_Table.POPIP: 271 case LSO_Enums.Operation_Table.POPIP:
272 case LSO_Enums.Operation_Table.POPSP: 272 case LSO_Enums.Operation_Table.POPSP:
273 case LSO_Enums.Operation_Table.POPSLR: 273 case LSO_Enums.Operation_Table.POPSLR:
274 case LSO_Enums.Operation_Table.POPARG: 274 case LSO_Enums.Operation_Table.POPARG:
275 case LSO_Enums.Operation_Table.POPBP: 275 case LSO_Enums.Operation_Table.POPBP:
276 //Common.SendToDebug("Instruction " + idesc + ": Ignored"); 276 //Common.SendToDebug("Instruction " + idesc + ": Ignored");
277 Common.SendToDebug("Instruction " + idesc + ": Description: Drop x bytes from the stack (TODO: Only popping 1)"); 277 Common.SendToDebug("Instruction " + idesc + ": Description: Drop x bytes from the stack (TODO: Only popping 1)");
278 //Common.SendToDebug("Param1: " + BitConverter.ToUInt32(br_read(4), 0)); 278 //Common.SendToDebug("Param1: " + BitConverter.ToUInt32(br_read(4), 0));
279 IL_Pop(il); 279 IL_Pop(il);
280 break; 280 break;
281 281
282 282
283 283
284 // None 284 // None
285 case LSO_Enums.Operation_Table.PUSHIP: 285 case LSO_Enums.Operation_Table.PUSHIP:
286 // PUSH INSTRUCTION POINTER 286 // PUSH INSTRUCTION POINTER
287 break; 287 break;
288 case LSO_Enums.Operation_Table.PUSHBP: 288 case LSO_Enums.Operation_Table.PUSHBP:
289 289
290 case LSO_Enums.Operation_Table.PUSHEV: 290 case LSO_Enums.Operation_Table.PUSHEV:
291 break; 291 break;
292 case LSO_Enums.Operation_Table.PUSHEQ: 292 case LSO_Enums.Operation_Table.PUSHEQ:
293 break; 293 break;
294 294
295 295
296 // LONG 296 // LONG
297 case LSO_Enums.Operation_Table.JUMP: 297 case LSO_Enums.Operation_Table.JUMP:
298 Common.SendToDebug("Param1: " + BitConverter.ToUInt32(br_read(4), 0)); 298 Common.SendToDebug("Param1: " + BitConverter.ToUInt32(br_read(4), 0));
299 break; 299 break;
300 // BYTE, LONG 300 // BYTE, LONG
301 case LSO_Enums.Operation_Table.JUMPIF: 301 case LSO_Enums.Operation_Table.JUMPIF:
302 case LSO_Enums.Operation_Table.JUMPNIF: 302 case LSO_Enums.Operation_Table.JUMPNIF:
303 Common.SendToDebug("Param1: " + br_read(1)[0]); 303 Common.SendToDebug("Param1: " + br_read(1)[0]);
304 Common.SendToDebug("Param2: " + BitConverter.ToUInt32(br_read(4), 0)); 304 Common.SendToDebug("Param2: " + BitConverter.ToUInt32(br_read(4), 0));
305 break; 305 break;
306 // LONG 306 // LONG
307 case LSO_Enums.Operation_Table.STATE: 307 case LSO_Enums.Operation_Table.STATE:
308 bp1 = br_read(1)[0]; 308 bp1 = br_read(1)[0];
309 //il.Emit(OpCodes.Ld); // Load local variable 0 onto stack 309 //il.Emit(OpCodes.Ld); // Load local variable 0 onto stack
310 //il.Emit(OpCodes.Ldc_I4, 0); // Push index position 310 //il.Emit(OpCodes.Ldc_I4, 0); // Push index position
311 //il.Emit(OpCodes.Ldstr, EventList[p1]); // Push value 311 //il.Emit(OpCodes.Ldstr, EventList[p1]); // Push value
312 //il.Emit(OpCodes.Stelem_Ref); // Perform array[index] = value 312 //il.Emit(OpCodes.Stelem_Ref); // Perform array[index] = value
313 break; 313 break;
314 case LSO_Enums.Operation_Table.CALL: 314 case LSO_Enums.Operation_Table.CALL:
315 Common.SendToDebug("Param1: " + BitConverter.ToUInt32(br_read(4), 0)); 315 Common.SendToDebug("Param1: " + BitConverter.ToUInt32(br_read(4), 0));
316 Common.SendToDebug("ERROR: Function CALL not implemented yet."); 316 Common.SendToDebug("ERROR: Function CALL not implemented yet.");
317 break; 317 break;
318 // BYTE 318 // BYTE
319 case LSO_Enums.Operation_Table.CAST: 319 case LSO_Enums.Operation_Table.CAST:
320 bp1 = br_read(1)[0]; 320 bp1 = br_read(1)[0];
321 Common.SendToDebug("Instruction " + idesc + ": Cast to type: " + ((LSO_Enums.OpCode_Cast_TypeDefs)bp1)); 321 Common.SendToDebug("Instruction " + idesc + ": Cast to type: " + ((LSO_Enums.OpCode_Cast_TypeDefs)bp1));
322 Common.SendToDebug("Param1: " + bp1); 322 Common.SendToDebug("Param1: " + bp1);
323 switch ((LSO_Enums.OpCode_Cast_TypeDefs)bp1) 323 switch ((LSO_Enums.OpCode_Cast_TypeDefs)bp1)
324 { 324 {
325 case LSO_Enums.OpCode_Cast_TypeDefs.String: 325 case LSO_Enums.OpCode_Cast_TypeDefs.String:
326 Common.SendToDebug("Instruction " + idesc + ": il.Emit(OpCodes.Box, ILStack.Pop());"); 326 Common.SendToDebug("Instruction " + idesc + ": il.Emit(OpCodes.Box, ILStack.Pop());");
327 break; 327 break;
328 default: 328 default:
329 Common.SendToDebug("Instruction " + idesc + ": Unknown cast type!"); 329 Common.SendToDebug("Instruction " + idesc + ": Unknown cast type!");
330 break; 330 break;
331 } 331 }
332 break; 332 break;
333 // LONG 333 // LONG
334 case LSO_Enums.Operation_Table.STACKTOS: 334 case LSO_Enums.Operation_Table.STACKTOS:
335 case LSO_Enums.Operation_Table.STACKTOL: 335 case LSO_Enums.Operation_Table.STACKTOL:
336 Common.SendToDebug("Param1: " + BitConverter.ToUInt32(br_read(4), 0)); 336 Common.SendToDebug("Param1: " + BitConverter.ToUInt32(br_read(4), 0));
337 break; 337 break;
338 // BYTE 338 // BYTE
339 case LSO_Enums.Operation_Table.PRINT: 339 case LSO_Enums.Operation_Table.PRINT:
340 case LSO_Enums.Operation_Table.CALLLIB: 340 case LSO_Enums.Operation_Table.CALLLIB:
341 Common.SendToDebug("Param1: " + br_read(1)[0]); 341 Common.SendToDebug("Param1: " + br_read(1)[0]);
342 break; 342 break;
343 } 343 }
344 return false; 344 return false;
345 } 345 }
346 346
347 private void IL_PopToStack(ILGenerator il) 347 private void IL_PopToStack(ILGenerator il)
348 { 348 {
349 IL_PopToStack(il, 1); 349 IL_PopToStack(il, 1);
350 } 350 }
351 private void IL_PopToStack(ILGenerator il, int count) 351 private void IL_PopToStack(ILGenerator il, int count)
352 { 352 {
353 Common.SendToDebug("IL_PopToStack();"); 353 Common.SendToDebug("IL_PopToStack();");
354 for (int i = 0; i < count; i++) 354 for (int i = 0; i < count; i++)
355 { 355 {
356 IL_CallBaseFunction(il, "POPToStack"); 356 IL_CallBaseFunction(il, "POPToStack");
357 //il.Emit(OpCodes.Ldarg_0); 357 //il.Emit(OpCodes.Ldarg_0);
358 //il.Emit(OpCodes.Call, 358 //il.Emit(OpCodes.Call,
359 // typeof(LSL_BaseClass).GetMethod("POPToStack", 359 // typeof(LSL_BaseClass).GetMethod("POPToStack",
360 // new Type[] { })); 360 // new Type[] { }));
361 } 361 }
362 } 362 }
363 private void IL_Pop(ILGenerator il) 363 private void IL_Pop(ILGenerator il)
364 { 364 {
365 Common.SendToDebug("IL_Pop();"); 365 Common.SendToDebug("IL_Pop();");
366 IL_CallBaseFunction(il, "POP"); 366 IL_CallBaseFunction(il, "POP");
367 } 367 }
368 private void IL_Debug(ILGenerator il, string text) 368 private void IL_Debug(ILGenerator il, string text)
369 { 369 {
370 il.Emit(OpCodes.Ldstr, text); 370 il.Emit(OpCodes.Ldstr, text);
371 il.Emit(OpCodes.Call, typeof(Common).GetMethod("SendToDebug", 371 il.Emit(OpCodes.Call, typeof(Common).GetMethod("SendToDebug",
372 new Type[] { typeof(string) } 372 new Type[] { typeof(string) }
373 )); 373 ));
374 } 374 }
375 private void IL_CallBaseFunction(ILGenerator il, string methodname) 375 private void IL_CallBaseFunction(ILGenerator il, string methodname)
376 { 376 {
377 il.Emit(OpCodes.Ldarg_0); 377 il.Emit(OpCodes.Ldarg_0);
378 il.Emit(OpCodes.Call, typeof(LSL_BaseClass).GetMethod(methodname, new Type[] { })); 378 il.Emit(OpCodes.Call, typeof(LSL_BaseClass).GetMethod(methodname, new Type[] { }));
379 } 379 }
380 private void IL_CallBaseFunction(ILGenerator il, string methodname, object data) 380 private void IL_CallBaseFunction(ILGenerator il, string methodname, object data)
381 { 381 {
382 il.Emit(OpCodes.Ldarg_0); 382 il.Emit(OpCodes.Ldarg_0);
383 if (data.GetType() == typeof(string)) 383 if (data.GetType() == typeof(string))
384 il.Emit(OpCodes.Ldstr, (string)data); 384 il.Emit(OpCodes.Ldstr, (string)data);
385 if (data.GetType() == typeof(UInt32)) 385 if (data.GetType() == typeof(UInt32))
386 il.Emit(OpCodes.Ldc_I4, (UInt32)data); 386 il.Emit(OpCodes.Ldc_I4, (UInt32)data);
387 il.Emit(OpCodes.Call, typeof(LSL_BaseClass).GetMethod(methodname, new Type[] { data.GetType() })); 387 il.Emit(OpCodes.Call, typeof(LSL_BaseClass).GetMethod(methodname, new Type[] { data.GetType() }));
388 } 388 }
389 389
390 private void IL_Push(ILGenerator il, object data) 390 private void IL_Push(ILGenerator il, object data)
391 { 391 {
392 il.Emit(OpCodes.Ldarg_0); 392 il.Emit(OpCodes.Ldarg_0);
393 Common.SendToDebug("PUSH datatype: " + data.GetType()); 393 Common.SendToDebug("PUSH datatype: " + data.GetType());
394 394
395 IL_PushDataTypeToILStack(il, data); 395 IL_PushDataTypeToILStack(il, data);
396 396
397 il.Emit(OpCodes.Call, typeof(LSL_BaseClass).GetMethod("PUSH", new Type[] { data.GetType() })); 397 il.Emit(OpCodes.Call, typeof(LSL_BaseClass).GetMethod("PUSH", new Type[] { data.GetType() }));
398 398
399 } 399 }
400 400
401 private void IL_PushDataTypeToILStack(ILGenerator il, object data) 401 private void IL_PushDataTypeToILStack(ILGenerator il, object data)
402 { 402 {
403 if (data.GetType() == typeof(UInt16)) 403 if (data.GetType() == typeof(UInt16))
404 { 404 {
405 il.Emit(OpCodes.Ldc_I4, (UInt16)data); 405 il.Emit(OpCodes.Ldc_I4, (UInt16)data);
406 il.Emit(OpCodes.Box, data.GetType()); 406 il.Emit(OpCodes.Box, data.GetType());
407 } 407 }
408 if (data.GetType() == typeof(UInt32)) 408 if (data.GetType() == typeof(UInt32))
409 { 409 {
410 il.Emit(OpCodes.Ldc_I4, (UInt32)data); 410 il.Emit(OpCodes.Ldc_I4, (UInt32)data);
411 il.Emit(OpCodes.Box, data.GetType()); 411 il.Emit(OpCodes.Box, data.GetType());
412 } 412 }
413 if (data.GetType() == typeof(Int32)) 413 if (data.GetType() == typeof(Int32))
414 { 414 {
415 il.Emit(OpCodes.Ldc_I4, (Int32)data); 415 il.Emit(OpCodes.Ldc_I4, (Int32)data);
416 il.Emit(OpCodes.Box, data.GetType()); 416 il.Emit(OpCodes.Box, data.GetType());
417 } 417 }
418 if (data.GetType() == typeof(float)) 418 if (data.GetType() == typeof(float))
419 { 419 {
420 il.Emit(OpCodes.Ldc_I4, (float)data); 420 il.Emit(OpCodes.Ldc_I4, (float)data);
421 il.Emit(OpCodes.Box, data.GetType()); 421 il.Emit(OpCodes.Box, data.GetType());
422 } 422 }
423 if (data.GetType() == typeof(string)) 423 if (data.GetType() == typeof(string))
424 il.Emit(OpCodes.Ldstr, (string)data); 424 il.Emit(OpCodes.Ldstr, (string)data);
425 //if (data.GetType() == typeof(LSO_Enums.Rotation)) 425 //if (data.GetType() == typeof(LSO_Enums.Rotation))
426 // il.Emit(OpCodes.Ldobj, (LSO_Enums.Rotation)data); 426 // il.Emit(OpCodes.Ldobj, (LSO_Enums.Rotation)data);
427 //if (data.GetType() == typeof(LSO_Enums.Vector)) 427 //if (data.GetType() == typeof(LSO_Enums.Vector))
428 // il.Emit(OpCodes.Ldobj, (LSO_Enums.Vector)data); 428 // il.Emit(OpCodes.Ldobj, (LSO_Enums.Vector)data);
429 //if (data.GetType() == typeof(LSO_Enums.Key)) 429 //if (data.GetType() == typeof(LSO_Enums.Key))
430 // il.Emit(OpCodes.Ldobj, (LSO_Enums.Key)data); 430 // il.Emit(OpCodes.Ldobj, (LSO_Enums.Key)data);
431 431
432 } 432 }
433 433
434 434
435 } 435 }
436} 436}
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSO_Enums.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSO_Enums.cs
index db666d9..30ce314 100644
--- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSO_Enums.cs
+++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSO_Enums.cs
@@ -1,557 +1,557 @@
1/* 1/*
2* Copyright (c) Contributors, http://opensimulator.org/ 2* Copyright (c) Contributors, http://opensimulator.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders. 3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4* 4*
5* Redistribution and use in source and binary forms, with or without 5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met: 6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright 7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer. 8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright 9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the 10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution. 11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the 12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products 13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission. 14* derived from this software without specific prior written permission.
15* 15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY 16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY 19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26* 26*
27*/ 27*/
28/* Original code: Tedd Hansen */ 28/* Original code: Tedd Hansen */
29using System; 29using System;
30using System.Collections.Generic; 30using System.Collections.Generic;
31using System.Text; 31using System.Text;
32 32
33namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO 33namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO
34{ 34{
35 public static class LSO_Enums 35 public static class LSO_Enums
36 { 36 {
37 //public System.Collections.Generic.Dictionary<Byte, Type> OpCode_Add_Types; 37 //public System.Collections.Generic.Dictionary<Byte, Type> OpCode_Add_Types;
38 38
39 //LSO_Enums() { 39 //LSO_Enums() {
40 // OpCode_Add_Types.Add(51, typeof(String)); 40 // OpCode_Add_Types.Add(51, typeof(String));
41 // OpCode_Add_Types.Add(17, typeof(UInt32)); 41 // OpCode_Add_Types.Add(17, typeof(UInt32));
42 //} 42 //}
43 43
44 [Serializable] 44 [Serializable]
45 public enum OpCode_Add_TypeDefs 45 public enum OpCode_Add_TypeDefs
46 { 46 {
47 String = 51, 47 String = 51,
48 UInt32 = 17 48 UInt32 = 17
49 } 49 }
50 [Serializable] 50 [Serializable]
51 public enum OpCode_Cast_TypeDefs 51 public enum OpCode_Cast_TypeDefs
52 { 52 {
53 String = 19 53 String = 19
54 } 54 }
55 55
56 [Serializable] 56 [Serializable]
57 public struct Key 57 public struct Key
58 { 58 {
59 public string KeyString; 59 public string KeyString;
60 } 60 }
61 61
62 [Serializable] 62 [Serializable]
63 public struct Vector 63 public struct Vector
64 { 64 {
65 public UInt32 Z; 65 public UInt32 Z;
66 public UInt32 Y; 66 public UInt32 Y;
67 public UInt32 X; 67 public UInt32 X;
68 } 68 }
69 [Serializable] 69 [Serializable]
70 public struct Rotation 70 public struct Rotation
71 { 71 {
72 public UInt32 S; 72 public UInt32 S;
73 public UInt32 Z; 73 public UInt32 Z;
74 public UInt32 Y; 74 public UInt32 Y;
75 public UInt32 X; 75 public UInt32 X;
76 } 76 }
77 [Serializable] 77 [Serializable]
78 public enum Variable_Type_Codes 78 public enum Variable_Type_Codes
79 { 79 {
80 Void = 0, 80 Void = 0,
81 Integer = 1, 81 Integer = 1,
82 Float = 2, 82 Float = 2,
83 String = 3, 83 String = 3,
84 Key = 4, 84 Key = 4,
85 Vector = 5, 85 Vector = 5,
86 Rotation = 6, 86 Rotation = 6,
87 List = 7, 87 List = 7,
88 Null = 8 88 Null = 8
89 } 89 }
90 [Serializable] 90 [Serializable]
91 public enum Event_Mask_Values 91 public enum Event_Mask_Values
92 { 92 {
93 state_entry = 0, 93 state_entry = 0,
94 state_exit = 1, 94 state_exit = 1,
95 touch_start = 2, 95 touch_start = 2,
96 touch = 3, 96 touch = 3,
97 touch_end = 4, 97 touch_end = 4,
98 collision_start = 5, 98 collision_start = 5,
99 collision = 6, 99 collision = 6,
100 collision_end = 7, 100 collision_end = 7,
101 land_collision_start = 8, 101 land_collision_start = 8,
102 land_collision = 9, 102 land_collision = 9,
103 land_collision_end = 10, 103 land_collision_end = 10,
104 timer = 11, 104 timer = 11,
105 listen = 12, 105 listen = 12,
106 on_rez = 13, 106 on_rez = 13,
107 sensor = 14, 107 sensor = 14,
108 no_sensor = 15, 108 no_sensor = 15,
109 control = 16, 109 control = 16,
110 money = 17, 110 money = 17,
111 email = 18, 111 email = 18,
112 at_target = 19, 112 at_target = 19,
113 not_at_target = 20, 113 not_at_target = 20,
114 at_rot_target = 21, 114 at_rot_target = 21,
115 not_at_rot_target = 22, 115 not_at_rot_target = 22,
116 run_time_permissions = 23, 116 run_time_permissions = 23,
117 changed = 24, 117 changed = 24,
118 attach = 25, 118 attach = 25,
119 dataserver = 26, 119 dataserver = 26,
120 link_message = 27, 120 link_message = 27,
121 moving_start = 28, 121 moving_start = 28,
122 moving_end = 29, 122 moving_end = 29,
123 object_rez = 30, 123 object_rez = 30,
124 remote_data = 31, 124 remote_data = 31,
125 http_response = 32 125 http_response = 32
126 } 126 }
127 [Serializable] 127 [Serializable]
128 public enum Operation_Table 128 public enum Operation_Table
129 { 129 {
130 NOOP = 0x0, 130 NOOP = 0x0,
131 POP = 0x1, 131 POP = 0x1,
132 POPS = 0x2, 132 POPS = 0x2,
133 POPL = 0x3, 133 POPL = 0x3,
134 POPV = 0x4, 134 POPV = 0x4,
135 POPQ = 0x5, 135 POPQ = 0x5,
136 POPARG = 0x6, 136 POPARG = 0x6,
137 POPIP = 0x7, 137 POPIP = 0x7,
138 POPBP = 0x8, 138 POPBP = 0x8,
139 POPSP = 0x9, 139 POPSP = 0x9,
140 POPSLR = 0xa, 140 POPSLR = 0xa,
141 DUP = 0x20, 141 DUP = 0x20,
142 DUPS = 0x21, 142 DUPS = 0x21,
143 DUPL = 0x22, 143 DUPL = 0x22,
144 DUPV = 0x23, 144 DUPV = 0x23,
145 DUPQ = 0x24, 145 DUPQ = 0x24,
146 STORE = 0x30, 146 STORE = 0x30,
147 STORES = 0x31, 147 STORES = 0x31,
148 STOREL = 0x32, 148 STOREL = 0x32,
149 STOREV = 0x33, 149 STOREV = 0x33,
150 STOREQ = 0x34, 150 STOREQ = 0x34,
151 STOREG = 0x35, 151 STOREG = 0x35,
152 STOREGS = 0x36, 152 STOREGS = 0x36,
153 STOREGL = 0x37, 153 STOREGL = 0x37,
154 STOREGV = 0x38, 154 STOREGV = 0x38,
155 STOREGQ = 0x39, 155 STOREGQ = 0x39,
156 LOADP = 0x3a, 156 LOADP = 0x3a,
157 LOADSP = 0x3b, 157 LOADSP = 0x3b,
158 LOADLP = 0x3c, 158 LOADLP = 0x3c,
159 LOADVP = 0x3d, 159 LOADVP = 0x3d,
160 LOADQP = 0x3e, 160 LOADQP = 0x3e,
161 LOADGP = 0x3f, 161 LOADGP = 0x3f,
162 LOADGSP = 0x40, 162 LOADGSP = 0x40,
163 LOADGLP = 0x41, 163 LOADGLP = 0x41,
164 LOADGVP = 0x42, 164 LOADGVP = 0x42,
165 LOADGQP = 0x43, 165 LOADGQP = 0x43,
166 PUSH = 0x50, 166 PUSH = 0x50,
167 PUSHS = 0x51, 167 PUSHS = 0x51,
168 PUSHL = 0x52, 168 PUSHL = 0x52,
169 PUSHV = 0x53, 169 PUSHV = 0x53,
170 PUSHQ = 0x54, 170 PUSHQ = 0x54,
171 PUSHG = 0x55, 171 PUSHG = 0x55,
172 PUSHGS = 0x56, 172 PUSHGS = 0x56,
173 PUSHGL = 0x57, 173 PUSHGL = 0x57,
174 PUSHGV = 0x58, 174 PUSHGV = 0x58,
175 PUSHGQ = 0x59, 175 PUSHGQ = 0x59,
176 PUSHIP = 0x5a, 176 PUSHIP = 0x5a,
177 PUSHBP = 0x5b, 177 PUSHBP = 0x5b,
178 PUSHSP = 0x5c, 178 PUSHSP = 0x5c,
179 PUSHARGB = 0x5d, 179 PUSHARGB = 0x5d,
180 PUSHARGI = 0x5e, 180 PUSHARGI = 0x5e,
181 PUSHARGF = 0x5f, 181 PUSHARGF = 0x5f,
182 PUSHARGS = 0x60, 182 PUSHARGS = 0x60,
183 PUSHARGV = 0x61, 183 PUSHARGV = 0x61,
184 PUSHARGQ = 0x62, 184 PUSHARGQ = 0x62,
185 PUSHE = 0x63, 185 PUSHE = 0x63,
186 PUSHEV = 0x64, 186 PUSHEV = 0x64,
187 PUSHEQ = 0x65, 187 PUSHEQ = 0x65,
188 PUSHARGE = 0x66, 188 PUSHARGE = 0x66,
189 ADD = 0x70, 189 ADD = 0x70,
190 SUB = 0x71, 190 SUB = 0x71,
191 MUL = 0x72, 191 MUL = 0x72,
192 DIV = 0x73, 192 DIV = 0x73,
193 MOD = 0x74, 193 MOD = 0x74,
194 EQ = 0x75, 194 EQ = 0x75,
195 NEQ = 0x76, 195 NEQ = 0x76,
196 LEQ = 0x77, 196 LEQ = 0x77,
197 GEQ = 0x78, 197 GEQ = 0x78,
198 LESS = 0x79, 198 LESS = 0x79,
199 GREATER = 0x7a, 199 GREATER = 0x7a,
200 BITAND = 0x7b, 200 BITAND = 0x7b,
201 BITOR = 0x7c, 201 BITOR = 0x7c,
202 BITXOR = 0x7d, 202 BITXOR = 0x7d,
203 BOOLAND = 0x7e, 203 BOOLAND = 0x7e,
204 BOOLOR = 0x7f, 204 BOOLOR = 0x7f,
205 NEG = 0x80, 205 NEG = 0x80,
206 BITNOT = 0x81, 206 BITNOT = 0x81,
207 BOOLNOT = 0x82, 207 BOOLNOT = 0x82,
208 JUMP = 0x90, 208 JUMP = 0x90,
209 JUMPIF = 0x91, 209 JUMPIF = 0x91,
210 JUMPNIF = 0x92, 210 JUMPNIF = 0x92,
211 STATE = 0x93, 211 STATE = 0x93,
212 CALL = 0x94, 212 CALL = 0x94,
213 RETURN = 0x95, 213 RETURN = 0x95,
214 CAST = 0xa0, 214 CAST = 0xa0,
215 STACKTOS = 0xb0, 215 STACKTOS = 0xb0,
216 STACKTOL = 0xb1, 216 STACKTOL = 0xb1,
217 PRINT = 0xc0, 217 PRINT = 0xc0,
218 CALLLIB = 0xd0, 218 CALLLIB = 0xd0,
219 CALLLIB_TWO_BYTE = 0xd1, 219 CALLLIB_TWO_BYTE = 0xd1,
220 SHL = 0xe0, 220 SHL = 0xe0,
221 SHR = 0xe1 221 SHR = 0xe1
222 } 222 }
223 [Serializable] 223 [Serializable]
224 public enum BuiltIn_Functions 224 public enum BuiltIn_Functions
225 { 225 {
226 llSin = 0, 226 llSin = 0,
227 llCos = 1, 227 llCos = 1,
228 llTan = 2, 228 llTan = 2,
229 llAtan2 = 3, 229 llAtan2 = 3,
230 llSqrt = 4, 230 llSqrt = 4,
231 llPow = 5, 231 llPow = 5,
232 llAbs = 6, 232 llAbs = 6,
233 llFabs = 7, 233 llFabs = 7,
234 llFrand = 8, 234 llFrand = 8,
235 llFloor = 9, 235 llFloor = 9,
236 llCeil = 10, 236 llCeil = 10,
237 llRound = 11, 237 llRound = 11,
238 llVecMag = 12, 238 llVecMag = 12,
239 llVecNorm = 13, 239 llVecNorm = 13,
240 llVecDist = 14, 240 llVecDist = 14,
241 llRot2Euler = 15, 241 llRot2Euler = 15,
242 llEuler2Rot = 16, 242 llEuler2Rot = 16,
243 llAxes2Rot = 17, 243 llAxes2Rot = 17,
244 llRot2Fwd = 18, 244 llRot2Fwd = 18,
245 llRot2Left = 19, 245 llRot2Left = 19,
246 llRot2Up = 20, 246 llRot2Up = 20,
247 llRotBetween = 21, 247 llRotBetween = 21,
248 llWhisper = 22, 248 llWhisper = 22,
249 llSay = 23, 249 llSay = 23,
250 llShout = 24, 250 llShout = 24,
251 llListen = 25, 251 llListen = 25,
252 llListenControl = 26, 252 llListenControl = 26,
253 llListenRemove = 27, 253 llListenRemove = 27,
254 llSensor = 28, 254 llSensor = 28,
255 llSensorRepeat = 29, 255 llSensorRepeat = 29,
256 llSensorRemove = 30, 256 llSensorRemove = 30,
257 llDetectedName = 31, 257 llDetectedName = 31,
258 llDetectedKey = 32, 258 llDetectedKey = 32,
259 llDetectedOwner = 33, 259 llDetectedOwner = 33,
260 llDetectedType = 34, 260 llDetectedType = 34,
261 llDetectedPos = 35, 261 llDetectedPos = 35,
262 llDetectedVel = 36, 262 llDetectedVel = 36,
263 llDetectedGrab = 37, 263 llDetectedGrab = 37,
264 llDetectedRot = 38, 264 llDetectedRot = 38,
265 llDetectedGroup = 39, 265 llDetectedGroup = 39,
266 llDetectedLinkNumber = 40, 266 llDetectedLinkNumber = 40,
267 llDie = 41, 267 llDie = 41,
268 llGround = 42, 268 llGround = 42,
269 llCloud = 43, 269 llCloud = 43,
270 llWind = 44, 270 llWind = 44,
271 llSetStatus = 45, 271 llSetStatus = 45,
272 llGetStatus = 46, 272 llGetStatus = 46,
273 llSetScale = 47, 273 llSetScale = 47,
274 llGetScale = 48, 274 llGetScale = 48,
275 llSetColor = 49, 275 llSetColor = 49,
276 llGetAlpha = 50, 276 llGetAlpha = 50,
277 llSetAlpha = 51, 277 llSetAlpha = 51,
278 llGetColor = 52, 278 llGetColor = 52,
279 llSetTexture = 53, 279 llSetTexture = 53,
280 llScaleTexture = 54, 280 llScaleTexture = 54,
281 llOffsetTexture = 55, 281 llOffsetTexture = 55,
282 llRotateTexture = 56, 282 llRotateTexture = 56,
283 llGetTexture = 57, 283 llGetTexture = 57,
284 llSetPos = 58, 284 llSetPos = 58,
285 llGetPos = 59, 285 llGetPos = 59,
286 llGetLocalPos = 60, 286 llGetLocalPos = 60,
287 llSetRot = 61, 287 llSetRot = 61,
288 llGetRot = 62, 288 llGetRot = 62,
289 llGetLocalRot = 63, 289 llGetLocalRot = 63,
290 llSetForce = 64, 290 llSetForce = 64,
291 llGetForce = 65, 291 llGetForce = 65,
292 llTarget = 66, 292 llTarget = 66,
293 llTargetRemove = 67, 293 llTargetRemove = 67,
294 llRotTarget = 68, 294 llRotTarget = 68,
295 llRotTargetRemove = 69, 295 llRotTargetRemove = 69,
296 llMoveToTarget = 70, 296 llMoveToTarget = 70,
297 llStopMoveToTarget = 71, 297 llStopMoveToTarget = 71,
298 llApplyImpulse = 72, 298 llApplyImpulse = 72,
299 llApplyRotationalImpulse = 73, 299 llApplyRotationalImpulse = 73,
300 llSetTorque = 74, 300 llSetTorque = 74,
301 llGetTorque = 75, 301 llGetTorque = 75,
302 llSetForceAndTorque = 76, 302 llSetForceAndTorque = 76,
303 llGetVel = 77, 303 llGetVel = 77,
304 llGetAccel = 78, 304 llGetAccel = 78,
305 llGetOmega = 79, 305 llGetOmega = 79,
306 llGetTimeOfDay = 80, 306 llGetTimeOfDay = 80,
307 llGetWallclock = 81, 307 llGetWallclock = 81,
308 llGetTime = 82, 308 llGetTime = 82,
309 llResetTime = 83, 309 llResetTime = 83,
310 llGetAndResetTime = 84, 310 llGetAndResetTime = 84,
311 llSound = 85, 311 llSound = 85,
312 llPlaySound = 86, 312 llPlaySound = 86,
313 llLoopSound = 87, 313 llLoopSound = 87,
314 llLoopSoundMaster = 88, 314 llLoopSoundMaster = 88,
315 llLoopSoundSlave = 89, 315 llLoopSoundSlave = 89,
316 llPlaySoundSlave = 90, 316 llPlaySoundSlave = 90,
317 llTriggerSound = 91, 317 llTriggerSound = 91,
318 llStopSound = 92, 318 llStopSound = 92,
319 llPreloadSound = 93, 319 llPreloadSound = 93,
320 llGetSubString = 94, 320 llGetSubString = 94,
321 llDeleteSubString = 95, 321 llDeleteSubString = 95,
322 llInsertString = 96, 322 llInsertString = 96,
323 llToUpper = 97, 323 llToUpper = 97,
324 llToLower = 98, 324 llToLower = 98,
325 llGiveMoney = 99, 325 llGiveMoney = 99,
326 llMakeExplosion = 100, 326 llMakeExplosion = 100,
327 llMakeFountain = 101, 327 llMakeFountain = 101,
328 llMakeSmoke = 102, 328 llMakeSmoke = 102,
329 llMakeFire = 103, 329 llMakeFire = 103,
330 llRezObject = 104, 330 llRezObject = 104,
331 llLookAt = 105, 331 llLookAt = 105,
332 llStopLookAt = 106, 332 llStopLookAt = 106,
333 llSetTimerEvent = 107, 333 llSetTimerEvent = 107,
334 llSleep = 108, 334 llSleep = 108,
335 llGetMass = 109, 335 llGetMass = 109,
336 llCollisionFilter = 110, 336 llCollisionFilter = 110,
337 llTakeControls = 111, 337 llTakeControls = 111,
338 llReleaseControls = 112, 338 llReleaseControls = 112,
339 llAttachToAvatar = 113, 339 llAttachToAvatar = 113,
340 llDetachFromAvatar = 114, 340 llDetachFromAvatar = 114,
341 llTakeCamera = 115, 341 llTakeCamera = 115,
342 llReleaseCamera = 116, 342 llReleaseCamera = 116,
343 llGetOwner = 117, 343 llGetOwner = 117,
344 llInstantMessage = 118, 344 llInstantMessage = 118,
345 llEmail = 119, 345 llEmail = 119,
346 llGetNextEmail = 120, 346 llGetNextEmail = 120,
347 llGetKey = 121, 347 llGetKey = 121,
348 llSetBuoyancy = 122, 348 llSetBuoyancy = 122,
349 llSetHoverHeight = 123, 349 llSetHoverHeight = 123,
350 llStopHover = 124, 350 llStopHover = 124,
351 llMinEventDelay = 125, 351 llMinEventDelay = 125,
352 llSoundPreload = 126, 352 llSoundPreload = 126,
353 llRotLookAt = 127, 353 llRotLookAt = 127,
354 llStringLength = 128, 354 llStringLength = 128,
355 llStartAnimation = 129, 355 llStartAnimation = 129,
356 llStopAnimation = 130, 356 llStopAnimation = 130,
357 llPointAt = 131, 357 llPointAt = 131,
358 llStopPointAt = 132, 358 llStopPointAt = 132,
359 llTargetOmega = 133, 359 llTargetOmega = 133,
360 llGetStartParameter = 134, 360 llGetStartParameter = 134,
361 llGodLikeRezObject = 135, 361 llGodLikeRezObject = 135,
362 llRequestPermissions = 136, 362 llRequestPermissions = 136,
363 llGetPermissionsKey = 137, 363 llGetPermissionsKey = 137,
364 llGetPermissions = 138, 364 llGetPermissions = 138,
365 llGetLinkNumber = 139, 365 llGetLinkNumber = 139,
366 llSetLinkColor = 140, 366 llSetLinkColor = 140,
367 llCreateLink = 141, 367 llCreateLink = 141,
368 llBreakLink = 142, 368 llBreakLink = 142,
369 llBreakAllLinks = 143, 369 llBreakAllLinks = 143,
370 llGetLinkKey = 144, 370 llGetLinkKey = 144,
371 llGetLinkName = 145, 371 llGetLinkName = 145,
372 llGetInventoryNumber = 146, 372 llGetInventoryNumber = 146,
373 llGetInventoryName = 147, 373 llGetInventoryName = 147,
374 llSetScriptState = 148, 374 llSetScriptState = 148,
375 llGetEnergy = 149, 375 llGetEnergy = 149,
376 llGiveInventory = 150, 376 llGiveInventory = 150,
377 llRemoveInventory = 151, 377 llRemoveInventory = 151,
378 llSetText = 152, 378 llSetText = 152,
379 llWater = 153, 379 llWater = 153,
380 llPassTouches = 154, 380 llPassTouches = 154,
381 llRequestAgentData = 155, 381 llRequestAgentData = 155,
382 llRequestInventoryData = 156, 382 llRequestInventoryData = 156,
383 llSetDamage = 157, 383 llSetDamage = 157,
384 llTeleportAgentHome = 158, 384 llTeleportAgentHome = 158,
385 llModifyLand = 159, 385 llModifyLand = 159,
386 llCollisionSound = 160, 386 llCollisionSound = 160,
387 llCollisionSprite = 161, 387 llCollisionSprite = 161,
388 llGetAnimation = 162, 388 llGetAnimation = 162,
389 llResetScript = 163, 389 llResetScript = 163,
390 llMessageLinked = 164, 390 llMessageLinked = 164,
391 llPushObject = 165, 391 llPushObject = 165,
392 llPassCollisions = 166, 392 llPassCollisions = 166,
393 llGetScriptName = 167, 393 llGetScriptName = 167,
394 llGetNumberOfSides = 168, 394 llGetNumberOfSides = 168,
395 llAxisAngle2Rot = 169, 395 llAxisAngle2Rot = 169,
396 llRot2Axis = 170, 396 llRot2Axis = 170,
397 llRot2Angle = 171, 397 llRot2Angle = 171,
398 llAcos = 172, 398 llAcos = 172,
399 llAsin = 173, 399 llAsin = 173,
400 llAngleBetween = 174, 400 llAngleBetween = 174,
401 llGetInventoryKey = 175, 401 llGetInventoryKey = 175,
402 llAllowInventoryDrop = 176, 402 llAllowInventoryDrop = 176,
403 llGetSunDirection = 177, 403 llGetSunDirection = 177,
404 llGetTextureOffset = 178, 404 llGetTextureOffset = 178,
405 llGetTextureScale = 179, 405 llGetTextureScale = 179,
406 llGetTextureRot = 180, 406 llGetTextureRot = 180,
407 llSubStringIndex = 181, 407 llSubStringIndex = 181,
408 llGetOwnerKey = 182, 408 llGetOwnerKey = 182,
409 llGetCenterOfMass = 183, 409 llGetCenterOfMass = 183,
410 llListSort = 184, 410 llListSort = 184,
411 llGetListLength = 185, 411 llGetListLength = 185,
412 llList2Integer = 186, 412 llList2Integer = 186,
413 llList2Float = 187, 413 llList2Float = 187,
414 llList2String = 188, 414 llList2String = 188,
415 llList2Key = 189, 415 llList2Key = 189,
416 llList2Vector = 190, 416 llList2Vector = 190,
417 llList2Rot = 191, 417 llList2Rot = 191,
418 llList2List = 192, 418 llList2List = 192,
419 llDeleteSubList = 193, 419 llDeleteSubList = 193,
420 llGetListEntryType = 194, 420 llGetListEntryType = 194,
421 llList2CSV = 195, 421 llList2CSV = 195,
422 llCSV2List = 196, 422 llCSV2List = 196,
423 llListRandomize = 197, 423 llListRandomize = 197,
424 llList2ListStrided = 198, 424 llList2ListStrided = 198,
425 llGetRegionCorner = 199, 425 llGetRegionCorner = 199,
426 llListInsertList = 200, 426 llListInsertList = 200,
427 llListFindList = 201, 427 llListFindList = 201,
428 llGetObjectName = 202, 428 llGetObjectName = 202,
429 llSetObjectName = 203, 429 llSetObjectName = 203,
430 llGetDate = 204, 430 llGetDate = 204,
431 llEdgeOfWorld = 205, 431 llEdgeOfWorld = 205,
432 llGetAgentInfo = 206, 432 llGetAgentInfo = 206,
433 llAdjustSoundVolume = 207, 433 llAdjustSoundVolume = 207,
434 llSetSoundQueueing = 208, 434 llSetSoundQueueing = 208,
435 llSetSoundRadius = 209, 435 llSetSoundRadius = 209,
436 llKey2Name = 210, 436 llKey2Name = 210,
437 llSetTextureAnim = 211, 437 llSetTextureAnim = 211,
438 llTriggerSoundLimited = 212, 438 llTriggerSoundLimited = 212,
439 llEjectFromLand = 213, 439 llEjectFromLand = 213,
440 llParseString2List = 214, 440 llParseString2List = 214,
441 llOverMyLand = 215, 441 llOverMyLand = 215,
442 llGetLandOwnerAt = 216, 442 llGetLandOwnerAt = 216,
443 llGetNotecardLine = 217, 443 llGetNotecardLine = 217,
444 llGetAgentSize = 218, 444 llGetAgentSize = 218,
445 llSameGroup = 219, 445 llSameGroup = 219,
446 llUnSit = 220, 446 llUnSit = 220,
447 llGroundSlope = 221, 447 llGroundSlope = 221,
448 llGroundNormal = 222, 448 llGroundNormal = 222,
449 llGroundContour = 223, 449 llGroundContour = 223,
450 llGetAttached = 224, 450 llGetAttached = 224,
451 llGetFreeMemory = 225, 451 llGetFreeMemory = 225,
452 llGetRegionName = 226, 452 llGetRegionName = 226,
453 llGetRegionTimeDilation = 227, 453 llGetRegionTimeDilation = 227,
454 llGetRegionFPS = 228, 454 llGetRegionFPS = 228,
455 llParticleSystem = 229, 455 llParticleSystem = 229,
456 llGroundRepel = 230, 456 llGroundRepel = 230,
457 llGiveInventoryList = 231, 457 llGiveInventoryList = 231,
458 llSetVehicleType = 232, 458 llSetVehicleType = 232,
459 llSetVehicleFloatParam = 233, 459 llSetVehicleFloatParam = 233,
460 llSetVehicleVectorParam = 234, 460 llSetVehicleVectorParam = 234,
461 llSetVehicleRotationParam = 235, 461 llSetVehicleRotationParam = 235,
462 llSetVehicleFlags = 236, 462 llSetVehicleFlags = 236,
463 llRemoveVehicleFlags = 237, 463 llRemoveVehicleFlags = 237,
464 llSitTarget = 238, 464 llSitTarget = 238,
465 llAvatarOnSitTarget = 239, 465 llAvatarOnSitTarget = 239,
466 llAddToLandPassList = 240, 466 llAddToLandPassList = 240,
467 llSetTouchText = 241, 467 llSetTouchText = 241,
468 llSetSitText = 242, 468 llSetSitText = 242,
469 llSetCameraEyeOffset = 243, 469 llSetCameraEyeOffset = 243,
470 llSetCameraAtOffset = 244, 470 llSetCameraAtOffset = 244,
471 llDumpList2String = 245, 471 llDumpList2String = 245,
472 llScriptDanger = 246, 472 llScriptDanger = 246,
473 llDialog = 247, 473 llDialog = 247,
474 llVolumeDetect = 248, 474 llVolumeDetect = 248,
475 llResetOtherScript = 249, 475 llResetOtherScript = 249,
476 llGetScriptState = 250, 476 llGetScriptState = 250,
477 llRemoteLoadScript = 251, 477 llRemoteLoadScript = 251,
478 llSetRemoteScriptAccessPin = 252, 478 llSetRemoteScriptAccessPin = 252,
479 llRemoteLoadScriptPin = 253, 479 llRemoteLoadScriptPin = 253,
480 llOpenRemoteDataChannel = 254, 480 llOpenRemoteDataChannel = 254,
481 llSendRemoteData = 255, 481 llSendRemoteData = 255,
482 llRemoteDataReply = 256, 482 llRemoteDataReply = 256,
483 llCloseRemoteDataChannel = 257, 483 llCloseRemoteDataChannel = 257,
484 llMD5String = 258, 484 llMD5String = 258,
485 llSetPrimitiveParams = 259, 485 llSetPrimitiveParams = 259,
486 llStringToBase64 = 260, 486 llStringToBase64 = 260,
487 llBase64ToString = 261, 487 llBase64ToString = 261,
488 llXorBase64Strings = 262, 488 llXorBase64Strings = 262,
489 llRemoteDataSetRegion = 263, 489 llRemoteDataSetRegion = 263,
490 llLog10 = 264, 490 llLog10 = 264,
491 llLog = 265, 491 llLog = 265,
492 llGetAnimationList = 266, 492 llGetAnimationList = 266,
493 llSetParcelMusicURL = 267, 493 llSetParcelMusicURL = 267,
494 llGetRootPosition = 268, 494 llGetRootPosition = 268,
495 llGetRootRotation = 269, 495 llGetRootRotation = 269,
496 llGetObjectDesc = 270, 496 llGetObjectDesc = 270,
497 llSetObjectDesc = 271, 497 llSetObjectDesc = 271,
498 llGetCreator = 272, 498 llGetCreator = 272,
499 llGetTimestamp = 273, 499 llGetTimestamp = 273,
500 llSetLinkAlpha = 274, 500 llSetLinkAlpha = 274,
501 llGetNumberOfPrims = 275, 501 llGetNumberOfPrims = 275,
502 llGetNumberOfNotecardLines = 276, 502 llGetNumberOfNotecardLines = 276,
503 llGetBoundingBox = 277, 503 llGetBoundingBox = 277,
504 llGetGeometricCenter = 278, 504 llGetGeometricCenter = 278,
505 llGetPrimitiveParams = 279, 505 llGetPrimitiveParams = 279,
506 llIntegerToBase64 = 280, 506 llIntegerToBase64 = 280,
507 llBase64ToInteger = 281, 507 llBase64ToInteger = 281,
508 llGetGMTclock = 282, 508 llGetGMTclock = 282,
509 llGetSimulatorHostname = 283, 509 llGetSimulatorHostname = 283,
510 llSetLocalRot = 284, 510 llSetLocalRot = 284,
511 llParseStringKeepNulls = 285, 511 llParseStringKeepNulls = 285,
512 llRezAtRoot = 286, 512 llRezAtRoot = 286,
513 llGetObjectPermMask = 287, 513 llGetObjectPermMask = 287,
514 llSetObjectPermMask = 288, 514 llSetObjectPermMask = 288,
515 llGetInventoryPermMask = 289, 515 llGetInventoryPermMask = 289,
516 llSetInventoryPermMask = 290, 516 llSetInventoryPermMask = 290,
517 llGetInventoryCreator = 291, 517 llGetInventoryCreator = 291,
518 llOwnerSay = 292, 518 llOwnerSay = 292,
519 llRequestSimulatorData = 293, 519 llRequestSimulatorData = 293,
520 llForceMouselook = 294, 520 llForceMouselook = 294,
521 llGetObjectMass = 295, 521 llGetObjectMass = 295,
522 llListReplaceList = 296, 522 llListReplaceList = 296,
523 llLoadURL = 297, 523 llLoadURL = 297,
524 llParcelMediaCommandList = 298, 524 llParcelMediaCommandList = 298,
525 llParcelMediaQuery = 299, 525 llParcelMediaQuery = 299,
526 llModPow = 300, 526 llModPow = 300,
527 llGetInventoryType = 301, 527 llGetInventoryType = 301,
528 llSetPayPrice = 302, 528 llSetPayPrice = 302,
529 llGetCameraPos = 303, 529 llGetCameraPos = 303,
530 llGetCameraRot = 304, 530 llGetCameraRot = 304,
531 llSetPrimURL = 305, 531 llSetPrimURL = 305,
532 llRefreshPrimURL = 306, 532 llRefreshPrimURL = 306,
533 llEscapeURL = 307, 533 llEscapeURL = 307,
534 llUnescapeURL = 308, 534 llUnescapeURL = 308,
535 llMapDestination = 309, 535 llMapDestination = 309,
536 llAddToLandBanList = 310, 536 llAddToLandBanList = 310,
537 llRemoveFromLandPassList = 311, 537 llRemoveFromLandPassList = 311,
538 llRemoveFromLandBanList = 312, 538 llRemoveFromLandBanList = 312,
539 llSetCameraParams = 313, 539 llSetCameraParams = 313,
540 llClearCameraParams = 314, 540 llClearCameraParams = 314,
541 llListStatistics = 315, 541 llListStatistics = 315,
542 llGetUnixTime = 316, 542 llGetUnixTime = 316,
543 llGetParcelFlags = 317, 543 llGetParcelFlags = 317,
544 llGetRegionFlags = 318, 544 llGetRegionFlags = 318,
545 llXorBase64StringsCorrect = 319, 545 llXorBase64StringsCorrect = 319,
546 llHTTPRequest = 320, 546 llHTTPRequest = 320,
547 llResetLandBanList = 321, 547 llResetLandBanList = 321,
548 llResetLandPassList = 322, 548 llResetLandPassList = 322,
549 llGetParcelPrimCount = 323, 549 llGetParcelPrimCount = 323,
550 llGetParcelPrimOwners = 324, 550 llGetParcelPrimOwners = 324,
551 llGetObjectPrimCount = 325, 551 llGetObjectPrimCount = 325,
552 llGetParcelMaxPrims = 326, 552 llGetParcelMaxPrims = 326,
553 llGetParcelDetails = 327 553 llGetParcelDetails = 327
554 } 554 }
555 555
556 } 556 }
557} 557}
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSO_Parser.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSO_Parser.cs
index c3e3e73..ba97375 100644
--- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSO_Parser.cs
+++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSO_Parser.cs
@@ -1,722 +1,722 @@
1/* 1/*
2* Copyright (c) Contributors, http://opensimulator.org/ 2* Copyright (c) Contributors, http://opensimulator.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders. 3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4* 4*
5* Redistribution and use in source and binary forms, with or without 5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met: 6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright 7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer. 8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright 9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the 10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution. 11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the 12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products 13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission. 14* derived from this software without specific prior written permission.
15* 15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY 16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY 19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26* 26*
27*/ 27*/
28/* Original code: Tedd Hansen */ 28/* Original code: Tedd Hansen */
29using System; 29using System;
30using System.Collections.Generic; 30using System.Collections.Generic;
31using System.Text; 31using System.Text;
32using System.IO; 32using System.IO;
33using System.Reflection; 33using System.Reflection;
34using System.Reflection.Emit; 34using System.Reflection.Emit;
35 35
36namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO 36namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO
37{ 37{
38 partial class LSO_Parser 38 partial class LSO_Parser
39 { 39 {
40 private string FileName; 40 private string FileName;
41 private FileStream fs; 41 private FileStream fs;
42 private BinaryReader br; 42 private BinaryReader br;
43 internal LSO_Struct.Header myHeader; 43 internal LSO_Struct.Header myHeader;
44 internal Dictionary<long, LSO_Struct.StaticBlock> StaticBlocks = new Dictionary<long, LSO_Struct.StaticBlock>(); 44 internal Dictionary<long, LSO_Struct.StaticBlock> StaticBlocks = new Dictionary<long, LSO_Struct.StaticBlock>();
45 //private System.Collections.Hashtable StaticBlocks = new System.Collections.Hashtable(); 45 //private System.Collections.Hashtable StaticBlocks = new System.Collections.Hashtable();
46 46
47 private TypeBuilder typeBuilder; 47 private TypeBuilder typeBuilder;
48 private System.Collections.Generic.List<string> EventList = new System.Collections.Generic.List<string>(); 48 private System.Collections.Generic.List<string> EventList = new System.Collections.Generic.List<string>();
49 49
50 public LSO_Parser(string _FileName, TypeBuilder _typeBuilder) 50 public LSO_Parser(string _FileName, TypeBuilder _typeBuilder)
51 { 51 {
52 FileName = _FileName; 52 FileName = _FileName;
53 typeBuilder = _typeBuilder; 53 typeBuilder = _typeBuilder;
54 } 54 }
55 55
56 internal void OpenFile() 56 internal void OpenFile()
57 { 57 {
58 // Open 58 // Open
59 Common.SendToDebug("Opening filename: " + FileName); 59 Common.SendToDebug("Opening filename: " + FileName);
60 fs = File.Open(FileName, FileMode.Open, FileAccess.Read, FileShare.Read); 60 fs = File.Open(FileName, FileMode.Open, FileAccess.Read, FileShare.Read);
61 br = new BinaryReader(fs, Encoding.BigEndianUnicode); 61 br = new BinaryReader(fs, Encoding.BigEndianUnicode);
62 62
63 } 63 }
64 internal void CloseFile() 64 internal void CloseFile()
65 { 65 {
66 66
67 // Close 67 // Close
68 br.Close(); 68 br.Close();
69 fs.Close(); 69 fs.Close();
70 } 70 }
71 71
72 72
73 /// <summary> 73 /// <summary>
74 /// Parse LSO file. 74 /// Parse LSO file.
75 /// </summary> 75 /// </summary>
76 public void Parse() 76 public void Parse()
77 { 77 {
78 78
79 79
80 80
81 // The LSO Format consist of 6 major blocks: header, statics, functions, states, heap, and stack. 81 // The LSO Format consist of 6 major blocks: header, statics, functions, states, heap, and stack.
82 82
83 83
84 // HEADER BLOCK 84 // HEADER BLOCK
85 Common.SendToDebug("Reading HEADER BLOCK at: 0"); 85 Common.SendToDebug("Reading HEADER BLOCK at: 0");
86 fs.Seek(0, SeekOrigin.Begin); 86 fs.Seek(0, SeekOrigin.Begin);
87 myHeader = new LSO_Struct.Header(); 87 myHeader = new LSO_Struct.Header();
88 myHeader.TM = BitConverter.ToUInt32(br_read(4), 0); 88 myHeader.TM = BitConverter.ToUInt32(br_read(4), 0);
89 myHeader.IP = BitConverter.ToUInt32(br_read(4), 0); 89 myHeader.IP = BitConverter.ToUInt32(br_read(4), 0);
90 myHeader.VN = BitConverter.ToUInt32(br_read(4), 0); 90 myHeader.VN = BitConverter.ToUInt32(br_read(4), 0);
91 myHeader.BP = BitConverter.ToUInt32(br_read(4), 0); 91 myHeader.BP = BitConverter.ToUInt32(br_read(4), 0);
92 myHeader.SP = BitConverter.ToUInt32(br_read(4), 0); 92 myHeader.SP = BitConverter.ToUInt32(br_read(4), 0);
93 myHeader.HR = BitConverter.ToUInt32(br_read(4), 0); 93 myHeader.HR = BitConverter.ToUInt32(br_read(4), 0);
94 myHeader.HP = BitConverter.ToUInt32(br_read(4), 0); 94 myHeader.HP = BitConverter.ToUInt32(br_read(4), 0);
95 myHeader.CS = BitConverter.ToUInt32(br_read(4), 0); 95 myHeader.CS = BitConverter.ToUInt32(br_read(4), 0);
96 myHeader.NS = BitConverter.ToUInt32(br_read(4), 0); 96 myHeader.NS = BitConverter.ToUInt32(br_read(4), 0);
97 myHeader.CE = BitConverter.ToUInt32(br_read(4), 0); 97 myHeader.CE = BitConverter.ToUInt32(br_read(4), 0);
98 myHeader.IE = BitConverter.ToUInt32(br_read(4), 0); 98 myHeader.IE = BitConverter.ToUInt32(br_read(4), 0);
99 myHeader.ER = BitConverter.ToUInt32(br_read(4), 0); 99 myHeader.ER = BitConverter.ToUInt32(br_read(4), 0);
100 myHeader.FR = BitConverter.ToUInt32(br_read(4), 0); 100 myHeader.FR = BitConverter.ToUInt32(br_read(4), 0);
101 myHeader.SLR = BitConverter.ToUInt32(br_read(4), 0); 101 myHeader.SLR = BitConverter.ToUInt32(br_read(4), 0);
102 myHeader.GVR = BitConverter.ToUInt32(br_read(4), 0); 102 myHeader.GVR = BitConverter.ToUInt32(br_read(4), 0);
103 myHeader.GFR = BitConverter.ToUInt32(br_read(4), 0); 103 myHeader.GFR = BitConverter.ToUInt32(br_read(4), 0);
104 myHeader.PR = BitConverter.ToUInt32(br_read(4), 0); 104 myHeader.PR = BitConverter.ToUInt32(br_read(4), 0);
105 myHeader.ESR = BitConverter.ToUInt32(br_read(4), 0); 105 myHeader.ESR = BitConverter.ToUInt32(br_read(4), 0);
106 myHeader.SR = BitConverter.ToUInt32(br_read(4), 0); 106 myHeader.SR = BitConverter.ToUInt32(br_read(4), 0);
107 myHeader.NCE = BitConverter.ToUInt64(br_read(8), 0); 107 myHeader.NCE = BitConverter.ToUInt64(br_read(8), 0);
108 myHeader.NIE = BitConverter.ToUInt64(br_read(8), 0); 108 myHeader.NIE = BitConverter.ToUInt64(br_read(8), 0);
109 myHeader.NER = BitConverter.ToUInt64(br_read(8), 0); 109 myHeader.NER = BitConverter.ToUInt64(br_read(8), 0);
110 110
111 // Print Header Block to debug 111 // Print Header Block to debug
112 Common.SendToDebug("TM - Top of memory (size): " + myHeader.TM); 112 Common.SendToDebug("TM - Top of memory (size): " + myHeader.TM);
113 Common.SendToDebug("IP - Instruction Pointer (0=not running): " + myHeader.IP); 113 Common.SendToDebug("IP - Instruction Pointer (0=not running): " + myHeader.IP);
114 Common.SendToDebug("VN - Version number: " + myHeader.VN); 114 Common.SendToDebug("VN - Version number: " + myHeader.VN);
115 Common.SendToDebug("BP - Local Frame Pointer: " + myHeader.BP); 115 Common.SendToDebug("BP - Local Frame Pointer: " + myHeader.BP);
116 Common.SendToDebug("SP - Stack Pointer: " + myHeader.SP); 116 Common.SendToDebug("SP - Stack Pointer: " + myHeader.SP);
117 Common.SendToDebug("HR - Heap Register: " + myHeader.HR); 117 Common.SendToDebug("HR - Heap Register: " + myHeader.HR);
118 Common.SendToDebug("HP - Heap Pointer: " + myHeader.HP); 118 Common.SendToDebug("HP - Heap Pointer: " + myHeader.HP);
119 Common.SendToDebug("CS - Current State: " + myHeader.CS); 119 Common.SendToDebug("CS - Current State: " + myHeader.CS);
120 Common.SendToDebug("NS - Next State: " + myHeader.NS); 120 Common.SendToDebug("NS - Next State: " + myHeader.NS);
121 Common.SendToDebug("CE - Current Events: " + myHeader.CE); 121 Common.SendToDebug("CE - Current Events: " + myHeader.CE);
122 Common.SendToDebug("IE - In Event: " + myHeader.IE); 122 Common.SendToDebug("IE - In Event: " + myHeader.IE);
123 Common.SendToDebug("ER - Event Register: " + myHeader.ER); 123 Common.SendToDebug("ER - Event Register: " + myHeader.ER);
124 Common.SendToDebug("FR - Fault Register: " + myHeader.FR); 124 Common.SendToDebug("FR - Fault Register: " + myHeader.FR);
125 Common.SendToDebug("SLR - Sleep Register: " + myHeader.SLR); 125 Common.SendToDebug("SLR - Sleep Register: " + myHeader.SLR);
126 Common.SendToDebug("GVR - Global Variable Register: " + myHeader.GVR); 126 Common.SendToDebug("GVR - Global Variable Register: " + myHeader.GVR);
127 Common.SendToDebug("GFR - Global Function Register: " + myHeader.GFR); 127 Common.SendToDebug("GFR - Global Function Register: " + myHeader.GFR);
128 Common.SendToDebug("PR - Parameter Register: " + myHeader.PR); 128 Common.SendToDebug("PR - Parameter Register: " + myHeader.PR);
129 Common.SendToDebug("ESR - Energy Supply Register: " + myHeader.ESR); 129 Common.SendToDebug("ESR - Energy Supply Register: " + myHeader.ESR);
130 Common.SendToDebug("SR - State Register: " + myHeader.SR); 130 Common.SendToDebug("SR - State Register: " + myHeader.SR);
131 Common.SendToDebug("NCE - 64-bit Current Events: " + myHeader.NCE); 131 Common.SendToDebug("NCE - 64-bit Current Events: " + myHeader.NCE);
132 Common.SendToDebug("NIE - 64-bit In Events: " + myHeader.NIE); 132 Common.SendToDebug("NIE - 64-bit In Events: " + myHeader.NIE);
133 Common.SendToDebug("NER - 64-bit Event Register: " + myHeader.NER); 133 Common.SendToDebug("NER - 64-bit Event Register: " + myHeader.NER);
134 Common.SendToDebug("Read position when exiting HEADER BLOCK: " + fs.Position); 134 Common.SendToDebug("Read position when exiting HEADER BLOCK: " + fs.Position);
135 135
136 // STATIC BLOCK 136 // STATIC BLOCK
137 Common.SendToDebug("Reading STATIC BLOCK at: " + myHeader.GVR); 137 Common.SendToDebug("Reading STATIC BLOCK at: " + myHeader.GVR);
138 fs.Seek(myHeader.GVR, SeekOrigin.Begin); 138 fs.Seek(myHeader.GVR, SeekOrigin.Begin);
139 int StaticBlockCount = 0; 139 int StaticBlockCount = 0;
140 // Read function blocks until we hit GFR 140 // Read function blocks until we hit GFR
141 while (fs.Position < myHeader.GFR) 141 while (fs.Position < myHeader.GFR)
142 { 142 {
143 StaticBlockCount++; 143 StaticBlockCount++;
144 long startReadPos = fs.Position; 144 long startReadPos = fs.Position;
145 Common.SendToDebug("Reading Static Block " + StaticBlockCount + " at: " + startReadPos); 145 Common.SendToDebug("Reading Static Block " + StaticBlockCount + " at: " + startReadPos);
146 146
147 //fs.Seek(myHeader.GVR, SeekOrigin.Begin); 147 //fs.Seek(myHeader.GVR, SeekOrigin.Begin);
148 LSO_Struct.StaticBlock myStaticBlock = new LSO_Struct.StaticBlock(); 148 LSO_Struct.StaticBlock myStaticBlock = new LSO_Struct.StaticBlock();
149 myStaticBlock.Static_Chunk_Header_Size = BitConverter.ToUInt32(br_read(4), 0); 149 myStaticBlock.Static_Chunk_Header_Size = BitConverter.ToUInt32(br_read(4), 0);
150 myStaticBlock.ObjectType = br_read(1)[0]; 150 myStaticBlock.ObjectType = br_read(1)[0];
151 Common.SendToDebug("Static Block ObjectType: " + ((LSO_Enums.Variable_Type_Codes)myStaticBlock.ObjectType).ToString()); 151 Common.SendToDebug("Static Block ObjectType: " + ((LSO_Enums.Variable_Type_Codes)myStaticBlock.ObjectType).ToString());
152 myStaticBlock.Unknown = br_read(1)[0]; 152 myStaticBlock.Unknown = br_read(1)[0];
153 // Size of datatype varies -- what about strings? 153 // Size of datatype varies -- what about strings?
154 if (myStaticBlock.ObjectType != 0) 154 if (myStaticBlock.ObjectType != 0)
155 myStaticBlock.BlockVariable = br_read(getObjectSize(myStaticBlock.ObjectType)); 155 myStaticBlock.BlockVariable = br_read(getObjectSize(myStaticBlock.ObjectType));
156 156
157 StaticBlocks.Add((UInt32)startReadPos, myStaticBlock); 157 StaticBlocks.Add((UInt32)startReadPos, myStaticBlock);
158 158
159 } 159 }
160 Common.SendToDebug("Number of Static Blocks read: " + StaticBlockCount); 160 Common.SendToDebug("Number of Static Blocks read: " + StaticBlockCount);
161 161
162 162
163 // FUNCTION BLOCK 163 // FUNCTION BLOCK
164 // Always right after STATIC BLOCK 164 // Always right after STATIC BLOCK
165 LSO_Struct.FunctionBlock myFunctionBlock = new LSO_Struct.FunctionBlock(); 165 LSO_Struct.FunctionBlock myFunctionBlock = new LSO_Struct.FunctionBlock();
166 if (myHeader.GFR == myHeader.SR) 166 if (myHeader.GFR == myHeader.SR)
167 { 167 {
168 // If GFR and SR are at same position then there is no fuction block 168 // If GFR and SR are at same position then there is no fuction block
169 Common.SendToDebug("No FUNCTION BLOCK found"); 169 Common.SendToDebug("No FUNCTION BLOCK found");
170 } 170 }
171 else 171 else
172 { 172 {
173 Common.SendToDebug("Reading FUNCTION BLOCK at: " + myHeader.GFR); 173 Common.SendToDebug("Reading FUNCTION BLOCK at: " + myHeader.GFR);
174 fs.Seek(myHeader.GFR, SeekOrigin.Begin); 174 fs.Seek(myHeader.GFR, SeekOrigin.Begin);
175 myFunctionBlock.FunctionCount = BitConverter.ToUInt32(br_read(4), 0); 175 myFunctionBlock.FunctionCount = BitConverter.ToUInt32(br_read(4), 0);
176 Common.SendToDebug("Number of functions in Fuction Block: " + myFunctionBlock.FunctionCount); 176 Common.SendToDebug("Number of functions in Fuction Block: " + myFunctionBlock.FunctionCount);
177 if (myFunctionBlock.FunctionCount > 0) 177 if (myFunctionBlock.FunctionCount > 0)
178 { 178 {
179 myFunctionBlock.CodeChunkPointer = new UInt32[myFunctionBlock.FunctionCount]; 179 myFunctionBlock.CodeChunkPointer = new UInt32[myFunctionBlock.FunctionCount];
180 for (int i = 0; i < myFunctionBlock.FunctionCount; i++) 180 for (int i = 0; i < myFunctionBlock.FunctionCount; i++)
181 { 181 {
182 Common.SendToDebug("Reading function " + i + " at: " + fs.Position); 182 Common.SendToDebug("Reading function " + i + " at: " + fs.Position);
183 // TODO: ADD TO FUNCTION LIST (How do we identify it later?) 183 // TODO: ADD TO FUNCTION LIST (How do we identify it later?)
184 // Note! Absolute position 184 // Note! Absolute position
185 myFunctionBlock.CodeChunkPointer[i] = BitConverter.ToUInt32(br_read(4), 0) + myHeader.GFR; 185 myFunctionBlock.CodeChunkPointer[i] = BitConverter.ToUInt32(br_read(4), 0) + myHeader.GFR;
186 Common.SendToDebug("Fuction " + i + " code chunk position: " + myFunctionBlock.CodeChunkPointer[i]); 186 Common.SendToDebug("Fuction " + i + " code chunk position: " + myFunctionBlock.CodeChunkPointer[i]);
187 } 187 }
188 } 188 }
189 } 189 }
190 190
191 191
192 // STATE FRAME BLOCK 192 // STATE FRAME BLOCK
193 // Always right after FUNCTION BLOCK 193 // Always right after FUNCTION BLOCK
194 Common.SendToDebug("Reading STATE BLOCK at: " + myHeader.SR); 194 Common.SendToDebug("Reading STATE BLOCK at: " + myHeader.SR);
195 fs.Seek(myHeader.SR, SeekOrigin.Begin); 195 fs.Seek(myHeader.SR, SeekOrigin.Begin);
196 LSO_Struct.StateFrameBlock myStateFrameBlock = new LSO_Struct.StateFrameBlock(); 196 LSO_Struct.StateFrameBlock myStateFrameBlock = new LSO_Struct.StateFrameBlock();
197 myStateFrameBlock.StateCount = BitConverter.ToUInt32(br_read(4), 0); 197 myStateFrameBlock.StateCount = BitConverter.ToUInt32(br_read(4), 0);
198 if (myStateFrameBlock.StateCount > 0) 198 if (myStateFrameBlock.StateCount > 0)
199 { 199 {
200 // Initialize array 200 // Initialize array
201 myStateFrameBlock.StatePointer = new LSO_Struct.StatePointerBlock[myStateFrameBlock.StateCount]; 201 myStateFrameBlock.StatePointer = new LSO_Struct.StatePointerBlock[myStateFrameBlock.StateCount];
202 for (int i = 0; i < myStateFrameBlock.StateCount; i++) 202 for (int i = 0; i < myStateFrameBlock.StateCount; i++)
203 { 203 {
204 Common.SendToDebug("Reading STATE POINTER BLOCK " + (i + 1) + " at: " + fs.Position); 204 Common.SendToDebug("Reading STATE POINTER BLOCK " + (i + 1) + " at: " + fs.Position);
205 // Position is relative to state frame 205 // Position is relative to state frame
206 myStateFrameBlock.StatePointer[i].Location = myHeader.SR + BitConverter.ToUInt32(br_read(4), 0); 206 myStateFrameBlock.StatePointer[i].Location = myHeader.SR + BitConverter.ToUInt32(br_read(4), 0);
207 myStateFrameBlock.StatePointer[i].EventMask = new System.Collections.BitArray(br_read(8)); 207 myStateFrameBlock.StatePointer[i].EventMask = new System.Collections.BitArray(br_read(8));
208 Common.SendToDebug("Pointer: " + myStateFrameBlock.StatePointer[i].Location); 208 Common.SendToDebug("Pointer: " + myStateFrameBlock.StatePointer[i].Location);
209 Common.SendToDebug("Total potential EventMask bits: " + myStateFrameBlock.StatePointer[i].EventMask.Count); 209 Common.SendToDebug("Total potential EventMask bits: " + myStateFrameBlock.StatePointer[i].EventMask.Count);
210 210
211 //// Read STATE BLOCK 211 //// Read STATE BLOCK
212 //long CurPos = fs.Position; 212 //long CurPos = fs.Position;
213 //fs.Seek(CurPos, SeekOrigin.Begin); 213 //fs.Seek(CurPos, SeekOrigin.Begin);
214 214
215 } 215 }
216 } 216 }
217 217
218 218
219 // STATE BLOCK 219 // STATE BLOCK
220 // For each StateFrameBlock there is one StateBlock with multiple event handlers 220 // For each StateFrameBlock there is one StateBlock with multiple event handlers
221 221
222 if (myStateFrameBlock.StateCount > 0) 222 if (myStateFrameBlock.StateCount > 0)
223 { 223 {
224 // Go through all State Frame Pointers found 224 // Go through all State Frame Pointers found
225 for (int i = 0; i < myStateFrameBlock.StateCount; i++) 225 for (int i = 0; i < myStateFrameBlock.StateCount; i++)
226 { 226 {
227 227
228 fs.Seek(myStateFrameBlock.StatePointer[i].Location, SeekOrigin.Begin); 228 fs.Seek(myStateFrameBlock.StatePointer[i].Location, SeekOrigin.Begin);
229 Common.SendToDebug("Reading STATE BLOCK " + (i + 1) + " at: " + fs.Position); 229 Common.SendToDebug("Reading STATE BLOCK " + (i + 1) + " at: " + fs.Position);
230 230
231 // READ: STATE BLOCK HEADER 231 // READ: STATE BLOCK HEADER
232 myStateFrameBlock.StatePointer[i].StateBlock = new LSO_Struct.StateBlock(); 232 myStateFrameBlock.StatePointer[i].StateBlock = new LSO_Struct.StateBlock();
233 myStateFrameBlock.StatePointer[i].StateBlock.StartPos = (UInt32)fs.Position; // Note 233 myStateFrameBlock.StatePointer[i].StateBlock.StartPos = (UInt32)fs.Position; // Note
234 myStateFrameBlock.StatePointer[i].StateBlock.HeaderSize = BitConverter.ToUInt32(br_read(4), 0); 234 myStateFrameBlock.StatePointer[i].StateBlock.HeaderSize = BitConverter.ToUInt32(br_read(4), 0);
235 myStateFrameBlock.StatePointer[i].StateBlock.Unknown = br_read(1)[0]; 235 myStateFrameBlock.StatePointer[i].StateBlock.Unknown = br_read(1)[0];
236 myStateFrameBlock.StatePointer[i].StateBlock.EndPos = (UInt32)fs.Position; // Note 236 myStateFrameBlock.StatePointer[i].StateBlock.EndPos = (UInt32)fs.Position; // Note
237 Common.SendToDebug("State block Start Pos: " + myStateFrameBlock.StatePointer[i].StateBlock.StartPos); 237 Common.SendToDebug("State block Start Pos: " + myStateFrameBlock.StatePointer[i].StateBlock.StartPos);
238 Common.SendToDebug("State block Header Size: " + myStateFrameBlock.StatePointer[i].StateBlock.HeaderSize); 238 Common.SendToDebug("State block Header Size: " + myStateFrameBlock.StatePointer[i].StateBlock.HeaderSize);
239 Common.SendToDebug("State block Header End Pos: " + myStateFrameBlock.StatePointer[i].StateBlock.EndPos); 239 Common.SendToDebug("State block Header End Pos: " + myStateFrameBlock.StatePointer[i].StateBlock.EndPos);
240 240
241 // We need to count number of bits flagged in EventMask? 241 // We need to count number of bits flagged in EventMask?
242 242
243 243
244 // for each bit in myStateFrameBlock.StatePointer[i].EventMask 244 // for each bit in myStateFrameBlock.StatePointer[i].EventMask
245 245
246 // ADDING TO ALL RIGHT NOW, SHOULD LIMIT TO ONLY THE ONES IN USE 246 // ADDING TO ALL RIGHT NOW, SHOULD LIMIT TO ONLY THE ONES IN USE
247 //TODO: Create event hooks 247 //TODO: Create event hooks
248 myStateFrameBlock.StatePointer[i].StateBlock.StateBlockHandlers = new LSO_Struct.StateBlockHandler[myStateFrameBlock.StatePointer[i].EventMask.Count - 1]; 248 myStateFrameBlock.StatePointer[i].StateBlock.StateBlockHandlers = new LSO_Struct.StateBlockHandler[myStateFrameBlock.StatePointer[i].EventMask.Count - 1];
249 for (int ii = 0; ii < myStateFrameBlock.StatePointer[i].EventMask.Count - 1; ii++) 249 for (int ii = 0; ii < myStateFrameBlock.StatePointer[i].EventMask.Count - 1; ii++)
250 { 250 {
251 251
252 if (myStateFrameBlock.StatePointer[i].EventMask.Get(ii) == true) 252 if (myStateFrameBlock.StatePointer[i].EventMask.Get(ii) == true)
253 { 253 {
254 // We got an event 254 // We got an event
255 // READ: STATE BLOCK HANDLER 255 // READ: STATE BLOCK HANDLER
256 Common.SendToDebug("Reading STATE BLOCK " + (i + 1) + " HANDLER matching EVENT MASK " + ii + " (" + ((LSO_Enums.Event_Mask_Values)ii).ToString() + ") at: " + fs.Position); 256 Common.SendToDebug("Reading STATE BLOCK " + (i + 1) + " HANDLER matching EVENT MASK " + ii + " (" + ((LSO_Enums.Event_Mask_Values)ii).ToString() + ") at: " + fs.Position);
257 myStateFrameBlock.StatePointer[i].StateBlock.StateBlockHandlers[ii].CodeChunkPointer = myStateFrameBlock.StatePointer[i].StateBlock.EndPos + BitConverter.ToUInt32(br_read(4), 0); 257 myStateFrameBlock.StatePointer[i].StateBlock.StateBlockHandlers[ii].CodeChunkPointer = myStateFrameBlock.StatePointer[i].StateBlock.EndPos + BitConverter.ToUInt32(br_read(4), 0);
258 myStateFrameBlock.StatePointer[i].StateBlock.StateBlockHandlers[ii].CallFrameSize = BitConverter.ToUInt32(br_read(4), 0); 258 myStateFrameBlock.StatePointer[i].StateBlock.StateBlockHandlers[ii].CallFrameSize = BitConverter.ToUInt32(br_read(4), 0);
259 Common.SendToDebug("Reading STATE BLOCK " + (i + 1) + " HANDLER EVENT MASK " + ii + " (" + ((LSO_Enums.Event_Mask_Values)ii).ToString() + ") Code Chunk Pointer: " + myStateFrameBlock.StatePointer[i].StateBlock.StateBlockHandlers[ii].CodeChunkPointer); 259 Common.SendToDebug("Reading STATE BLOCK " + (i + 1) + " HANDLER EVENT MASK " + ii + " (" + ((LSO_Enums.Event_Mask_Values)ii).ToString() + ") Code Chunk Pointer: " + myStateFrameBlock.StatePointer[i].StateBlock.StateBlockHandlers[ii].CodeChunkPointer);
260 Common.SendToDebug("Reading STATE BLOCK " + (i + 1) + " HANDLER EVENT MASK " + ii + " (" + ((LSO_Enums.Event_Mask_Values)ii).ToString() + ") Call Frame Size: " + myStateFrameBlock.StatePointer[i].StateBlock.StateBlockHandlers[ii].CallFrameSize); 260 Common.SendToDebug("Reading STATE BLOCK " + (i + 1) + " HANDLER EVENT MASK " + ii + " (" + ((LSO_Enums.Event_Mask_Values)ii).ToString() + ") Call Frame Size: " + myStateFrameBlock.StatePointer[i].StateBlock.StateBlockHandlers[ii].CallFrameSize);
261 } 261 }
262 } 262 }
263 } 263 }
264 } 264 }
265 265
266 266
267 267
268 268
269 //// READ FUNCTION CODE CHUNKS 269 //// READ FUNCTION CODE CHUNKS
270 //// Functions + Function start pos (GFR) 270 //// Functions + Function start pos (GFR)
271 //// TODO: Somehow be able to identify and reference this 271 //// TODO: Somehow be able to identify and reference this
272 //LSO_Struct.CodeChunk[] myFunctionCodeChunk; 272 //LSO_Struct.CodeChunk[] myFunctionCodeChunk;
273 //if (myFunctionBlock.FunctionCount > 0) 273 //if (myFunctionBlock.FunctionCount > 0)
274 //{ 274 //{
275 // myFunctionCodeChunk = new LSO_Struct.CodeChunk[myFunctionBlock.FunctionCount]; 275 // myFunctionCodeChunk = new LSO_Struct.CodeChunk[myFunctionBlock.FunctionCount];
276 // for (int i = 0; i < myFunctionBlock.FunctionCount; i++) 276 // for (int i = 0; i < myFunctionBlock.FunctionCount; i++)
277 // { 277 // {
278 // Common.SendToDebug("Reading Function Code Chunk " + i); 278 // Common.SendToDebug("Reading Function Code Chunk " + i);
279 // myFunctionCodeChunk[i] = GetCodeChunk((UInt32)myFunctionBlock.CodeChunkPointer[i]); 279 // myFunctionCodeChunk[i] = GetCodeChunk((UInt32)myFunctionBlock.CodeChunkPointer[i]);
280 // } 280 // }
281 281
282 //} 282 //}
283 // READ EVENT CODE CHUNKS 283 // READ EVENT CODE CHUNKS
284 LSO_Struct.CodeChunk[] myEventCodeChunk; 284 LSO_Struct.CodeChunk[] myEventCodeChunk;
285 if (myStateFrameBlock.StateCount > 0) 285 if (myStateFrameBlock.StateCount > 0)
286 { 286 {
287 myEventCodeChunk = new LSO_Struct.CodeChunk[myStateFrameBlock.StateCount]; 287 myEventCodeChunk = new LSO_Struct.CodeChunk[myStateFrameBlock.StateCount];
288 for (int i = 0; i < myStateFrameBlock.StateCount; i++) 288 for (int i = 0; i < myStateFrameBlock.StateCount; i++)
289 { 289 {
290 // TODO: Somehow organize events and functions so they can be found again, 290 // TODO: Somehow organize events and functions so they can be found again,
291 // two level search ain't no good 291 // two level search ain't no good
292 for (int ii = 0; ii < myStateFrameBlock.StatePointer[i].EventMask.Count - 1; ii++) 292 for (int ii = 0; ii < myStateFrameBlock.StatePointer[i].EventMask.Count - 1; ii++)
293 { 293 {
294 294
295 295
296 if (myStateFrameBlock.StatePointer[i].StateBlock.StateBlockHandlers[ii].CodeChunkPointer > 0) 296 if (myStateFrameBlock.StatePointer[i].StateBlock.StateBlockHandlers[ii].CodeChunkPointer > 0)
297 { 297 {
298 Common.SendToDebug("Reading Event Code Chunk state " + i + ", event " + (LSO_Enums.Event_Mask_Values)ii); 298 Common.SendToDebug("Reading Event Code Chunk state " + i + ", event " + (LSO_Enums.Event_Mask_Values)ii);
299 299
300 300
301 // Override a Method / Function 301 // Override a Method / Function
302 string eventname = i + "_event_" + (LSO_Enums.Event_Mask_Values)ii; 302 string eventname = i + "_event_" + (LSO_Enums.Event_Mask_Values)ii;
303 Common.SendToDebug("Event Name: " + eventname); 303 Common.SendToDebug("Event Name: " + eventname);
304 if (Common.IL_ProcessCodeChunks) 304 if (Common.IL_ProcessCodeChunks)
305 { 305 {
306 EventList.Add(eventname); 306 EventList.Add(eventname);
307 307
308 // JUMP TO CODE PROCESSOR 308 // JUMP TO CODE PROCESSOR
309 ProcessCodeChunk(myStateFrameBlock.StatePointer[i].StateBlock.StateBlockHandlers[ii].CodeChunkPointer, typeBuilder, eventname); 309 ProcessCodeChunk(myStateFrameBlock.StatePointer[i].StateBlock.StateBlockHandlers[ii].CodeChunkPointer, typeBuilder, eventname);
310 } 310 }
311 } 311 }
312 312
313 } 313 }
314 314
315 } 315 }
316 316
317 } 317 }
318 318
319 319
320 320
321 321
322 if (Common.IL_CreateFunctionList) 322 if (Common.IL_CreateFunctionList)
323 IL_INSERT_FUNCTIONLIST(); 323 IL_INSERT_FUNCTIONLIST();
324 324
325 } 325 }
326 326
327 internal LSO_Struct.HeapBlock GetHeap(UInt32 pos) 327 internal LSO_Struct.HeapBlock GetHeap(UInt32 pos)
328 { 328 {
329 // HEAP BLOCK 329 // HEAP BLOCK
330 // TODO:? Special read for strings/keys (null terminated) and lists (pointers to other HEAP entries) 330 // TODO:? Special read for strings/keys (null terminated) and lists (pointers to other HEAP entries)
331 Common.SendToDebug("Reading HEAP BLOCK at: " + pos); 331 Common.SendToDebug("Reading HEAP BLOCK at: " + pos);
332 fs.Seek(pos, SeekOrigin.Begin); 332 fs.Seek(pos, SeekOrigin.Begin);
333 333
334 LSO_Struct.HeapBlock myHeapBlock = new LSO_Struct.HeapBlock(); 334 LSO_Struct.HeapBlock myHeapBlock = new LSO_Struct.HeapBlock();
335 myHeapBlock.DataBlockSize = BitConverter.ToInt32(br_read(4), 0); 335 myHeapBlock.DataBlockSize = BitConverter.ToInt32(br_read(4), 0);
336 myHeapBlock.ObjectType = br_read(1)[0]; 336 myHeapBlock.ObjectType = br_read(1)[0];
337 myHeapBlock.ReferenceCount = BitConverter.ToUInt16(br_read(2), 0); 337 myHeapBlock.ReferenceCount = BitConverter.ToUInt16(br_read(2), 0);
338 //myHeapBlock.Data = br_read(getObjectSize(myHeapBlock.ObjectType)); 338 //myHeapBlock.Data = br_read(getObjectSize(myHeapBlock.ObjectType));
339 // Don't read it reversed 339 // Don't read it reversed
340 myHeapBlock.Data = new byte[myHeapBlock.DataBlockSize - 1]; 340 myHeapBlock.Data = new byte[myHeapBlock.DataBlockSize - 1];
341 br.Read(myHeapBlock.Data, 0, myHeapBlock.DataBlockSize - 1); 341 br.Read(myHeapBlock.Data, 0, myHeapBlock.DataBlockSize - 1);
342 342
343 343
344 Common.SendToDebug("Heap Block Data Block Size: " + myHeapBlock.DataBlockSize); 344 Common.SendToDebug("Heap Block Data Block Size: " + myHeapBlock.DataBlockSize);
345 Common.SendToDebug("Heap Block ObjectType: " + ((LSO_Enums.Variable_Type_Codes)myHeapBlock.ObjectType).ToString()); 345 Common.SendToDebug("Heap Block ObjectType: " + ((LSO_Enums.Variable_Type_Codes)myHeapBlock.ObjectType).ToString());
346 Common.SendToDebug("Heap Block Reference Count: " + myHeapBlock.ReferenceCount); 346 Common.SendToDebug("Heap Block Reference Count: " + myHeapBlock.ReferenceCount);
347 347
348 return myHeapBlock; 348 return myHeapBlock;
349 } 349 }
350 private byte[] br_read(int len) 350 private byte[] br_read(int len)
351 { 351 {
352 if (len <= 0) 352 if (len <= 0)
353 return null; 353 return null;
354 354
355 try 355 try
356 { 356 {
357 byte[] bytes = new byte[len]; 357 byte[] bytes = new byte[len];
358 for (int i = len - 1; i > -1; i--) 358 for (int i = len - 1; i > -1; i--)
359 bytes[i] = br.ReadByte(); 359 bytes[i] = br.ReadByte();
360 return bytes; 360 return bytes;
361 } 361 }
362 catch (Exception e) 362 catch (Exception e)
363 { 363 {
364 Common.SendToDebug("Exception: " + e.ToString()); 364 Common.SendToDebug("Exception: " + e.ToString());
365 throw (e); 365 throw (e);
366 } 366 }
367 } 367 }
368 //private byte[] br_read_smallendian(int len) 368 //private byte[] br_read_smallendian(int len)
369 //{ 369 //{
370 // byte[] bytes = new byte[len]; 370 // byte[] bytes = new byte[len];
371 // br.Read(bytes,0, len); 371 // br.Read(bytes,0, len);
372 // return bytes; 372 // return bytes;
373 //} 373 //}
374 private Type getLLObjectType(byte objectCode) 374 private Type getLLObjectType(byte objectCode)
375 { 375 {
376 switch ((LSO_Enums.Variable_Type_Codes)objectCode) 376 switch ((LSO_Enums.Variable_Type_Codes)objectCode)
377 { 377 {
378 case LSO_Enums.Variable_Type_Codes.Void: return typeof(void); 378 case LSO_Enums.Variable_Type_Codes.Void: return typeof(void);
379 case LSO_Enums.Variable_Type_Codes.Integer: return typeof(UInt32); 379 case LSO_Enums.Variable_Type_Codes.Integer: return typeof(UInt32);
380 case LSO_Enums.Variable_Type_Codes.Float: return typeof(float); 380 case LSO_Enums.Variable_Type_Codes.Float: return typeof(float);
381 case LSO_Enums.Variable_Type_Codes.String: return typeof(string); 381 case LSO_Enums.Variable_Type_Codes.String: return typeof(string);
382 case LSO_Enums.Variable_Type_Codes.Key: return typeof(string); 382 case LSO_Enums.Variable_Type_Codes.Key: return typeof(string);
383 case LSO_Enums.Variable_Type_Codes.Vector: return typeof(LSO_Enums.Vector); 383 case LSO_Enums.Variable_Type_Codes.Vector: return typeof(LSO_Enums.Vector);
384 case LSO_Enums.Variable_Type_Codes.Rotation: return typeof(LSO_Enums.Rotation); 384 case LSO_Enums.Variable_Type_Codes.Rotation: return typeof(LSO_Enums.Rotation);
385 case LSO_Enums.Variable_Type_Codes.List: 385 case LSO_Enums.Variable_Type_Codes.List:
386 Common.SendToDebug("TODO: List datatype not implemented yet!"); 386 Common.SendToDebug("TODO: List datatype not implemented yet!");
387 return typeof(System.Collections.ArrayList); 387 return typeof(System.Collections.ArrayList);
388 case LSO_Enums.Variable_Type_Codes.Null: 388 case LSO_Enums.Variable_Type_Codes.Null:
389 Common.SendToDebug("TODO: Datatype null is not implemented, using string instead.!"); 389 Common.SendToDebug("TODO: Datatype null is not implemented, using string instead.!");
390 return typeof(string); 390 return typeof(string);
391 default: 391 default:
392 Common.SendToDebug("Lookup of LSL datatype " + objectCode + " to .Net datatype failed: Unknown LSL datatype. Defaulting to object."); 392 Common.SendToDebug("Lookup of LSL datatype " + objectCode + " to .Net datatype failed: Unknown LSL datatype. Defaulting to object.");
393 return typeof(object); 393 return typeof(object);
394 } 394 }
395 } 395 }
396 private int getObjectSize(byte ObjectType) 396 private int getObjectSize(byte ObjectType)
397 { 397 {
398 switch ((LSO_Enums.Variable_Type_Codes)ObjectType) 398 switch ((LSO_Enums.Variable_Type_Codes)ObjectType)
399 { 399 {
400 case LSO_Enums.Variable_Type_Codes.Integer: 400 case LSO_Enums.Variable_Type_Codes.Integer:
401 case LSO_Enums.Variable_Type_Codes.Float: 401 case LSO_Enums.Variable_Type_Codes.Float:
402 case LSO_Enums.Variable_Type_Codes.String: 402 case LSO_Enums.Variable_Type_Codes.String:
403 case LSO_Enums.Variable_Type_Codes.Key: 403 case LSO_Enums.Variable_Type_Codes.Key:
404 case LSO_Enums.Variable_Type_Codes.List: 404 case LSO_Enums.Variable_Type_Codes.List:
405 return 4; 405 return 4;
406 case LSO_Enums.Variable_Type_Codes.Vector: 406 case LSO_Enums.Variable_Type_Codes.Vector:
407 return 12; 407 return 12;
408 case LSO_Enums.Variable_Type_Codes.Rotation: 408 case LSO_Enums.Variable_Type_Codes.Rotation:
409 return 16; 409 return 16;
410 default: 410 default:
411 return 0; 411 return 0;
412 } 412 }
413 } 413 }
414 private string Read_String() 414 private string Read_String()
415 { 415 {
416 string ret = ""; 416 string ret = "";
417 byte reader = br_read(1)[0]; 417 byte reader = br_read(1)[0];
418 while (reader != 0x000) 418 while (reader != 0x000)
419 { 419 {
420 ret += (char)reader; 420 ret += (char)reader;
421 reader = br_read(1)[0]; 421 reader = br_read(1)[0];
422 } 422 }
423 return ret; 423 return ret;
424 } 424 }
425 425
426 /// <summary> 426 /// <summary>
427 /// Reads a code chunk and creates IL 427 /// Reads a code chunk and creates IL
428 /// </summary> 428 /// </summary>
429 /// <param name="pos">Absolute position in file. REMEMBER TO ADD myHeader.GFR!</param> 429 /// <param name="pos">Absolute position in file. REMEMBER TO ADD myHeader.GFR!</param>
430 /// <param name="typeBuilder">TypeBuilder for assembly</param> 430 /// <param name="typeBuilder">TypeBuilder for assembly</param>
431 /// <param name="eventname">Name of event (function) to generate</param> 431 /// <param name="eventname">Name of event (function) to generate</param>
432 private void ProcessCodeChunk(UInt32 pos, TypeBuilder typeBuilder, string eventname) 432 private void ProcessCodeChunk(UInt32 pos, TypeBuilder typeBuilder, string eventname)
433 { 433 {
434 434
435 LSO_Struct.CodeChunk myCodeChunk = new LSO_Struct.CodeChunk(); 435 LSO_Struct.CodeChunk myCodeChunk = new LSO_Struct.CodeChunk();
436 436
437 Common.SendToDebug("Reading Function Code Chunk at: " + pos); 437 Common.SendToDebug("Reading Function Code Chunk at: " + pos);
438 fs.Seek(pos, SeekOrigin.Begin); 438 fs.Seek(pos, SeekOrigin.Begin);
439 myCodeChunk.CodeChunkHeaderSize = BitConverter.ToUInt32(br_read(4), 0); 439 myCodeChunk.CodeChunkHeaderSize = BitConverter.ToUInt32(br_read(4), 0);
440 Common.SendToDebug("CodeChunk Header Size: " + myCodeChunk.CodeChunkHeaderSize); 440 Common.SendToDebug("CodeChunk Header Size: " + myCodeChunk.CodeChunkHeaderSize);
441 // Read until null 441 // Read until null
442 myCodeChunk.Comment = Read_String(); 442 myCodeChunk.Comment = Read_String();
443 Common.SendToDebug("Function comment: " + myCodeChunk.Comment); 443 Common.SendToDebug("Function comment: " + myCodeChunk.Comment);
444 myCodeChunk.ReturnTypePos = br_read(1)[0]; 444 myCodeChunk.ReturnTypePos = br_read(1)[0];
445 myCodeChunk.ReturnType = GetStaticBlock((long)myCodeChunk.ReturnTypePos + (long)myHeader.GVR); 445 myCodeChunk.ReturnType = GetStaticBlock((long)myCodeChunk.ReturnTypePos + (long)myHeader.GVR);
446 Common.SendToDebug("Return type #" + myCodeChunk.ReturnType.ObjectType + ": " + ((LSO_Enums.Variable_Type_Codes)myCodeChunk.ReturnType.ObjectType).ToString()); 446 Common.SendToDebug("Return type #" + myCodeChunk.ReturnType.ObjectType + ": " + ((LSO_Enums.Variable_Type_Codes)myCodeChunk.ReturnType.ObjectType).ToString());
447 447
448 448
449 // TODO: How to determine number of codechunks -- does this method work? 449 // TODO: How to determine number of codechunks -- does this method work?
450 myCodeChunk.CodeChunkArguments = new System.Collections.Generic.List<LSO_Struct.CodeChunkArgument>(); 450 myCodeChunk.CodeChunkArguments = new System.Collections.Generic.List<LSO_Struct.CodeChunkArgument>();
451 byte reader = br_read(1)[0]; 451 byte reader = br_read(1)[0];
452 reader = br_read(1)[0]; 452 reader = br_read(1)[0];
453 453
454 // NOTE ON CODE CHUNK ARGUMENTS 454 // NOTE ON CODE CHUNK ARGUMENTS
455 // This determins type definition 455 // This determins type definition
456 int ccount = 0; 456 int ccount = 0;
457 while (reader != 0x000) 457 while (reader != 0x000)
458 { 458 {
459 ccount++; 459 ccount++;
460 Common.SendToDebug("Reading Code Chunk Argument " + ccount); 460 Common.SendToDebug("Reading Code Chunk Argument " + ccount);
461 LSO_Struct.CodeChunkArgument CCA = new LSO_Struct.CodeChunkArgument(); 461 LSO_Struct.CodeChunkArgument CCA = new LSO_Struct.CodeChunkArgument();
462 CCA.FunctionReturnTypePos = reader; 462 CCA.FunctionReturnTypePos = reader;
463 reader = br_read(1)[0]; 463 reader = br_read(1)[0];
464 CCA.NullString = reader; 464 CCA.NullString = reader;
465 CCA.FunctionReturnType = GetStaticBlock(CCA.FunctionReturnTypePos + myHeader.GVR); 465 CCA.FunctionReturnType = GetStaticBlock(CCA.FunctionReturnTypePos + myHeader.GVR);
466 myCodeChunk.CodeChunkArguments.Add(CCA); 466 myCodeChunk.CodeChunkArguments.Add(CCA);
467 Common.SendToDebug("Code Chunk Argument " + ccount + " type #" + CCA.FunctionReturnType.ObjectType + ": " + (LSO_Enums.Variable_Type_Codes)CCA.FunctionReturnType.ObjectType); 467 Common.SendToDebug("Code Chunk Argument " + ccount + " type #" + CCA.FunctionReturnType.ObjectType + ": " + (LSO_Enums.Variable_Type_Codes)CCA.FunctionReturnType.ObjectType);
468 } 468 }
469 // Create string array 469 // Create string array
470 Type[] MethodArgs = new Type[myCodeChunk.CodeChunkArguments.Count]; 470 Type[] MethodArgs = new Type[myCodeChunk.CodeChunkArguments.Count];
471 for (int _ic = 0; _ic < myCodeChunk.CodeChunkArguments.Count; _ic++) 471 for (int _ic = 0; _ic < myCodeChunk.CodeChunkArguments.Count; _ic++)
472 { 472 {
473 MethodArgs[_ic] = getLLObjectType(myCodeChunk.CodeChunkArguments[_ic].FunctionReturnType.ObjectType); 473 MethodArgs[_ic] = getLLObjectType(myCodeChunk.CodeChunkArguments[_ic].FunctionReturnType.ObjectType);
474 Common.SendToDebug("Method argument " + _ic + ": " + getLLObjectType(myCodeChunk.CodeChunkArguments[_ic].FunctionReturnType.ObjectType).ToString()); 474 Common.SendToDebug("Method argument " + _ic + ": " + getLLObjectType(myCodeChunk.CodeChunkArguments[_ic].FunctionReturnType.ObjectType).ToString());
475 } 475 }
476 // End marker is 0x000 476 // End marker is 0x000
477 myCodeChunk.EndMarker = reader; 477 myCodeChunk.EndMarker = reader;
478 478
479 479
480 // 480 //
481 // Emit: START OF METHOD (FUNCTION) 481 // Emit: START OF METHOD (FUNCTION)
482 // 482 //
483 483
484 Common.SendToDebug("CLR:" + eventname + ":MethodBuilder methodBuilder = typeBuilder.DefineMethod..."); 484 Common.SendToDebug("CLR:" + eventname + ":MethodBuilder methodBuilder = typeBuilder.DefineMethod...");
485 MethodBuilder methodBuilder = typeBuilder.DefineMethod(eventname, 485 MethodBuilder methodBuilder = typeBuilder.DefineMethod(eventname,
486 MethodAttributes.Public, 486 MethodAttributes.Public,
487 typeof(void), 487 typeof(void),
488 new Type[] { typeof(object) }); 488 new Type[] { typeof(object) });
489 //MethodArgs); 489 //MethodArgs);
490 //typeof(void), //getLLObjectType(myCodeChunk.ReturnType), 490 //typeof(void), //getLLObjectType(myCodeChunk.ReturnType),
491 // new Type[] { typeof(object) }, //); 491 // new Type[] { typeof(object) }, //);
492 492
493 //Common.SendToDebug("CLR:" + eventname + ":typeBuilder.DefineMethodOverride(methodBuilder..."); 493 //Common.SendToDebug("CLR:" + eventname + ":typeBuilder.DefineMethodOverride(methodBuilder...");
494 //typeBuilder.DefineMethodOverride(methodBuilder, 494 //typeBuilder.DefineMethodOverride(methodBuilder,
495 // typeof(LSL_CLRInterface.LSLScript).GetMethod(eventname)); 495 // typeof(LSL_CLRInterface.LSLScript).GetMethod(eventname));
496 496
497 // Create the IL generator 497 // Create the IL generator
498 498
499 Common.SendToDebug("CLR:" + eventname + ":ILGenerator il = methodBuilder.GetILGenerator();"); 499 Common.SendToDebug("CLR:" + eventname + ":ILGenerator il = methodBuilder.GetILGenerator();");
500 ILGenerator il = methodBuilder.GetILGenerator(); 500 ILGenerator il = methodBuilder.GetILGenerator();
501 501
502 502
503 if (Common.IL_UseTryCatch) 503 if (Common.IL_UseTryCatch)
504 IL_INSERT_TRY(il, eventname); 504 IL_INSERT_TRY(il, eventname);
505 505
506 506
507 507
508 // Push Console.WriteLine command to stack ... Console.WriteLine("Hello World!"); 508 // Push Console.WriteLine command to stack ... Console.WriteLine("Hello World!");
509 //Common.SendToDebug("CLR:" + eventname + ":il.Emit(OpCodes.Call..."); 509 //Common.SendToDebug("CLR:" + eventname + ":il.Emit(OpCodes.Call...");
510 //il.Emit(OpCodes.Call, typeof(Console).GetMethod 510 //il.Emit(OpCodes.Call, typeof(Console).GetMethod
511 // ("WriteLine", new Type[] { typeof(string) })); 511 // ("WriteLine", new Type[] { typeof(string) }));
512 512
513 //Common.SendToDebug("STARTUP: il.Emit(OpCodes.Ldc_I4_S, 0);"); 513 //Common.SendToDebug("STARTUP: il.Emit(OpCodes.Ldc_I4_S, 0);");
514 514
515 //il.Emit(OpCodes.Ldc_I4_S, 0); 515 //il.Emit(OpCodes.Ldc_I4_S, 0);
516 for (int _ic = 0; _ic < myCodeChunk.CodeChunkArguments.Count; _ic++) 516 for (int _ic = 0; _ic < myCodeChunk.CodeChunkArguments.Count; _ic++)
517 { 517 {
518 Common.SendToDebug("PARAMS: il.Emit(OpCodes.Ldarg, " + _ic + ");"); 518 Common.SendToDebug("PARAMS: il.Emit(OpCodes.Ldarg, " + _ic + ");");
519 il.Emit(OpCodes.Ldarg, _ic); 519 il.Emit(OpCodes.Ldarg, _ic);
520 } 520 }
521 521
522 522
523 523
524 // 524 //
525 // CALLING OPCODE PROCESSOR, one command at the time TO GENERATE IL 525 // CALLING OPCODE PROCESSOR, one command at the time TO GENERATE IL
526 // 526 //
527 bool FoundRet = false; 527 bool FoundRet = false;
528 while (FoundRet == false) 528 while (FoundRet == false)
529 { 529 {
530 FoundRet = LSL_PROCESS_OPCODE(il); 530 FoundRet = LSL_PROCESS_OPCODE(il);
531 } 531 }
532 532
533 533
534 if (Common.IL_UseTryCatch) 534 if (Common.IL_UseTryCatch)
535 IL_INSERT_END_TRY(il, eventname); 535 IL_INSERT_END_TRY(il, eventname);
536 536
537 // Emit: RETURN FROM METHOD 537 // Emit: RETURN FROM METHOD
538 il.Emit(OpCodes.Ret); 538 il.Emit(OpCodes.Ret);
539 539
540 return; 540 return;
541 541
542 } 542 }
543 543
544 private void IL_INSERT_FUNCTIONLIST() 544 private void IL_INSERT_FUNCTIONLIST()
545 { 545 {
546 546
547 Common.SendToDebug("Creating function list"); 547 Common.SendToDebug("Creating function list");
548 548
549 549
550 string eventname = "GetFunctions"; 550 string eventname = "GetFunctions";
551 551
552 Common.SendToDebug("Creating IL " + eventname); 552 Common.SendToDebug("Creating IL " + eventname);
553 // Define a private String field. 553 // Define a private String field.
554 //FieldBuilder myField = myTypeBuilder.DefineField("EventList", typeof(String[]), FieldAttributes.Public); 554 //FieldBuilder myField = myTypeBuilder.DefineField("EventList", typeof(String[]), FieldAttributes.Public);
555 555
556 556
557 //FieldBuilder mem = typeBuilder.DefineField("mem", typeof(Array), FieldAttributes.Private); 557 //FieldBuilder mem = typeBuilder.DefineField("mem", typeof(Array), FieldAttributes.Private);
558 558
559 559
560 560
561 MethodBuilder methodBuilder = typeBuilder.DefineMethod(eventname, 561 MethodBuilder methodBuilder = typeBuilder.DefineMethod(eventname,
562 MethodAttributes.Public, 562 MethodAttributes.Public,
563 typeof(string[]), 563 typeof(string[]),
564 null); 564 null);
565 565
566 //typeBuilder.DefineMethodOverride(methodBuilder, 566 //typeBuilder.DefineMethodOverride(methodBuilder,
567 // typeof(LSL_CLRInterface.LSLScript).GetMethod(eventname)); 567 // typeof(LSL_CLRInterface.LSLScript).GetMethod(eventname));
568 568
569 ILGenerator il = methodBuilder.GetILGenerator(); 569 ILGenerator il = methodBuilder.GetILGenerator();
570 570
571 571
572 572
573 573
574 // IL_INSERT_TRY(il, eventname); 574 // IL_INSERT_TRY(il, eventname);
575 575
576 // // Push string to stack 576 // // Push string to stack
577 // il.Emit(OpCodes.Ldstr, "Inside " + eventname); 577 // il.Emit(OpCodes.Ldstr, "Inside " + eventname);
578 578
579 //// Push Console.WriteLine command to stack ... Console.WriteLine("Hello World!"); 579 //// Push Console.WriteLine command to stack ... Console.WriteLine("Hello World!");
580 //il.Emit(OpCodes.Call, typeof(Console).GetMethod 580 //il.Emit(OpCodes.Call, typeof(Console).GetMethod
581 // ("WriteLine", new Type[] { typeof(string) })); 581 // ("WriteLine", new Type[] { typeof(string) }));
582 582
583 //initIL.Emit(OpCodes.Newobj, typeof(string[])); 583 //initIL.Emit(OpCodes.Newobj, typeof(string[]));
584 584
585 //string[] MyArray = new string[2] { "TestItem1" , "TestItem2" }; 585 //string[] MyArray = new string[2] { "TestItem1" , "TestItem2" };
586 586
587 ////il.Emit(OpCodes.Ldarg_0); 587 ////il.Emit(OpCodes.Ldarg_0);
588 588
589 il.DeclareLocal(typeof(string[])); 589 il.DeclareLocal(typeof(string[]));
590 590
591 ////il.Emit(OpCodes.Ldarg_0); 591 ////il.Emit(OpCodes.Ldarg_0);
592 il.Emit(OpCodes.Ldc_I4, EventList.Count); // Specify array length 592 il.Emit(OpCodes.Ldc_I4, EventList.Count); // Specify array length
593 il.Emit(OpCodes.Newarr, typeof(String)); // create new string array 593 il.Emit(OpCodes.Newarr, typeof(String)); // create new string array
594 il.Emit(OpCodes.Stloc_0); // Store array as local variable 0 in stack 594 il.Emit(OpCodes.Stloc_0); // Store array as local variable 0 in stack
595 ////SetFunctionList 595 ////SetFunctionList
596 596
597 for (int lv = 0; lv < EventList.Count; lv++) 597 for (int lv = 0; lv < EventList.Count; lv++)
598 { 598 {
599 il.Emit(OpCodes.Ldloc_0); // Load local variable 0 onto stack 599 il.Emit(OpCodes.Ldloc_0); // Load local variable 0 onto stack
600 il.Emit(OpCodes.Ldc_I4, lv); // Push index position 600 il.Emit(OpCodes.Ldc_I4, lv); // Push index position
601 il.Emit(OpCodes.Ldstr, EventList[lv]); // Push value 601 il.Emit(OpCodes.Ldstr, EventList[lv]); // Push value
602 il.Emit(OpCodes.Stelem_Ref); // Perform array[index] = value 602 il.Emit(OpCodes.Stelem_Ref); // Perform array[index] = value
603 603
604 //il.Emit(OpCodes.Ldarg_0); 604 //il.Emit(OpCodes.Ldarg_0);
605 //il.Emit(OpCodes.Ldstr, EventList[lv]); // Push value 605 //il.Emit(OpCodes.Ldstr, EventList[lv]); // Push value
606 //il.Emit(OpCodes.Call, typeof(LSL_BaseClass).GetMethod("AddFunction", new Type[] { typeof(string) })); 606 //il.Emit(OpCodes.Call, typeof(LSL_BaseClass).GetMethod("AddFunction", new Type[] { typeof(string) }));
607 607
608 } 608 }
609 609
610 610
611 611
612 // IL_INSERT_END_TRY(il, eventname); 612 // IL_INSERT_END_TRY(il, eventname);
613 613
614 614
615 il.Emit(OpCodes.Ldloc_0); // Load local variable 0 onto stack 615 il.Emit(OpCodes.Ldloc_0); // Load local variable 0 onto stack
616 // il.Emit(OpCodes.Call, typeof(LSL_BaseClass).GetMethod("SetFunctionList", new Type[] { typeof(Array) })); 616 // il.Emit(OpCodes.Call, typeof(LSL_BaseClass).GetMethod("SetFunctionList", new Type[] { typeof(Array) }));
617 617
618 il.Emit(OpCodes.Ret); // Return 618 il.Emit(OpCodes.Ret); // Return
619 619
620 } 620 }
621 621
622 622
623 private void IL_INSERT_TRY(ILGenerator il, string eventname) 623 private void IL_INSERT_TRY(ILGenerator il, string eventname)
624 { 624 {
625 /* 625 /*
626 * CLR TRY 626 * CLR TRY
627 */ 627 */
628 //Common.SendToDebug("CLR:" + eventname + ":il.BeginExceptionBlock()"); 628 //Common.SendToDebug("CLR:" + eventname + ":il.BeginExceptionBlock()");
629 il.BeginExceptionBlock(); 629 il.BeginExceptionBlock();
630 630
631 // Push "Hello World!" string to stack 631 // Push "Hello World!" string to stack
632 //Common.SendToDebug("CLR:" + eventname + ":il.Emit(OpCodes.Ldstr..."); 632 //Common.SendToDebug("CLR:" + eventname + ":il.Emit(OpCodes.Ldstr...");
633 //il.Emit(OpCodes.Ldstr, "Starting CLR dynamic execution of: " + eventname); 633 //il.Emit(OpCodes.Ldstr, "Starting CLR dynamic execution of: " + eventname);
634 634
635 } 635 }
636 636
637 private void IL_INSERT_END_TRY(ILGenerator il, string eventname) 637 private void IL_INSERT_END_TRY(ILGenerator il, string eventname)
638 { 638 {
639 /* 639 /*
640 * CATCH 640 * CATCH
641 */ 641 */
642 Common.SendToDebug("CLR:" + eventname + ":il.BeginCatchBlock(typeof(Exception));"); 642 Common.SendToDebug("CLR:" + eventname + ":il.BeginCatchBlock(typeof(Exception));");
643 il.BeginCatchBlock(typeof(Exception)); 643 il.BeginCatchBlock(typeof(Exception));
644 644
645 // Push "Hello World!" string to stack 645 // Push "Hello World!" string to stack
646 Common.SendToDebug("CLR:" + eventname + ":il.Emit(OpCodes.Ldstr..."); 646 Common.SendToDebug("CLR:" + eventname + ":il.Emit(OpCodes.Ldstr...");
647 il.Emit(OpCodes.Ldstr, "Execption executing dynamic CLR function " + eventname + ": "); 647 il.Emit(OpCodes.Ldstr, "Execption executing dynamic CLR function " + eventname + ": ");
648 648
649 //call void [mscorlib]System.Console::WriteLine(string) 649 //call void [mscorlib]System.Console::WriteLine(string)
650 Common.SendToDebug("CLR:" + eventname + ":il.Emit(OpCodes.Call..."); 650 Common.SendToDebug("CLR:" + eventname + ":il.Emit(OpCodes.Call...");
651 il.Emit(OpCodes.Call, typeof(Console).GetMethod 651 il.Emit(OpCodes.Call, typeof(Console).GetMethod
652 ("Write", new Type[] { typeof(string) })); 652 ("Write", new Type[] { typeof(string) }));
653 653
654 //callvirt instance string [mscorlib]System.Exception::get_Message() 654 //callvirt instance string [mscorlib]System.Exception::get_Message()
655 Common.SendToDebug("CLR:" + eventname + ":il.Emit(OpCodes.Callvirt..."); 655 Common.SendToDebug("CLR:" + eventname + ":il.Emit(OpCodes.Callvirt...");
656 il.Emit(OpCodes.Callvirt, typeof(Exception).GetMethod 656 il.Emit(OpCodes.Callvirt, typeof(Exception).GetMethod
657 ("get_Message")); 657 ("get_Message"));
658 658
659 //call void [mscorlib]System.Console::WriteLine(string) 659 //call void [mscorlib]System.Console::WriteLine(string)
660 Common.SendToDebug("CLR:" + eventname + ":il.Emit(OpCodes.Call..."); 660 Common.SendToDebug("CLR:" + eventname + ":il.Emit(OpCodes.Call...");
661 il.Emit(OpCodes.Call, typeof(Console).GetMethod 661 il.Emit(OpCodes.Call, typeof(Console).GetMethod
662 ("WriteLine", new Type[] { typeof(string) })); 662 ("WriteLine", new Type[] { typeof(string) }));
663 663
664 /* 664 /*
665 * CLR END TRY 665 * CLR END TRY
666 */ 666 */
667 //Common.SendToDebug("CLR:" + eventname + ":il.EndExceptionBlock();"); 667 //Common.SendToDebug("CLR:" + eventname + ":il.EndExceptionBlock();");
668 il.EndExceptionBlock(); 668 il.EndExceptionBlock();
669 } 669 }
670 670
671 private LSO_Struct.StaticBlock GetStaticBlock(long pos) 671 private LSO_Struct.StaticBlock GetStaticBlock(long pos)
672 { 672 {
673 long FirstPos = fs.Position; 673 long FirstPos = fs.Position;
674 try 674 try
675 { 675 {
676 UInt32 position = (UInt32)pos; 676 UInt32 position = (UInt32)pos;
677 // STATIC BLOCK 677 // STATIC BLOCK
678 Common.SendToDebug("Reading STATIC BLOCK at: " + position); 678 Common.SendToDebug("Reading STATIC BLOCK at: " + position);
679 fs.Seek(position, SeekOrigin.Begin); 679 fs.Seek(position, SeekOrigin.Begin);
680 680
681 if (StaticBlocks.ContainsKey(position) == true) 681 if (StaticBlocks.ContainsKey(position) == true)
682 { 682 {
683 Common.SendToDebug("Found cached STATIC BLOCK"); 683 Common.SendToDebug("Found cached STATIC BLOCK");
684 684
685 685
686 686
687 return StaticBlocks[pos]; 687 return StaticBlocks[pos];
688 } 688 }
689 689
690 //int StaticBlockCount = 0; 690 //int StaticBlockCount = 0;
691 // Read function blocks until we hit GFR 691 // Read function blocks until we hit GFR
692 //while (fs.Position < myHeader.GFR) 692 //while (fs.Position < myHeader.GFR)
693 //{ 693 //{
694 //StaticBlockCount++; 694 //StaticBlockCount++;
695 695
696 //Common.SendToDebug("Reading Static Block at: " + position); 696 //Common.SendToDebug("Reading Static Block at: " + position);
697 697
698 //fs.Seek(myHeader.GVR, SeekOrigin.Begin); 698 //fs.Seek(myHeader.GVR, SeekOrigin.Begin);
699 LSO_Struct.StaticBlock myStaticBlock = new LSO_Struct.StaticBlock(); 699 LSO_Struct.StaticBlock myStaticBlock = new LSO_Struct.StaticBlock();
700 myStaticBlock.Static_Chunk_Header_Size = BitConverter.ToUInt32(br_read(4), 0); 700 myStaticBlock.Static_Chunk_Header_Size = BitConverter.ToUInt32(br_read(4), 0);
701 myStaticBlock.ObjectType = br_read(1)[0]; 701 myStaticBlock.ObjectType = br_read(1)[0];
702 Common.SendToDebug("Static Block ObjectType: " + ((LSO_Enums.Variable_Type_Codes)myStaticBlock.ObjectType).ToString()); 702 Common.SendToDebug("Static Block ObjectType: " + ((LSO_Enums.Variable_Type_Codes)myStaticBlock.ObjectType).ToString());
703 myStaticBlock.Unknown = br_read(1)[0]; 703 myStaticBlock.Unknown = br_read(1)[0];
704 // Size of datatype varies 704 // Size of datatype varies
705 if (myStaticBlock.ObjectType != 0) 705 if (myStaticBlock.ObjectType != 0)
706 myStaticBlock.BlockVariable = br_read(getObjectSize(myStaticBlock.ObjectType)); 706 myStaticBlock.BlockVariable = br_read(getObjectSize(myStaticBlock.ObjectType));
707 707
708 StaticBlocks.Add(position, myStaticBlock); 708 StaticBlocks.Add(position, myStaticBlock);
709 //} 709 //}
710 Common.SendToDebug("Done reading Static Block."); 710 Common.SendToDebug("Done reading Static Block.");
711 return myStaticBlock; 711 return myStaticBlock;
712 } 712 }
713 finally 713 finally
714 { 714 {
715 // Go back to original read pos 715 // Go back to original read pos
716 fs.Seek(FirstPos, SeekOrigin.Begin); 716 fs.Seek(FirstPos, SeekOrigin.Begin);
717 } 717 }
718 718
719 } 719 }
720 720
721 } 721 }
722} 722}
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSO_Struct.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSO_Struct.cs
index 53d1318..baeda38 100644
--- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSO_Struct.cs
+++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSO_Struct.cs
@@ -1,135 +1,135 @@
1/* 1/*
2* Copyright (c) Contributors, http://opensimulator.org/ 2* Copyright (c) Contributors, http://opensimulator.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders. 3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4* 4*
5* Redistribution and use in source and binary forms, with or without 5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met: 6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright 7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer. 8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright 9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the 10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution. 11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the 12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products 13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission. 14* derived from this software without specific prior written permission.
15* 15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY 16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY 19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26* 26*
27*/ 27*/
28/* Original code: Tedd Hansen */ 28/* Original code: Tedd Hansen */
29 29
30using System; 30using System;
31using System.Collections.Generic; 31using System.Collections.Generic;
32using System.Text; 32using System.Text;
33 33
34namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO 34namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO
35{ 35{
36 static class LSO_Struct 36 static class LSO_Struct
37 { 37 {
38 38
39 public struct Header 39 public struct Header
40 { 40 {
41 public UInt32 TM; 41 public UInt32 TM;
42 public UInt32 IP; 42 public UInt32 IP;
43 public UInt32 VN; 43 public UInt32 VN;
44 public UInt32 BP; 44 public UInt32 BP;
45 public UInt32 SP; 45 public UInt32 SP;
46 public UInt32 HR; 46 public UInt32 HR;
47 public UInt32 HP; 47 public UInt32 HP;
48 public UInt32 CS; 48 public UInt32 CS;
49 public UInt32 NS; 49 public UInt32 NS;
50 public UInt32 CE; 50 public UInt32 CE;
51 public UInt32 IE; 51 public UInt32 IE;
52 public UInt32 ER; 52 public UInt32 ER;
53 public UInt32 FR; 53 public UInt32 FR;
54 public UInt32 SLR; 54 public UInt32 SLR;
55 public UInt32 GVR; 55 public UInt32 GVR;
56 public UInt32 GFR; 56 public UInt32 GFR;
57 public UInt32 PR; 57 public UInt32 PR;
58 public UInt32 ESR; 58 public UInt32 ESR;
59 public UInt32 SR; 59 public UInt32 SR;
60 public UInt64 NCE; 60 public UInt64 NCE;
61 public UInt64 NIE; 61 public UInt64 NIE;
62 public UInt64 NER; 62 public UInt64 NER;
63 } 63 }
64 64
65 public struct StaticBlock 65 public struct StaticBlock
66 { 66 {
67 public UInt32 Static_Chunk_Header_Size; 67 public UInt32 Static_Chunk_Header_Size;
68 public byte ObjectType; 68 public byte ObjectType;
69 public byte Unknown; 69 public byte Unknown;
70 public byte[] BlockVariable; 70 public byte[] BlockVariable;
71 } 71 }
72 /* Not actually a structure 72 /* Not actually a structure
73 public struct StaticBlockVariable 73 public struct StaticBlockVariable
74 { 74 {
75 public UInt32 Integer1; 75 public UInt32 Integer1;
76 public UInt32 Float1; 76 public UInt32 Float1;
77 public UInt32 HeapPointer_String; 77 public UInt32 HeapPointer_String;
78 public UInt32 HeapPointer_Key; 78 public UInt32 HeapPointer_Key;
79 public byte[] Vector_12; 79 public byte[] Vector_12;
80 public byte[] Rotation_16; 80 public byte[] Rotation_16;
81 public UInt32 Pointer_List_Structure; 81 public UInt32 Pointer_List_Structure;
82 } */ 82 } */
83 public struct HeapBlock 83 public struct HeapBlock
84 { 84 {
85 public Int32 DataBlockSize; 85 public Int32 DataBlockSize;
86 public byte ObjectType; 86 public byte ObjectType;
87 public UInt16 ReferenceCount; 87 public UInt16 ReferenceCount;
88 public byte[] Data; 88 public byte[] Data;
89 } 89 }
90 public struct StateFrameBlock 90 public struct StateFrameBlock
91 { 91 {
92 public UInt32 StateCount; 92 public UInt32 StateCount;
93 public StatePointerBlock[] StatePointer; 93 public StatePointerBlock[] StatePointer;
94 } 94 }
95 public struct StatePointerBlock 95 public struct StatePointerBlock
96 { 96 {
97 public UInt32 Location; 97 public UInt32 Location;
98 public System.Collections.BitArray EventMask; 98 public System.Collections.BitArray EventMask;
99 public StateBlock StateBlock; 99 public StateBlock StateBlock;
100 } 100 }
101 public struct StateBlock 101 public struct StateBlock
102 { 102 {
103 public UInt32 StartPos; 103 public UInt32 StartPos;
104 public UInt32 EndPos; 104 public UInt32 EndPos;
105 public UInt32 HeaderSize; 105 public UInt32 HeaderSize;
106 public byte Unknown; 106 public byte Unknown;
107 public StateBlockHandler[] StateBlockHandlers; 107 public StateBlockHandler[] StateBlockHandlers;
108 } 108 }
109 public struct StateBlockHandler 109 public struct StateBlockHandler
110 { 110 {
111 public UInt32 CodeChunkPointer; 111 public UInt32 CodeChunkPointer;
112 public UInt32 CallFrameSize; 112 public UInt32 CallFrameSize;
113 } 113 }
114 public struct FunctionBlock 114 public struct FunctionBlock
115 { 115 {
116 public UInt32 FunctionCount; 116 public UInt32 FunctionCount;
117 public UInt32[] CodeChunkPointer; 117 public UInt32[] CodeChunkPointer;
118 } 118 }
119 public struct CodeChunk 119 public struct CodeChunk
120 { 120 {
121 public UInt32 CodeChunkHeaderSize; 121 public UInt32 CodeChunkHeaderSize;
122 public string Comment; 122 public string Comment;
123 public System.Collections.Generic.List<CodeChunkArgument> CodeChunkArguments; 123 public System.Collections.Generic.List<CodeChunkArgument> CodeChunkArguments;
124 public byte EndMarker; 124 public byte EndMarker;
125 public byte ReturnTypePos; 125 public byte ReturnTypePos;
126 public StaticBlock ReturnType; 126 public StaticBlock ReturnType;
127 } 127 }
128 public struct CodeChunkArgument 128 public struct CodeChunkArgument
129 { 129 {
130 public byte FunctionReturnTypePos; 130 public byte FunctionReturnTypePos;
131 public byte NullString; 131 public byte NullString;
132 public StaticBlock FunctionReturnType; 132 public StaticBlock FunctionReturnType;
133 } 133 }
134 } 134 }
135} 135}