diff --git a/OpenSim/Region/ScriptEngine/Common/BuiltIn_Commands_BaseClass.cs b/OpenSim/Region/ScriptEngine/Common/BuiltIn_Commands_BaseClass.cs index 44011de8e2..7b0e75a91b 100644 --- a/OpenSim/Region/ScriptEngine/Common/BuiltIn_Commands_BaseClass.cs +++ b/OpenSim/Region/ScriptEngine/Common/BuiltIn_Commands_BaseClass.cs @@ -31,13 +31,13 @@ using System.Threading; using OpenSim.Region.Environment.Interfaces; using OpenSim.Region.ScriptEngine.Common.ScriptEngineBase; -using LSL_Float = OpenSim.Region.ScriptEngine.Common.LSL_Types.LSLFloat; -using LSL_Integer = OpenSim.Region.ScriptEngine.Common.LSL_Types.LSLInteger; -using LSL_Key = OpenSim.Region.ScriptEngine.Common.LSL_Types.LSLString; -using LSL_List = OpenSim.Region.ScriptEngine.Common.LSL_Types.list; -using LSL_Rotation = OpenSim.Region.ScriptEngine.Common.LSL_Types.Quaternion; -using LSL_String = OpenSim.Region.ScriptEngine.Common.LSL_Types.LSLString; -using LSL_Vector = OpenSim.Region.ScriptEngine.Common.LSL_Types.Vector3; +using LSL_Float = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLFloat; +using LSL_Integer = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLInteger; +using LSL_Key = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLString; +using LSL_List = OpenSim.Region.ScriptEngine.Shared.LSL_Types.list; +using LSL_Rotation = OpenSim.Region.ScriptEngine.Shared.LSL_Types.Quaternion; +using LSL_String = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLString; +using LSL_Vector = OpenSim.Region.ScriptEngine.Shared.LSL_Types.Vector3; namespace OpenSim.Region.ScriptEngine.Common { diff --git a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs index 1017fd8a33..bbf842625b 100644 --- a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs +++ b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs @@ -45,13 +45,13 @@ using OpenSim.Region.Environment.Scenes; using OpenSim.Region.Physics.Manager; using OpenSim.Region.ScriptEngine.Common.ScriptEngineBase; -using LSL_Float = OpenSim.Region.ScriptEngine.Common.LSL_Types.LSLFloat; -using LSL_Integer = OpenSim.Region.ScriptEngine.Common.LSL_Types.LSLInteger; -using LSL_Key = OpenSim.Region.ScriptEngine.Common.LSL_Types.LSLString; -using LSL_List = OpenSim.Region.ScriptEngine.Common.LSL_Types.list; -using LSL_Rotation = OpenSim.Region.ScriptEngine.Common.LSL_Types.Quaternion; -using LSL_String = OpenSim.Region.ScriptEngine.Common.LSL_Types.LSLString; -using LSL_Vector = OpenSim.Region.ScriptEngine.Common.LSL_Types.Vector3; +using LSL_Float = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLFloat; +using LSL_Integer = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLInteger; +using LSL_Key = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLString; +using LSL_List = OpenSim.Region.ScriptEngine.Shared.LSL_Types.list; +using LSL_Rotation = OpenSim.Region.ScriptEngine.Shared.LSL_Types.Quaternion; +using LSL_String = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLString; +using LSL_Vector = OpenSim.Region.ScriptEngine.Shared.LSL_Types.Vector3; namespace OpenSim.Region.ScriptEngine.Common { diff --git a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands_Interface.cs b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands_Interface.cs index fa468bdb88..e05849dc0f 100644 --- a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands_Interface.cs +++ b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands_Interface.cs @@ -27,13 +27,13 @@ using OpenSim.Region.Environment.Interfaces; -using LSL_Float = OpenSim.Region.ScriptEngine.Common.LSL_Types.LSLFloat; -using LSL_Integer = OpenSim.Region.ScriptEngine.Common.LSL_Types.LSLInteger; -using LSL_Key = OpenSim.Region.ScriptEngine.Common.LSL_Types.LSLString; -using LSL_List = OpenSim.Region.ScriptEngine.Common.LSL_Types.list; -using LSL_Rotation = OpenSim.Region.ScriptEngine.Common.LSL_Types.Quaternion; -using LSL_String = OpenSim.Region.ScriptEngine.Common.LSL_Types.LSLString; -using LSL_Vector = OpenSim.Region.ScriptEngine.Common.LSL_Types.Vector3; +using LSL_Float = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLFloat; +using LSL_Integer = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLInteger; +using LSL_Key = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLString; +using LSL_List = OpenSim.Region.ScriptEngine.Shared.LSL_Types.list; +using LSL_Rotation = OpenSim.Region.ScriptEngine.Shared.LSL_Types.Quaternion; +using LSL_String = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLString; +using LSL_Vector = OpenSim.Region.ScriptEngine.Shared.LSL_Types.Vector3; namespace OpenSim.Region.ScriptEngine.Common { diff --git a/OpenSim/Region/ScriptEngine/Common/LSL_Types.cs b/OpenSim/Region/ScriptEngine/Common/LSL_Types.cs deleted file mode 100644 index 21646eaba4..0000000000 --- a/OpenSim/Region/ScriptEngine/Common/LSL_Types.cs +++ /dev/null @@ -1,1834 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSim Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using System.Collections; -using System.Text.RegularExpressions; - -namespace OpenSim.Region.ScriptEngine.Common -{ - [Serializable] - public partial class LSL_Types - { - // Types are kept is separate .dll to avoid having to add whatever .dll it is in it to script AppDomain - - [Serializable] - public struct Vector3 - { - public double x; - public double y; - public double z; - - #region Constructors - - public Vector3(Vector3 vector) - { - x = (float)vector.x; - y = (float)vector.y; - z = (float)vector.z; - } - - public Vector3(double X, double Y, double Z) - { - x = X; - y = Y; - z = Z; - } - - public Vector3(string str) - { - str = str.Replace('<', ' '); - str = str.Replace('>', ' '); - string[] tmps = str.Split(new Char[] { ',', '<', '>' }); - if (tmps.Length < 3) - { - x=y=z=0; - return; - } - bool res; - res = Double.TryParse(tmps[0], out x); - res = res & Double.TryParse(tmps[1], out y); - res = res & Double.TryParse(tmps[2], out z); - } - - #endregion - - #region Overriders - - public override string ToString() - { - string s=String.Format("<{0:0.000000},{1:0.000000},{2:0.000000}>", x, y, z); - return s; - } - - public static explicit operator LSLString(Vector3 vec) - { - string s=String.Format("<{0:0.000000},{1:0.000000},{2:0.000000}>", vec.x, vec.y, vec.z); - return new LSLString(s); - } - - public static explicit operator string(Vector3 vec) - { - string s=String.Format("<{0:0.000000},{1:0.000000},{2:0.000000}>", vec.x, vec.y, vec.z); - return s; - } - - public static explicit operator Vector3(string s) - { - return new Vector3(s); - } - - public static bool operator ==(Vector3 lhs, Vector3 rhs) - { - return (lhs.x == rhs.x && lhs.y == rhs.y && lhs.z == rhs.z); - } - - public static bool operator !=(Vector3 lhs, Vector3 rhs) - { - return !(lhs == rhs); - } - - public override int GetHashCode() - { - return (x.GetHashCode() ^ y.GetHashCode() ^ z.GetHashCode()); - } - - public override bool Equals(object o) - { - if (!(o is Vector3)) return false; - - Vector3 vector = (Vector3)o; - - return (x == vector.x && y == vector.y && z == vector.z); - } - - public static Vector3 operator -(Vector3 vector) - { - return new Vector3(-vector.x, -vector.y, -vector.z); - } - - #endregion - - #region Vector & Vector Math - - // Vector-Vector Math - public static Vector3 operator +(Vector3 lhs, Vector3 rhs) - { - return new Vector3(lhs.x + rhs.x, lhs.y + rhs.y, lhs.z + rhs.z); - } - - public static Vector3 operator -(Vector3 lhs, Vector3 rhs) - { - return new Vector3(lhs.x - rhs.x, lhs.y - rhs.y, lhs.z - rhs.z); - } - - public static LSLFloat operator *(Vector3 lhs, Vector3 rhs) - { - return Dot(lhs, rhs); - } - - public static Vector3 operator %(Vector3 v1, Vector3 v2) - { - //Cross product - Vector3 tv; - tv.x = (v1.y * v2.z) - (v1.z * v2.y); - tv.y = (v1.z * v2.x) - (v1.x * v2.z); - tv.z = (v1.x * v2.y) - (v1.y * v2.x); - return tv; - } - - #endregion - - #region Vector & Float Math - - // Vector-Float and Float-Vector Math - public static Vector3 operator *(Vector3 vec, float val) - { - return new Vector3(vec.x * val, vec.y * val, vec.z * val); - } - - public static Vector3 operator *(float val, Vector3 vec) - { - return new Vector3(vec.x * val, vec.y * val, vec.z * val); - } - - public static Vector3 operator /(Vector3 v, float f) - { - v.x = v.x / f; - v.y = v.y / f; - v.z = v.z / f; - return v; - } - - #endregion - - #region Vector & Double Math - - public static Vector3 operator *(Vector3 vec, double val) - { - return new Vector3(vec.x * val, vec.y * val, vec.z * val); - } - - public static Vector3 operator *(double val, Vector3 vec) - { - return new Vector3(vec.x * val, vec.y * val, vec.z * val); - } - - public static Vector3 operator /(Vector3 v, double f) - { - v.x = v.x / f; - v.y = v.y / f; - v.z = v.z / f; - return v; - } - - #endregion - - #region Vector & Rotation Math - - // Vector-Rotation Math - public static Vector3 operator *(Vector3 v, Quaternion r) - { - Quaternion vq = new Quaternion(v.x, v.y, v.z, 0); - Quaternion nq = new Quaternion(-r.x, -r.y, -r.z, r.s); - - // adapted for operator * computing "b * a" - Quaternion result = nq * (vq * r); - - return new Vector3(result.x, result.y, result.z); - } - - public static Vector3 operator /(Vector3 v, Quaternion r) - { - r.s = -r.s; - return v * r; - } - - #endregion - - #region Static Helper Functions - - public static double Dot(Vector3 v1, Vector3 v2) - { - return (v1.x * v2.x) + (v1.y * v2.y) + (v1.z * v2.z); - } - - public static Vector3 Cross(Vector3 v1, Vector3 v2) - { - return new Vector3 - ( - v1.y * v2.z - v1.z * v2.y, - v1.z * v2.x - v1.x * v2.z, - v1.x * v2.y - v1.y * v2.x - ); - } - - public static double Mag(Vector3 v) - { - return Math.Sqrt(v.x * v.x + v.y * v.y + v.z * v.z); - } - - public static Vector3 Norm(Vector3 vector) - { - double mag = Mag(vector); - return new Vector3(vector.x / mag, vector.y / mag, vector.z / mag); - } - - #endregion - } - - [Serializable] - public struct Quaternion - { - public double x; - public double y; - public double z; - public double s; - - #region Constructors - - public Quaternion(Quaternion Quat) - { - x = (float)Quat.x; - y = (float)Quat.y; - z = (float)Quat.z; - s = (float)Quat.s; - if (x == 0 && y == 0 && z == 0 && s == 0) - s = 1; - } - - public Quaternion(double X, double Y, double Z, double S) - { - x = X; - y = Y; - z = Z; - s = S; - if (x == 0 && y == 0 && z == 0 && s == 0) - s = 1; - } - - public Quaternion(string str) - { - str = str.Replace('<', ' '); - str = str.Replace('>', ' '); - string[] tmps = str.Split(new Char[] { ',', '<', '>' }); - if (tmps.Length < 4) - { - x=y=z=s=0; - return; - } - bool res; - res = Double.TryParse(tmps[0], out x); - res = res & Double.TryParse(tmps[1], out y); - res = res & Double.TryParse(tmps[2], out z); - res = res & Double.TryParse(tmps[3], out s); - if (x == 0 && y == 0 && z == 0 && s == 0) - s = 1; - } - - #endregion - - #region Overriders - - public override int GetHashCode() - { - return (x.GetHashCode() ^ y.GetHashCode() ^ z.GetHashCode() ^ s.GetHashCode()); - } - - public override bool Equals(object o) - { - if (!(o is Quaternion)) return false; - - Quaternion quaternion = (Quaternion)o; - - return x == quaternion.x && y == quaternion.y && z == quaternion.z && s == quaternion.s; - } - - public override string ToString() - { - string st=String.Format("<{0:0.000000},{1:0.000000},{2:0.000000},{3:0.000000}>", x, y, z, s); - return st; - } - - public static explicit operator string(Quaternion r) - { - string s=String.Format("<{0:0.000000},{1:0.000000},{2:0.000000},{3:0.000000}>", r.x, r.y, r.z, r.s); - return s; - } - - public static explicit operator LSLString(Quaternion r) - { - string s=String.Format("<{0:0.000000},{1:0.000000},{2:0.000000},{3:0.000000}>", r.x, r.y, r.z, r.s); - return new LSLString(s); - } - - public static explicit operator Quaternion(string s) - { - return new Quaternion(s); - } - - public static bool operator ==(Quaternion lhs, Quaternion rhs) - { - // Return true if the fields match: - return lhs.x == rhs.x && lhs.y == rhs.y && lhs.z == rhs.z && lhs.s == rhs.s; - } - - public static bool operator !=(Quaternion lhs, Quaternion rhs) - { - return !(lhs == rhs); - } - - #endregion - - public static Quaternion operator +(Quaternion a, Quaternion b) - { - return new Quaternion(a.x + b.x, a.y + b.y, a.z + b.z, a.s + b.s); - } - - public static Quaternion operator /(Quaternion a, Quaternion b) - { - b.s = -b.s; - return a * b; - } - - public static Quaternion operator -(Quaternion a, Quaternion b) - { - return new Quaternion(a.x - b.x, a.y - b.y, a.z - b.z, a.s - b.s); - } - - // using the equations below, we need to do "b * a" to be compatible with LSL - public static Quaternion operator *(Quaternion b, Quaternion a) - { - Quaternion c; - c.x = a.s * b.x + a.x * b.s + a.y * b.z - a.z * b.y; - c.y = a.s * b.y + a.y * b.s + a.z * b.x - a.x * b.z; - c.z = a.s * b.z + a.z * b.s + a.x * b.y - a.y * b.x; - c.s = a.s * b.s - a.x * b.x - a.y * b.y - a.z * b.z; - return c; - } - } - - [Serializable] - public class list - { - private object[] m_data; - - public list(params object[] args) - { - m_data = new object[args.Length]; - m_data = args; - } - - public int Length - { - get { - if (m_data == null) - m_data=new Object[0]; - return m_data.Length; - } - } - - public object[] Data - { - get { - if (m_data == null) - m_data=new Object[0]; - return m_data; - } - - set {m_data = value; } - } - - // Member functions to obtain item as specific types. - // For cases where implicit conversions would apply if items - // were not in a list (e.g. integer to float, but not float - // to integer) functions check for alternate types so as to - // down-cast from Object to the correct type. - // Note: no checks for item index being valid are performed - - public LSL_Types.LSLFloat GetLSLFloatItem( int itemIndex ) - { - if (m_data[itemIndex] is LSL_Types.LSLInteger) - { - return (LSL_Types.LSLInteger)m_data[itemIndex]; - } - else if (m_data[itemIndex] is Int32) - { - return new LSL_Types.LSLFloat((int)m_data[itemIndex]); - } - else if (m_data[itemIndex] is float) - { - return new LSL_Types.LSLFloat((float)m_data[itemIndex]); - } - else if (m_data[itemIndex] is Double) - { - return new LSL_Types.LSLFloat((Double)m_data[itemIndex]); - } - else - { - return (LSL_Types.LSLFloat)m_data[itemIndex]; - } - } - - public LSL_Types.LSLString GetLSLStringItem(int itemIndex) - { - if (m_data[itemIndex] is LSL_Types.key) - { - return (LSL_Types.key)m_data[itemIndex]; - } - else if (m_data[itemIndex] is String) - { - return new LSL_Types.LSLString((string)m_data[itemIndex]); - } - else - { - return (LSL_Types.LSLString)m_data[itemIndex]; - } - } - - public LSL_Types.LSLInteger GetLSLIntegerItem(int itemIndex) - { - if (m_data[itemIndex] is LSL_Types.LSLInteger) - return (LSL_Types.LSLInteger)m_data[itemIndex]; - else if (m_data[itemIndex] is Int32) - return new LSLInteger((int)m_data[itemIndex]); - else - throw new InvalidCastException(); - } - - public LSL_Types.Vector3 GetVector3Item(int itemIndex) - { - return (LSL_Types.Vector3)m_data[itemIndex]; - } - - public LSL_Types.Quaternion GetQuaternionItem(int itemIndex) - { - return (LSL_Types.Quaternion)m_data[itemIndex]; - } - - public LSL_Types.key GetKeyItem(int itemIndex) - { - return (LSL_Types.key)m_data[itemIndex]; - } - - public static list operator +(list a, list b) - { - object[] tmp; - tmp = new object[a.Length + b.Length]; - a.Data.CopyTo(tmp, 0); - b.Data.CopyTo(tmp, a.Length); - return new list(tmp); - } - - private void ExtendAndAdd(object o) - { - Array.Resize(ref m_data, Length + 1); - m_data.SetValue(o, Length - 1); - } - - public static list operator +(list a, LSLString s) - { - a.ExtendAndAdd(s); - return a; - } - - public static list operator +(list a, LSLInteger i) - { - a.ExtendAndAdd(i); - return a; - } - - public static list operator +(list a, LSLFloat d) - { - a.ExtendAndAdd(d); - return a; - } - - public void Add(object o) - { - object[] tmp; - tmp = new object[m_data.Length + 1]; - m_data.CopyTo(tmp, 0); - tmp[m_data.Length] = o; - m_data = tmp; - } - - public bool Contains(object o) - { - bool ret = false; - foreach (object i in Data) - { - if (i == o) - { - ret = true; - break; - } - } - return ret; - } - - public list DeleteSublist(int start, int end) - { - // Not an easy one - // If start <= end, remove that part - // if either is negative, count from the end of the array - // if the resulting start > end, remove all BUT that part - - Object[] ret; - - if (start < 0) - start=m_data.Length-start; - - if (start < 0) - start=0; - - if (end < 0) - end=m_data.Length-end; - if (end < 0) - end=0; - - if (start > end) - { - if (end >= m_data.Length) - return new list(new Object[0]); - - if (start >= m_data.Length) - start=m_data.Length-1; - - return GetSublist(end, start); - } - - // start >= 0 && end >= 0 here - if (start >= m_data.Length) - { - ret=new Object[m_data.Length]; - Array.Copy(m_data, 0, ret, 0, m_data.Length); - - return new list(ret); - } - - if (end >= m_data.Length) - end=m_data.Length-1; - - // now, this makes the math easier - int remove=end+1-start; - - ret=new Object[m_data.Length-remove]; - if (ret.Length == 0) - return new list(ret); - - int src; - int dest=0; - - for (src = 0; src < m_data.Length; src++) - { - if (src < start || src > end) - ret[dest++]=m_data[src]; - } - - return new list(ret); - } - - public list GetSublist(int start, int end) - { - - object[] ret; - - // Take care of neg start or end's - // NOTE that either index may still be negative after - // adding the length, so we must take additional - // measures to protect against this. Note also that - // after normalisation the negative indices are no - // longer relative to the end of the list. - - if (start < 0) - { - start = m_data.Length + start; - } - - if (end < 0) - { - end = m_data.Length + end; - } - - // The conventional case is start <= end - // NOTE that the case of an empty list is - // dealt with by the initial test. Start - // less than end is taken to be the most - // common case. - - if (start <= end) - { - - // Start sublist beyond length - // Also deals with start AND end still negative - if (start >= m_data.Length || end < 0) - { - return new list(); - } - - // Sublist extends beyond the end of the supplied list - if (end >= m_data.Length) - { - end = m_data.Length - 1; - } - - // Sublist still starts before the beginning of the list - if (start < 0) - { - start = 0; - } - - ret = new object[end - start + 1]; - - Array.Copy(m_data, start, ret, 0, end - start + 1); - - return new list(ret); - - } - - // Deal with the segmented case: 0->end + start->EOL - - else - { - - list result = null; - - // If end is negative, then prefix list is empty - if (end < 0) - { - result = new list(); - // If start is still negative, then the whole of - // the existing list is returned. This case is - // only admitted if end is also still negative. - if (start < 0) - { - return this; - } - - } - else - { - result = GetSublist(0,end); - } - - // If start is outside of list, then just return - // the prefix, whatever it is. - if (start >= m_data.Length) - { - return result; - } - - return result + GetSublist(start, Data.Length); - - } - } - - private class AlphanumComparatorFast : IComparer - { - public int Compare(object x, object y) - { - string s1 = x as string; - if (s1 == null) - { - return 0; - } - string s2 = y as string; - if (s2 == null) - { - return 0; - } - - int len1 = s1.Length; - int len2 = s2.Length; - int marker1 = 0; - int marker2 = 0; - - // Walk through two the strings with two markers. - while (marker1 < len1 && marker2 < len2) - { - char ch1 = s1[marker1]; - char ch2 = s2[marker2]; - - // Some buffers we can build up characters in for each chunk. - char[] space1 = new char[len1]; - int loc1 = 0; - char[] space2 = new char[len2]; - int loc2 = 0; - - // Walk through all following characters that are digits or - // characters in BOTH strings starting at the appropriate marker. - // Collect char arrays. - do - { - space1[loc1++] = ch1; - marker1++; - - if (marker1 < len1) - { - ch1 = s1[marker1]; - } - else - { - break; - } - } while (char.IsDigit(ch1) == char.IsDigit(space1[0])); - - do - { - space2[loc2++] = ch2; - marker2++; - - if (marker2 < len2) - { - ch2 = s2[marker2]; - } - else - { - break; - } - } while (char.IsDigit(ch2) == char.IsDigit(space2[0])); - - // If we have collected numbers, compare them numerically. - // Otherwise, if we have strings, compare them alphabetically. - string str1 = new string(space1); - string str2 = new string(space2); - - int result; - - if (char.IsDigit(space1[0]) && char.IsDigit(space2[0])) - { - int thisNumericChunk = int.Parse(str1); - int thatNumericChunk = int.Parse(str2); - result = thisNumericChunk.CompareTo(thatNumericChunk); - } - else - { - result = str1.CompareTo(str2); - } - - if (result != 0) - { - return result; - } - } - return len1 - len2; - } - } - - public list Sort(int stride, int ascending) - { - if (Data.Length == 0) - return new list(); // Don't even bother - - string[] keys; - - if (stride == 1) // The simple case - { - Object[] ret=new Object[Data.Length]; - - Array.Copy(Data, 0, ret, 0, Data.Length); - - keys=new string[Data.Length]; - - for (int k = 0; k < Data.Length; k++) - keys[k] = Data[k].ToString(); - - Array.Sort( keys, ret, new AlphanumComparatorFast() ); - - if (ascending == 0) - Array.Reverse(ret); - return new list(ret); - } - - int src=0; - - int len=(Data.Length+stride-1)/stride; - - keys=new string[len]; - Object[][] vals=new Object[len][]; - - int i; - - while (src < Data.Length) - { - Object[] o=new Object[stride]; - - for (i = 0; i < stride; i++) - { - if (src < Data.Length) - o[i]=Data[src++]; - else - { - o[i]=new Object(); - src++; - } - } - - int idx=src/stride-1; - keys[idx]=o[0].ToString(); - vals[idx]=o; - } - - Array.Sort(keys, vals, new AlphanumComparatorFast()); - if (ascending == 0) - { - Array.Reverse(vals); - } - - Object[] sorted=new Object[stride*vals.Length]; - - for (i = 0; i < vals.Length; i++) - for (int j = 0; j < stride; j++) - sorted[i*stride+j] = vals[i][j]; - - return new list(sorted); - } - - #region CSV Methods - - public static list FromCSV(string csv) - { - return new list(csv.Split(',')); - } - - public string ToCSV() - { - string ret = ""; - foreach (object o in this.Data) - { - if (ret == "") - { - ret = o.ToString(); - } - else - { - ret = ret + ", " + o.ToString(); - } - } - return ret; - } - - private string ToSoup() - { - string output; - output = String.Empty; - if (m_data.Length == 0) - { - return String.Empty; - } - foreach (object o in m_data) - { - output = output + o.ToString(); - } - return output; - } - - public static explicit operator String(list l) - { - return l.ToSoup(); - } - - public static explicit operator LSLString(list l) - { - return new LSLString(l.ToSoup()); - } - - public override string ToString() - { - return ToSoup(); - } - - #endregion - - #region Statistic Methods - - public double Min() - { - double minimum = double.PositiveInfinity; - double entry; - for (int i = 0; i < Data.Length; i++) - { - if (double.TryParse(Data[i].ToString(), out entry)) - { - if (entry < minimum) minimum = entry; - } - } - return minimum; - } - - public double Max() - { - double maximum = double.NegativeInfinity; - double entry; - for (int i = 0; i < Data.Length; i++) - { - if (double.TryParse(Data[i].ToString(), out entry)) - { - if (entry > maximum) maximum = entry; - } - } - return maximum; - } - - public double Range() - { - return (this.Max() / this.Min()); - } - - public int NumericLength() - { - int count = 0; - double entry; - for (int i = 0; i < Data.Length; i++) - { - if (double.TryParse(Data[i].ToString(), out entry)) - { - count++; - } - } - return count; - } - - public static list ToDoubleList(list src) - { - list ret = new list(); - double entry; - for (int i = 0; i < src.Data.Length - 1; i++) - { - if (double.TryParse(src.Data[i].ToString(), out entry)) - { - ret.Add(entry); - } - } - return ret; - } - - public double Sum() - { - double sum = 0; - double entry; - for (int i = 0; i < Data.Length; i++) - { - if (double.TryParse(Data[i].ToString(), out entry)) - { - sum = sum + entry; - } - } - return sum; - } - - public double SumSqrs() - { - double sum = 0; - double entry; - for (int i = 0; i < Data.Length; i++) - { - if (double.TryParse(Data[i].ToString(), out entry)) - { - sum = sum + Math.Pow(entry, 2); - } - } - return sum; - } - - public double Mean() - { - return (this.Sum() / this.NumericLength()); - } - - public void NumericSort() - { - IComparer Numeric = new NumericComparer(); - Array.Sort(Data, Numeric); - } - - public void AlphaSort() - { - IComparer Alpha = new AlphaCompare(); - Array.Sort(Data, Alpha); - } - - public double Median() - { - return Qi(0.5); - } - - public double GeometricMean() - { - double ret = 1.0; - list nums = ToDoubleList(this); - for (int i = 0; i < nums.Data.Length; i++) - { - ret *= (double)nums.Data[i]; - } - return Math.Exp(Math.Log(ret) / (double)nums.Data.Length); - } - - public double HarmonicMean() - { - double ret = 0.0; - list nums = ToDoubleList(this); - for (int i = 0; i < nums.Data.Length; i++) - { - ret += 1.0 / (double)nums.Data[i]; - } - return ((double)nums.Data.Length / ret); - } - - public double Variance() - { - double s = 0; - list num = ToDoubleList(this); - for (int i = 0; i < num.Data.Length; i++) - { - s += Math.Pow((double)num.Data[i], 2); - } - return (s - num.Data.Length * Math.Pow(num.Mean(), 2)) / (num.Data.Length - 1); - } - - public double StdDev() - { - return Math.Sqrt(this.Variance()); - } - - public double Qi(double i) - { - list j = this; - j.NumericSort(); - - if (Math.Ceiling(this.Length * i) == this.Length * i) - { - return (double)((double)j.Data[(int)(this.Length * i - 1)] + (double)j.Data[(int)(this.Length * i)]) / 2; - } - else - { - return (double)j.Data[((int)(Math.Ceiling(this.Length * i))) - 1]; - } - } - - #endregion - - public string ToPrettyString() - { - string output; - if (m_data.Length == 0) - { - return "[]"; - } - output = "["; - foreach (object o in m_data) - { - if (o is String) - { - output = output + "\"" + o + "\", "; - } - else - { - output = output + o.ToString() + ", "; - } - } - output = output.Substring(0, output.Length - 2); - output = output + "]"; - return output; - } - - public class AlphaCompare : IComparer - { - int IComparer.Compare(object x, object y) - { - return string.Compare(x.ToString(), y.ToString()); - } - } - - public class NumericComparer : IComparer - { - int IComparer.Compare(object x, object y) - { - double a; - double b; - if (!double.TryParse(x.ToString(), out a)) - { - a = 0.0; - } - if (!double.TryParse(y.ToString(), out b)) - { - b = 0.0; - } - if (a < b) - { - return -1; - } - else if (a == b) - { - return 0; - } - else - { - return 1; - } - } - } - - } - - // - // BELOW IS WORK IN PROGRESS... IT WILL CHANGE, SO DON'T USE YET! :) - // - - public struct StringTest - { - // Our own little string - internal string actualString; - public static implicit operator bool(StringTest mString) - { - if (mString.actualString.Length == 0) - return true; - return false; - } - public override string ToString() - { - return actualString; - } - - } - - [Serializable] - public struct key - { - public string value; - - #region Constructors - public key(string s) - { - value = s; - } - - #endregion - - #region Methods - - static public bool Parse2Key(string s) - { - Regex isuuid = new Regex(@"^[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}$", RegexOptions.Compiled); - if (isuuid.IsMatch(s)) - { - return true; - } - else - { - return false; - } - } - - #endregion - - #region Operators - - static public implicit operator Boolean(key k) - { - if (k.value.Length == 0) - { - return false; - } - - if (k.value == "00000000-0000-0000-0000-000000000000") - { - return false; - } - Regex isuuid = new Regex(@"^[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}$", RegexOptions.Compiled); - if (isuuid.IsMatch(k.value)) - { - return true; - } - else - { - return false; - } - } - - static public implicit operator key(string s) - { - return new key(s); - } - - static public implicit operator String(key k) - { - return k.value; - } - - static public implicit operator LSLString(key k) - { - return k.value; - } - - public static bool operator ==(key k1, key k2) - { - return k1.value == k2.value; - } - public static bool operator !=(key k1, key k2) - { - return k1.value != k2.value; - } - - #endregion - - #region Overriders - - public override bool Equals(object o) - { - return o.ToString() == value; - } - - public override int GetHashCode() - { - return value.GetHashCode(); - } - - public override string ToString() - { - return value; - } - - #endregion - } - - [Serializable] - public struct LSLString - { - public string m_string; - #region Constructors - public LSLString(string s) - { - m_string = s; - } - - public LSLString(double d) - { - string s=String.Format("{0:0.000000}", d); - m_string=s; - } - - public LSLString(LSLFloat f) - { - string s=String.Format("{0:0.000000}", f.value); - m_string=s; - } - - #endregion - - #region Operators - static public implicit operator Boolean(LSLString s) - { - if (s.m_string.Length == 0) - { - return false; - } - else - { - return true; - } - } - - - - static public implicit operator String(LSLString s) - { - return s.m_string; - } - - static public implicit operator LSLString(string s) - { - return new LSLString(s); - } - - public static string ToString(LSLString s) - { - return s.m_string; - } - - public override string ToString() - { - return m_string; - } - - public static bool operator ==(LSLString s1, string s2) - { - return s1.m_string == s2; - } - - public static bool operator !=(LSLString s1, string s2) - { - return s1.m_string != s2; - } - - public static explicit operator double(LSLString s) - { - return Convert.ToDouble(s.m_string); - } - - public static explicit operator LSLInteger(LSLString s) - { - return new LSLInteger(s.m_string); - } - - public static explicit operator LSLString(double d) - { - return new LSLString(d); - } - - public static explicit operator LSLString(LSLFloat f) - { - return new LSLString(f); - } - - static public explicit operator LSLString(bool b) - { - if (b) - return new LSLString("1"); - else - return new LSLString("0"); - } - - public static implicit operator Vector3(LSLString s) - { - return new Vector3(s.m_string); - } - - public static implicit operator Quaternion(LSLString s) - { - return new Quaternion(s.m_string); - } - - public static implicit operator LSLFloat(LSLString s) - { - return new LSLFloat(Convert.ToDouble(s.m_string)); - } - - #endregion - - #region Overriders - public override bool Equals(object o) - { - return m_string == o.ToString(); - } - - public override int GetHashCode() - { - return m_string.GetHashCode(); - } - - #endregion - - #region " Standard string functions " - //Clone,CompareTo,Contains - //CopyTo,EndsWith,Equals,GetEnumerator,GetHashCode,GetType,GetTypeCode - //IndexOf,IndexOfAny,Insert,IsNormalized,LastIndexOf,LastIndexOfAny - //Length,Normalize,PadLeft,PadRight,Remove,Replace,Split,StartsWith,Substring,ToCharArray,ToLowerInvariant - //ToString,ToUpper,ToUpperInvariant,Trim,TrimEnd,TrimStart - public bool Contains(string value) { return m_string.Contains(value); } - public int IndexOf(string value) { return m_string.IndexOf(value); } - public int Length { get { return m_string.Length; } } - - - #endregion - } - - [Serializable] - public struct LSLInteger - { - public int value; - - #region Constructors - public LSLInteger(int i) - { - value = i; - } - - public LSLInteger(double d) - { - value = (int)d; - } - - public LSLInteger(string s) - { - Regex r = new Regex("^[ ]*-?[0-9][0-9xX]?[0-9a-fA-F]*"); - Match m = r.Match(s); - string v = m.Groups[0].Value; - - if (v == String.Empty) - { - value = 0; - } - else - { - try - { - if (v.Contains("x") || v.Contains("X")) - { - value = int.Parse(v.Substring(2), System.Globalization.NumberStyles.HexNumber); - } - else - { - value = int.Parse(v, System.Globalization.NumberStyles.Integer); - } - } - catch (OverflowException) - { - value = -1; - } - } - } - - #endregion - - #region Operators - - static public implicit operator int(LSLInteger i) - { - return i.value; - } - - static public implicit operator uint(LSLInteger i) - { - return (uint)i.value; - } - - static public explicit operator LSLString(LSLInteger i) - { - return new LSLString(i.ToString()); - } - - static public implicit operator Boolean(LSLInteger i) - { - if (i.value == 0) - { - return false; - } - else - { - return true; - } - } - - static public implicit operator LSLInteger(int i) - { - return new LSLInteger(i); - } - - static public explicit operator LSLInteger(string s) - { - return new LSLInteger(s); - } - - static public implicit operator LSLInteger(uint u) - { - return new LSLInteger(u); - } - - static public explicit operator LSLInteger(double d) - { - return new LSLInteger(d); - } - - static public explicit operator LSLInteger(LSLFloat f) - { - return new LSLInteger(f.value); - } - - static public implicit operator LSLInteger(bool b) - { - if (b) - return new LSLInteger(1); - else - return new LSLInteger(0); - } - - static public bool operator ==(LSLInteger i1, LSLInteger i2) - { - bool ret = i1.value == i2.value; - return ret; - } - - static public bool operator !=(LSLInteger i1, LSLInteger i2) - { - bool ret = i1.value != i2.value; - return ret; - } - - static public LSLInteger operator +(LSLInteger i1, int i2) - { - return new LSLInteger(i1.value + i2); - } - - static public LSLInteger operator -(LSLInteger i1, int i2) - { - return new LSLInteger(i1.value - i2); - } - - static public LSLInteger operator *(LSLInteger i1, int i2) - { - return new LSLInteger(i1.value * i2); - } - - static public LSLInteger operator /(LSLInteger i1, int i2) - { - return new LSLInteger(i1.value / i2); - } - -// static public LSLFloat operator +(LSLInteger i1, double f) -// { -// return new LSLFloat((double)i1.value + f); -// } -// -// static public LSLFloat operator -(LSLInteger i1, double f) -// { -// return new LSLFloat((double)i1.value - f); -// } -// -// static public LSLFloat operator *(LSLInteger i1, double f) -// { -// return new LSLFloat((double)i1.value * f); -// } -// -// static public LSLFloat operator /(LSLInteger i1, double f) -// { -// return new LSLFloat((double)i1.value / f); -// } - - static public LSLInteger operator -(LSLInteger i) - { - return new LSLInteger(-i.value); - } - - public override bool Equals(Object o) - { - if (!(o is LSLInteger)) - return false; - return value == ((LSLInteger)o).value; - } - - public override int GetHashCode() - { - return value; - } - - static public LSLInteger operator &(LSLInteger i1, LSLInteger i2) - { - int ret = i1.value & i2.value; - return ret; - } - - public static LSLInteger operator ++(LSLInteger i) - { - i.value++; - return i; - } - - - public static LSLInteger operator --(LSLInteger i) - { - i.value--; - return i; - } - - static public implicit operator System.Double(LSLInteger i) - { - return (double)i.value; - } - - public static bool operator true(LSLInteger i) - { - return i.value != 0; - } - - public static bool operator false(LSLInteger i) - { - return i.value == 0; - } - - #endregion - - #region Overriders - - public override string ToString() - { - return this.value.ToString(); - } - - #endregion - } - - [Serializable] - public struct LSLFloat - { - public double value; - - #region Constructors - - public LSLFloat(int i) - { - this.value = (double)i; - } - - public LSLFloat(double d) - { - this.value = d; - } - - public LSLFloat(string s) - { - this.value = double.Parse(s); - } - - #endregion - - #region Operators - - static public explicit operator float(LSLFloat f) - { - return (float)f.value; - } - - static public explicit operator int(LSLFloat f) - { - return (int)f.value; - } - - static public explicit operator uint(LSLFloat f) - { - return (uint) Math.Abs(f.value); - } - - static public implicit operator Boolean(LSLFloat f) - { - if (f.value == 0.0) - { - return false; - } - else - { - return true; - } - } - - static public implicit operator LSLFloat(int i) - { - return new LSLFloat(i); - } - - static public implicit operator LSLFloat(LSLInteger i) - { - return new LSLFloat(i.value); - } - - static public explicit operator LSLFloat(string s) - { - Regex r = new Regex("^[ ]*-?[0-9]*\\.?[0-9]*[eE]?-?[0-9]*"); - Match m = r.Match(s); - string v = m.Groups[0].Value; - - while (v.Length > 0 && v.Substring(0, 1) == " ") - v = v.Substring(1); - - if (v == String.Empty) - v = "0"; - - return new LSLFloat(double.Parse(v)); - } - - static public implicit operator LSLFloat(double d) - { - return new LSLFloat(d); - } - - static public implicit operator LSLFloat(bool b) - { - if (b) - return new LSLFloat(1.0); - else - return new LSLFloat(0.0); - } - - static public bool operator ==(LSLFloat f1, LSLFloat f2) - { - return f1.value == f2.value; - } - - static public bool operator !=(LSLFloat f1, LSLFloat f2) - { - return f1.value != f2.value; - } - - static public LSLFloat operator ++(LSLFloat f) - { - f.value++; - return f; - } - - static public LSLFloat operator --(LSLFloat f) - { - f.value--; - return f; - } - - static public LSLFloat operator +(LSLFloat f, int i) - { - return new LSLFloat(f.value + (double)i); - } - - static public LSLFloat operator -(LSLFloat f, int i) - { - return new LSLFloat(f.value - (double)i); - } - - static public LSLFloat operator *(LSLFloat f, int i) - { - return new LSLFloat(f.value * (double)i); - } - - static public LSLFloat operator /(LSLFloat f, int i) - { - return new LSLFloat(f.value / (double)i); - } - - static public LSLFloat operator +(LSLFloat lhs, LSLFloat rhs) - { - return new LSLFloat(lhs.value + rhs.value); - } - - static public LSLFloat operator -(LSLFloat lhs, LSLFloat rhs) - { - return new LSLFloat(lhs.value - rhs.value); - } - - static public LSLFloat operator *(LSLFloat lhs, LSLFloat rhs) - { - return new LSLFloat(lhs.value * rhs.value); - } - - static public LSLFloat operator /(LSLFloat lhs, LSLFloat rhs) - { - return new LSLFloat(lhs.value / rhs.value); - } - - static public LSLFloat operator -(LSLFloat f) - { - return new LSLFloat(-f.value); - } - - static public implicit operator System.Double(LSLFloat f) - { - return f.value; - } - - #endregion - - #region Overriders - - public override string ToString() - { - return String.Format("{0:0.000000}", this.value); - } - - public override bool Equals(Object o) - { - if (!(o is LSLFloat)) - return false; - return value == ((LSLFloat)o).value; - } - - public override int GetHashCode() - { - return Convert.ToInt32(value); - } - - - #endregion - } - } -} diff --git a/OpenSim/Region/ScriptEngine/Common/OSSL_BuilIn_Commands.cs b/OpenSim/Region/ScriptEngine/Common/OSSL_BuilIn_Commands.cs index c9551ae50f..5ca3e7d30d 100644 --- a/OpenSim/Region/ScriptEngine/Common/OSSL_BuilIn_Commands.cs +++ b/OpenSim/Region/ScriptEngine/Common/OSSL_BuilIn_Commands.cs @@ -34,6 +34,7 @@ using OpenSim.Region.Environment.Scenes; using OpenSim.Region.ScriptEngine.Common.ScriptEngineBase; using TPFlags = OpenSim.Framework.Constants.TeleportFlags; //using OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL; +using OpenSim.Region.ScriptEngine.Shared; namespace OpenSim.Region.ScriptEngine.Common { diff --git a/OpenSim/Region/ScriptEngine/Common/OSSL_BuilIn_Commands_Interface.cs b/OpenSim/Region/ScriptEngine/Common/OSSL_BuilIn_Commands_Interface.cs index 9c1587dbc7..49f92b5362 100644 --- a/OpenSim/Region/ScriptEngine/Common/OSSL_BuilIn_Commands_Interface.cs +++ b/OpenSim/Region/ScriptEngine/Common/OSSL_BuilIn_Commands_Interface.cs @@ -24,6 +24,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +using OpenSim.Region.ScriptEngine.Shared; namespace OpenSim.Region.ScriptEngine.Common { diff --git a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/AsyncCommandPlugins/Dataserver.cs b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/AsyncCommandPlugins/Dataserver.cs index 378610ac79..96d7b3077e 100644 --- a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/AsyncCommandPlugins/Dataserver.cs +++ b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/AsyncCommandPlugins/Dataserver.cs @@ -29,6 +29,7 @@ using System; using System.Collections; using System.Collections.Generic; using OpenMetaverse; +using OpenSim.Region.ScriptEngine.Shared; namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase.AsyncCommandPlugins diff --git a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/AsyncCommandPlugins/HttpRequest.cs b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/AsyncCommandPlugins/HttpRequest.cs index 097f3b4814..5b4cb8322b 100644 --- a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/AsyncCommandPlugins/HttpRequest.cs +++ b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/AsyncCommandPlugins/HttpRequest.cs @@ -28,6 +28,7 @@ using System; using OpenSim.Region.Environment.Interfaces; using OpenSim.Region.Environment.Modules.Scripting.HttpRequest; +using OpenSim.Region.ScriptEngine.Shared; namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase.AsyncCommandPlugins { diff --git a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/AsyncCommandPlugins/Listener.cs b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/AsyncCommandPlugins/Listener.cs index 6a1235b465..0bac22c2bc 100644 --- a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/AsyncCommandPlugins/Listener.cs +++ b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/AsyncCommandPlugins/Listener.cs @@ -27,6 +27,7 @@ using OpenSim.Region.Environment.Interfaces; using OpenSim.Region.Environment.Modules.Scripting.WorldComm; +using OpenSim.Region.ScriptEngine.Shared; namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase.AsyncCommandPlugins { diff --git a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/AsyncCommandPlugins/SensorRepeat.cs b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/AsyncCommandPlugins/SensorRepeat.cs index 0fce1f2cda..7059a1be5c 100644 --- a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/AsyncCommandPlugins/SensorRepeat.cs +++ b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/AsyncCommandPlugins/SensorRepeat.cs @@ -31,6 +31,7 @@ using OpenMetaverse; using OpenSim.Framework; using OpenSim.Region.Environment.Scenes; using OpenSim.Framework.Communications.Cache; +using OpenSim.Region.ScriptEngine.Shared; namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase.AsyncCommandPlugins { diff --git a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/AsyncCommandPlugins/XmlRequest.cs b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/AsyncCommandPlugins/XmlRequest.cs index ba6a98cbf8..9a01cc4e6f 100644 --- a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/AsyncCommandPlugins/XmlRequest.cs +++ b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/AsyncCommandPlugins/XmlRequest.cs @@ -28,6 +28,7 @@ using System; using OpenSim.Region.Environment.Interfaces; using OpenSim.Region.Environment.Modules.Scripting.XMLRPC; +using OpenSim.Region.ScriptEngine.Shared; namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase.AsyncCommandPlugins { diff --git a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventManager.cs b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventManager.cs index c72be7cd0f..d52b6425a1 100644 --- a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventManager.cs +++ b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventManager.cs @@ -35,6 +35,7 @@ using OpenSim.Region.Interfaces; using OpenSim.Region; using OpenSim.Region.Environment.Scenes; using OpenSim.Region.Environment.Interfaces; +using OpenSim.Region.ScriptEngine.Shared; namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase { diff --git a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventQueueManager.cs b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventQueueManager.cs index 282559a55c..d0af72044d 100644 --- a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventQueueManager.cs +++ b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventQueueManager.cs @@ -29,6 +29,7 @@ using System; using System.Collections; using System.Collections.Generic; using OpenMetaverse; +using OpenSim.Region.ScriptEngine.Shared; namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase { diff --git a/OpenSim/Region/ScriptEngine/Common/Tests/LSL_TypesTestLSLFloat.cs b/OpenSim/Region/ScriptEngine/Common/Tests/LSL_TypesTestLSLFloat.cs deleted file mode 100644 index d89bb879df..0000000000 --- a/OpenSim/Region/ScriptEngine/Common/Tests/LSL_TypesTestLSLFloat.cs +++ /dev/null @@ -1,583 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSim Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System.Collections.Generic; -using NUnit.Framework; -using OpenSim.Tests.Common; -using OpenSim.Region.ScriptEngine.Common; - -namespace OpenSim.Region.ScriptEngine.Common.Tests -{ - [TestFixture] - public class LSL_TypesTestLSLFloat - { - // Used for testing equality of two floats. - private double _lowPrecisionTolerance = 0.000001; - - private Dictionary m_intDoubleSet; - private Dictionary m_doubleDoubleSet; - private Dictionary m_doubleIntSet; - private Dictionary m_doubleUintSet; - private Dictionary m_stringDoubleSet; - private Dictionary m_doubleStringSet; - private List m_intList; - private List m_doubleList; - - /// - /// Sets up dictionaries and arrays used in the tests. - /// - [TestFixtureSetUp] - public void SetUpDataSets() - { - m_intDoubleSet = new Dictionary(); - m_intDoubleSet.Add(2, 2.0); - m_intDoubleSet.Add(-2, -2.0); - m_intDoubleSet.Add(0, 0.0); - m_intDoubleSet.Add(1, 1.0); - m_intDoubleSet.Add(-1, -1.0); - m_intDoubleSet.Add(999999999, 999999999.0); - m_intDoubleSet.Add(-99999999, -99999999.0); - - m_doubleDoubleSet = new Dictionary(); - m_doubleDoubleSet.Add(2.0, 2.0); - m_doubleDoubleSet.Add(-2.0, -2.0); - m_doubleDoubleSet.Add(0.0, 0.0); - m_doubleDoubleSet.Add(1.0, 1.0); - m_doubleDoubleSet.Add(-1.0, -1.0); - m_doubleDoubleSet.Add(999999999.0, 999999999.0); - m_doubleDoubleSet.Add(-99999999.0, -99999999.0); - m_doubleDoubleSet.Add(0.5, 0.5); - m_doubleDoubleSet.Add(0.0005, 0.0005); - m_doubleDoubleSet.Add(0.6805, 0.6805); - m_doubleDoubleSet.Add(-0.5, -0.5); - m_doubleDoubleSet.Add(-0.0005, -0.0005); - m_doubleDoubleSet.Add(-0.6805, -0.6805); - m_doubleDoubleSet.Add(548.5, 548.5); - m_doubleDoubleSet.Add(2.0005, 2.0005); - m_doubleDoubleSet.Add(349485435.6805, 349485435.6805); - m_doubleDoubleSet.Add(-548.5, -548.5); - m_doubleDoubleSet.Add(-2.0005, -2.0005); - m_doubleDoubleSet.Add(-349485435.6805, -349485435.6805); - - m_doubleIntSet = new Dictionary(); - m_doubleIntSet.Add(2.0, 2); - m_doubleIntSet.Add(-2.0, -2); - m_doubleIntSet.Add(0.0, 0); - m_doubleIntSet.Add(1.0, 1); - m_doubleIntSet.Add(-1.0, -1); - m_doubleIntSet.Add(999999999.0, 999999999); - m_doubleIntSet.Add(-99999999.0, -99999999); - m_doubleIntSet.Add(0.5, 0); - m_doubleIntSet.Add(0.0005, 0); - m_doubleIntSet.Add(0.6805, 0); - m_doubleIntSet.Add(-0.5, 0); - m_doubleIntSet.Add(-0.0005, 0); - m_doubleIntSet.Add(-0.6805, 0); - m_doubleIntSet.Add(548.5, 548); - m_doubleIntSet.Add(2.0005, 2); - m_doubleIntSet.Add(349485435.6805, 349485435); - m_doubleIntSet.Add(-548.5, -548); - m_doubleIntSet.Add(-2.0005, -2); - m_doubleIntSet.Add(-349485435.6805, -349485435); - - m_doubleUintSet = new Dictionary(); - m_doubleUintSet.Add(2.0, 2); - m_doubleUintSet.Add(-2.0, 2); - m_doubleUintSet.Add(0.0, 0); - m_doubleUintSet.Add(1.0, 1); - m_doubleUintSet.Add(-1.0, 1); - m_doubleUintSet.Add(999999999.0, 999999999); - m_doubleUintSet.Add(-99999999.0, 99999999); - m_doubleUintSet.Add(0.5, 0); - m_doubleUintSet.Add(0.0005, 0); - m_doubleUintSet.Add(0.6805, 0); - m_doubleUintSet.Add(-0.5, 0); - m_doubleUintSet.Add(-0.0005, 0); - m_doubleUintSet.Add(-0.6805, 0); - m_doubleUintSet.Add(548.5, 548); - m_doubleUintSet.Add(2.0005, 2); - m_doubleUintSet.Add(349485435.6805, 349485435); - m_doubleUintSet.Add(-548.5, 548); - m_doubleUintSet.Add(-2.0005, 2); - m_doubleUintSet.Add(-349485435.6805, 349485435); - - m_stringDoubleSet = new Dictionary(); - m_stringDoubleSet.Add("2", 2.0); - m_stringDoubleSet.Add("-2", -2.0); - m_stringDoubleSet.Add("1", 1.0); - m_stringDoubleSet.Add("-1", -1.0); - m_stringDoubleSet.Add("0", 0.0); - m_stringDoubleSet.Add("999999999.0", 999999999.0); - m_stringDoubleSet.Add("-99999999.0", -99999999.0); - m_stringDoubleSet.Add("0.5", 0.5); - m_stringDoubleSet.Add("0.0005", 0.0005); - m_stringDoubleSet.Add("0.6805", 0.6805); - m_stringDoubleSet.Add("-0.5", -0.5); - m_stringDoubleSet.Add("-0.0005", -0.0005); - m_stringDoubleSet.Add("-0.6805", -0.6805); - m_stringDoubleSet.Add("548.5", 548.5); - m_stringDoubleSet.Add("2.0005", 2.0005); - m_stringDoubleSet.Add("349485435.6805", 349485435.6805); - m_stringDoubleSet.Add("-548.5", -548.5); - m_stringDoubleSet.Add("-2.0005", -2.0005); - m_stringDoubleSet.Add("-349485435.6805", -349485435.6805); - - m_doubleStringSet = new Dictionary(); - m_doubleStringSet.Add(2.0, "2.000000"); - m_doubleStringSet.Add(-2.0, "-2.000000"); - m_doubleStringSet.Add(1.0, "1.000000"); - m_doubleStringSet.Add(-1.0, "-1.000000"); - m_doubleStringSet.Add(0.0, "0.000000"); - m_doubleStringSet.Add(999999999.0, "999999999.000000"); - m_doubleStringSet.Add(-99999999.0, "-99999999.000000"); - m_doubleStringSet.Add(0.5, "0.500000"); - m_doubleStringSet.Add(0.0005, "0.000500"); - m_doubleStringSet.Add(0.6805, "0.680500"); - m_doubleStringSet.Add(-0.5, "-0.500000"); - m_doubleStringSet.Add(-0.0005, "-0.000500"); - m_doubleStringSet.Add(-0.6805, "-0.680500"); - m_doubleStringSet.Add(548.5, "548.500000"); - m_doubleStringSet.Add(2.0005, "2.000500"); - m_doubleStringSet.Add(349485435.6805, "349485435.680500"); - m_doubleStringSet.Add(-548.5, "-548.500000"); - m_doubleStringSet.Add(-2.0005, "-2.000500"); - m_doubleStringSet.Add(-349485435.6805, "-349485435.680500"); - - m_doubleList = new List(); - m_doubleList.Add(2.0); - m_doubleList.Add(-2.0); - m_doubleList.Add(1.0); - m_doubleList.Add(-1.0); - m_doubleList.Add(999999999.0); - m_doubleList.Add(-99999999.0); - m_doubleList.Add(0.5); - m_doubleList.Add(0.0005); - m_doubleList.Add(0.6805); - m_doubleList.Add(-0.5); - m_doubleList.Add(-0.0005); - m_doubleList.Add(-0.6805); - m_doubleList.Add(548.5); - m_doubleList.Add(2.0005); - m_doubleList.Add(349485435.6805); - m_doubleList.Add(-548.5); - m_doubleList.Add(-2.0005); - m_doubleList.Add(-349485435.6805); - - m_intList = new List(); - m_intList.Add(2); - m_intList.Add(-2); - m_intList.Add(0); - m_intList.Add(1); - m_intList.Add(-1); - m_intList.Add(999999999); - m_intList.Add(-99999999); - } - - /// - /// Tests constructing a LSLFloat from an integer. - /// - [Test] - public void TestConstructFromInt() - { - LSL_Types.LSLFloat testFloat; - - foreach (KeyValuePair number in m_intDoubleSet) - { - testFloat = new LSL_Types.LSLFloat(number.Key); - Assert.That(testFloat.value, new DoubleToleranceConstraint(number.Value, _lowPrecisionTolerance)); - } - } - - /// - /// Tests constructing a LSLFloat from a double. - /// - [Test] - public void TestConstructFromDouble() - { - LSL_Types.LSLFloat testFloat; - - foreach (KeyValuePair number in m_doubleDoubleSet) - { - testFloat = new LSL_Types.LSLFloat(number.Key); - Assert.That(testFloat.value, new DoubleToleranceConstraint(number.Value, _lowPrecisionTolerance)); - } - } - - /// - /// Tests LSLFloat is correctly cast explicitly to integer. - /// - [Test] - public void TestExplicitCastLSLFloatToInt() - { - int testNumber; - - foreach (KeyValuePair number in m_doubleIntSet) - { - testNumber = (int) new LSL_Types.LSLFloat(number.Key); - Assert.AreEqual(number.Value, testNumber, "Converting double " + number.Key + ", expecting int " + number.Value); - } - } - - /// - /// Tests LSLFloat is correctly cast explicitly to unsigned integer. - /// - [Test] - public void TestExplicitCastLSLFloatToUint() - { - uint testNumber; - - foreach (KeyValuePair number in m_doubleUintSet) - { - testNumber = (uint) new LSL_Types.LSLFloat(number.Key); - Assert.AreEqual(number.Value, testNumber, "Converting double " + number.Key + ", expecting uint " + number.Value); - } - } - - /// - /// Tests LSLFloat is correctly cast implicitly to Boolean if non-zero. - /// - [Test] - public void TestImplicitCastLSLFloatToBooleanTrue() - { - LSL_Types.LSLFloat testFloat; - bool testBool; - - foreach (double number in m_doubleList) - { - testFloat = new LSL_Types.LSLFloat(number); - testBool = testFloat; - - Assert.IsTrue(testBool); - } - } - - /// - /// Tests LSLFloat is correctly cast implicitly to Boolean if zero. - /// - [Test] - public void TestImplicitCastLSLFloatToBooleanFalse() - { - LSL_Types.LSLFloat testFloat = new LSL_Types.LSLFloat(0.0); - bool testBool = testFloat; - - Assert.IsFalse(testBool); - } - - /// - /// Tests integer is correctly cast implicitly to LSLFloat. - /// - [Test] - public void TestImplicitCastIntToLSLFloat() - { - LSL_Types.LSLFloat testFloat; - - foreach (int number in m_intList) - { - testFloat = number; - Assert.That(testFloat.value, new DoubleToleranceConstraint(number, _lowPrecisionTolerance)); - } - } - - /// - /// Tests LSLInteger is correctly cast implicitly to LSLFloat. - /// - [Test] - public void TestImplicitCastLSLIntegerToLSLFloat() - { - LSL_Types.LSLFloat testFloat; - - foreach (int number in m_intList) - { - testFloat = new LSL_Types.LSLInteger(number); - Assert.That(testFloat.value, new DoubleToleranceConstraint(number, _lowPrecisionTolerance)); - } - } - - /// - /// Tests LSLInteger is correctly cast explicitly to LSLFloat. - /// - [Test] - public void TestExplicitCastLSLIntegerToLSLFloat() - { - LSL_Types.LSLFloat testFloat; - - foreach (int number in m_intList) - { - testFloat = (LSL_Types.LSLFloat) new LSL_Types.LSLInteger(number); - Assert.That(testFloat.value, new DoubleToleranceConstraint(number, _lowPrecisionTolerance)); - } - } - - /// - /// Tests string is correctly cast explicitly to LSLFloat. - /// - [Test] - public void TestExplicitCastStringToLSLFloat() - { - LSL_Types.LSLFloat testFloat; - - foreach (KeyValuePair number in m_stringDoubleSet) - { - testFloat = (LSL_Types.LSLFloat) number.Key; - Assert.That(testFloat.value, new DoubleToleranceConstraint(number.Value, _lowPrecisionTolerance)); - } - } - - /// - /// Tests LSLString is correctly cast implicitly to LSLFloat. - /// - [Test] - public void TestExplicitCastLSLStringToLSLFloat() - { - LSL_Types.LSLFloat testFloat; - - foreach (KeyValuePair number in m_stringDoubleSet) - { - testFloat = (LSL_Types.LSLFloat) new LSL_Types.LSLString(number.Key); - Assert.That(testFloat.value, new DoubleToleranceConstraint(number.Value, _lowPrecisionTolerance)); - } - } - - /// - /// Tests double is correctly cast implicitly to LSLFloat. - /// - [Test] - public void TestImplicitCastDoubleToLSLFloat() - { - LSL_Types.LSLFloat testFloat; - - foreach (double number in m_doubleList) - { - testFloat = number; - Assert.That(testFloat.value, new DoubleToleranceConstraint(number, _lowPrecisionTolerance)); - } - } - - /// - /// Tests LSLFloat is correctly cast implicitly to double. - /// - [Test] - public void TestImplicitCastLSLFloatToDouble() - { - double testNumber; - LSL_Types.LSLFloat testFloat; - - foreach (double number in m_doubleList) - { - testFloat = new LSL_Types.LSLFloat(number); - testNumber = testFloat; - - Assert.That(testNumber, new DoubleToleranceConstraint(number, _lowPrecisionTolerance)); - } - } - - /// - /// Tests the equality (==) operator. - /// - [Test] - public void TestEqualsOperator() - { - LSL_Types.LSLFloat testFloatA, testFloatB; - - foreach (double number in m_doubleList) - { - testFloatA = new LSL_Types.LSLFloat(number); - testFloatB = new LSL_Types.LSLFloat(number); - Assert.IsTrue(testFloatA == testFloatB); - - testFloatB = new LSL_Types.LSLFloat(number + 1.0); - Assert.IsFalse(testFloatA == testFloatB); - } - } - - /// - /// Tests the inequality (!=) operator. - /// - [Test] - public void TestNotEqualOperator() - { - LSL_Types.LSLFloat testFloatA, testFloatB; - - foreach (double number in m_doubleList) - { - testFloatA = new LSL_Types.LSLFloat(number); - testFloatB = new LSL_Types.LSLFloat(number + 1.0); - Assert.IsTrue(testFloatA != testFloatB); - - testFloatB = new LSL_Types.LSLFloat(number); - Assert.IsFalse(testFloatA != testFloatB); - } - } - - /// - /// Tests the increment operator. - /// - [Test] - public void TestIncrementOperator() - { - LSL_Types.LSLFloat testFloat; - double testNumber; - - foreach (double number in m_doubleList) - { - testFloat = new LSL_Types.LSLFloat(number); - - testNumber = testFloat++; - Assert.That(testNumber, new DoubleToleranceConstraint(number, _lowPrecisionTolerance)); - - testNumber = testFloat; - Assert.That(testNumber, new DoubleToleranceConstraint(number + 1.0, _lowPrecisionTolerance)); - - testNumber = ++testFloat; - Assert.That(testNumber, new DoubleToleranceConstraint(number + 2.0, _lowPrecisionTolerance)); - } - } - - /// - /// Tests the decrement operator. - /// - [Test] - public void TestDecrementOperator() - { - LSL_Types.LSLFloat testFloat; - double testNumber; - - foreach (double number in m_doubleList) - { - testFloat = new LSL_Types.LSLFloat(number); - - testNumber = testFloat--; - Assert.That(testNumber, new DoubleToleranceConstraint(number, _lowPrecisionTolerance)); - - testNumber = testFloat; - Assert.That(testNumber, new DoubleToleranceConstraint(number - 1.0, _lowPrecisionTolerance)); - - testNumber = --testFloat; - Assert.That(testNumber, new DoubleToleranceConstraint(number - 2.0, _lowPrecisionTolerance)); - } - } - - /// - /// Tests LSLFloat.ToString(). - /// - [Test] - public void TestToString() - { - LSL_Types.LSLFloat testFloat; - - foreach (KeyValuePair number in m_doubleStringSet) - { - testFloat = new LSL_Types.LSLFloat(number.Key); - Assert.AreEqual(number.Value, testFloat.ToString()); - } - } - - /// - /// Tests addition of two LSLFloats. - /// - [Test] - public void TestAddTwoLSLFloats() - { - LSL_Types.LSLFloat testResult; - - foreach (KeyValuePair number in m_doubleDoubleSet) - { - testResult = new LSL_Types.LSLFloat(number.Key) + new LSL_Types.LSLFloat(number.Value); - Assert.That(testResult.value, new DoubleToleranceConstraint(number.Key + number.Value, _lowPrecisionTolerance)); - } - } - - /// - /// Tests subtraction of two LSLFloats. - /// - [Test] - public void TestSubtractTwoLSLFloats() - { - LSL_Types.LSLFloat testResult; - - foreach (KeyValuePair number in m_doubleDoubleSet) - { - testResult = new LSL_Types.LSLFloat(number.Key) - new LSL_Types.LSLFloat(number.Value); - Assert.That(testResult.value, new DoubleToleranceConstraint(number.Key - number.Value, _lowPrecisionTolerance)); - } - } - - /// - /// Tests multiplication of two LSLFloats. - /// - [Test] - public void TestMultiplyTwoLSLFloats() - { - LSL_Types.LSLFloat testResult; - - foreach (KeyValuePair number in m_doubleDoubleSet) - { - testResult = new LSL_Types.LSLFloat(number.Key) * new LSL_Types.LSLFloat(number.Value); - Assert.That(testResult.value, new DoubleToleranceConstraint(number.Key * number.Value, _lowPrecisionTolerance)); - } - } - - /// - /// Tests division of two LSLFloats. - /// - [Test] - public void TestDivideTwoLSLFloats() - { - LSL_Types.LSLFloat testResult; - - foreach (KeyValuePair number in m_doubleDoubleSet) - { - if (number.Value != 0.0) // Let's avoid divide by zero. - { - testResult = new LSL_Types.LSLFloat(number.Key) / new LSL_Types.LSLFloat(number.Value); - Assert.That(testResult.value, new DoubleToleranceConstraint(number.Key / number.Value, _lowPrecisionTolerance)); - } - } - } - - /// - /// Tests boolean correctly cast implicitly to LSLFloat. - /// - [Test] - public void TestImplicitCastBooleanToLSLFloat() - { - LSL_Types.LSLFloat testFloat; - - testFloat = (1 == 0); - Assert.That(testFloat.value, new DoubleToleranceConstraint(0.0, _lowPrecisionTolerance)); - - testFloat = (1 == 1); - Assert.That(testFloat.value, new DoubleToleranceConstraint(1.0, _lowPrecisionTolerance)); - - testFloat = false; - Assert.That(testFloat.value, new DoubleToleranceConstraint(0.0, _lowPrecisionTolerance)); - - testFloat = true; - Assert.That(testFloat.value, new DoubleToleranceConstraint(1.0, _lowPrecisionTolerance)); - } - } -} diff --git a/OpenSim/Region/ScriptEngine/Common/Tests/LSL_TypesTestLSLInteger.cs b/OpenSim/Region/ScriptEngine/Common/Tests/LSL_TypesTestLSLInteger.cs deleted file mode 100644 index a769608490..0000000000 --- a/OpenSim/Region/ScriptEngine/Common/Tests/LSL_TypesTestLSLInteger.cs +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSim Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System.Collections.Generic; -using NUnit.Framework; -using OpenSim.Tests.Common; -using OpenSim.Region.ScriptEngine.Common; - -namespace OpenSim.Region.ScriptEngine.Common.Tests -{ - [TestFixture] - public class LSL_TypesTestLSLInteger - { - private Dictionary m_doubleIntSet; - private Dictionary m_stringIntSet; - - /// - /// Sets up dictionaries and arrays used in the tests. - /// - [TestFixtureSetUp] - public void SetUpDataSets() - { - m_doubleIntSet = new Dictionary(); - m_doubleIntSet.Add(2.0, 2); - m_doubleIntSet.Add(-2.0, -2); - m_doubleIntSet.Add(0.0, 0); - m_doubleIntSet.Add(1.0, 1); - m_doubleIntSet.Add(-1.0, -1); - m_doubleIntSet.Add(999999999.0, 999999999); - m_doubleIntSet.Add(-99999999.0, -99999999); - - m_stringIntSet = new Dictionary(); - m_stringIntSet.Add("2", 2); - m_stringIntSet.Add("-2", -2); - m_stringIntSet.Add("0", 0); - m_stringIntSet.Add("1", 1); - m_stringIntSet.Add("-1", -1); - m_stringIntSet.Add("123.9", 123); - m_stringIntSet.Add("999999999", 999999999); - m_stringIntSet.Add("-99999999", -99999999); - m_stringIntSet.Add("", 0); - m_stringIntSet.Add("aa", 0); - m_stringIntSet.Add("42", 42); - m_stringIntSet.Add("42 is the answer", 42); - m_stringIntSet.Add(" 42", 42); - m_stringIntSet.Add("42,123,456", 42); - m_stringIntSet.Add("0xff", 255); - m_stringIntSet.Add("12345678900000", -1); - } - - /// - /// Tests LSLFloat is correctly cast explicitly to LSLInteger. - /// - [Test] - public void TestExplicitCastLSLFloatToLSLInteger() - { - LSL_Types.LSLInteger testInteger; - - foreach (KeyValuePair number in m_doubleIntSet) - { - testInteger = (LSL_Types.LSLInteger) new LSL_Types.LSLFloat(number.Key); - Assert.AreEqual(testInteger.value, number.Value); - } - } - - /// - /// Tests string is correctly cast explicitly to LSLInteger. - /// - [Test] - public void TestExplicitCastStringToLSLInteger() - { - LSL_Types.LSLInteger testInteger; - - foreach (KeyValuePair number in m_stringIntSet) - { - testInteger = (LSL_Types.LSLInteger) number.Key; - Assert.AreEqual(testInteger.value, number.Value); - } - } - - /// - /// Tests LSLString is correctly cast explicitly to LSLInteger. - /// - [Test] - public void TestExplicitCastLSLStringToLSLInteger() - { - LSL_Types.LSLInteger testInteger; - - foreach (KeyValuePair number in m_stringIntSet) - { - testInteger = (LSL_Types.LSLInteger) new LSL_Types.LSLString(number.Key); - Assert.AreEqual(testInteger.value, number.Value); - } - } - - /// - /// Tests boolean correctly cast implicitly to LSLInteger. - /// - [Test] - public void TestImplicitCastBooleanToLSLInteger() - { - LSL_Types.LSLInteger testInteger; - - testInteger = (1 == 0); - Assert.AreEqual(0, testInteger.value); - - testInteger = (1 == 1); - Assert.AreEqual(1, testInteger.value); - - testInteger = false; - Assert.AreEqual(0, testInteger.value); - - testInteger = true; - Assert.AreEqual(1, testInteger.value); - } - } -} diff --git a/OpenSim/Region/ScriptEngine/Common/Tests/LSL_TypesTestLSLString.cs b/OpenSim/Region/ScriptEngine/Common/Tests/LSL_TypesTestLSLString.cs deleted file mode 100644 index 3aa52cb7e8..0000000000 --- a/OpenSim/Region/ScriptEngine/Common/Tests/LSL_TypesTestLSLString.cs +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSim Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System.Collections.Generic; -using NUnit.Framework; -using OpenSim.Tests.Common; -using OpenSim.Region.ScriptEngine.Common; - -namespace OpenSim.Region.ScriptEngine.Common.Tests -{ - [TestFixture] - public class LSL_TypesTestLSLString - { - private Dictionary m_doubleStringSet; - - /// - /// Sets up dictionaries and arrays used in the tests. - /// - [TestFixtureSetUp] - public void SetUpDataSets() - { - m_doubleStringSet = new Dictionary(); - m_doubleStringSet.Add(2, "2.000000"); - m_doubleStringSet.Add(-2, "-2.000000"); - m_doubleStringSet.Add(0, "0.000000"); - m_doubleStringSet.Add(1, "1.000000"); - m_doubleStringSet.Add(-1, "-1.000000"); - m_doubleStringSet.Add(999999999, "999999999.000000"); - m_doubleStringSet.Add(-99999999, "-99999999.000000"); - m_doubleStringSet.Add(0.5, "0.500000"); - m_doubleStringSet.Add(0.0005, "0.000500"); - m_doubleStringSet.Add(0.6805, "0.680500"); - m_doubleStringSet.Add(-0.5, "-0.500000"); - m_doubleStringSet.Add(-0.0005, "-0.000500"); - m_doubleStringSet.Add(-0.6805, "-0.680500"); - m_doubleStringSet.Add(548.5, "548.500000"); - m_doubleStringSet.Add(2.0005, "2.000500"); - m_doubleStringSet.Add(349485435.6805, "349485435.680500"); - m_doubleStringSet.Add(-548.5, "-548.500000"); - m_doubleStringSet.Add(-2.0005, "-2.000500"); - m_doubleStringSet.Add(-349485435.6805, "-349485435.680500"); - } - - /// - /// Tests constructing a LSLString from an LSLFloat. - /// - [Test] - public void TestConstructFromLSLFloat() - { - LSL_Types.LSLString testString; - - foreach (KeyValuePair number in m_doubleStringSet) - { - testString = new LSL_Types.LSLString(new LSL_Types.LSLFloat(number.Key)); - Assert.AreEqual(number.Value, testString.m_string); - } - } - - /// - /// Tests constructing a LSLString from an LSLFloat. - /// - [Test] - public void TestExplicitCastLSLFloatToLSLString() - { - LSL_Types.LSLString testString; - - foreach (KeyValuePair number in m_doubleStringSet) - { - testString = (LSL_Types.LSLString) new LSL_Types.LSLFloat(number.Key); - Assert.AreEqual(number.Value, testString.m_string); - } - } - - /// - /// Test constructing a Quaternion from a string. - /// - [Test] - public void TestExplicitCastLSLStringToQuaternion() - { - string quaternionString = "<0.00000, 0.70711, 0.00000, 0.70711>"; - LSL_Types.LSLString quaternionLSLString = new LSL_Types.LSLString(quaternionString); - - LSL_Types.Quaternion expectedQuaternion = new LSL_Types.Quaternion(0.0, 0.70711, 0.0, 0.70711); - LSL_Types.Quaternion stringQuaternion = (LSL_Types.Quaternion) quaternionString; - LSL_Types.Quaternion LSLStringQuaternion = (LSL_Types.Quaternion) quaternionLSLString; - - Assert.AreEqual(expectedQuaternion, stringQuaternion); - Assert.AreEqual(expectedQuaternion, LSLStringQuaternion); - } - - /// - /// Tests boolean correctly cast explicitly to LSLString. - /// - [Test] - public void TestImplicitCastBooleanToLSLFloat() - { - LSL_Types.LSLString testString; - - testString = (LSL_Types.LSLString) (1 == 0); - Assert.AreEqual("0", testString.m_string); - - testString = (LSL_Types.LSLString) (1 == 1); - Assert.AreEqual("1", testString.m_string); - - testString = (LSL_Types.LSLString) false; - Assert.AreEqual("0", testString.m_string); - - testString = (LSL_Types.LSLString) true; - Assert.AreEqual("1", testString.m_string); - } - } -} diff --git a/OpenSim/Region/ScriptEngine/Common/Tests/LSL_TypesTestList.cs b/OpenSim/Region/ScriptEngine/Common/Tests/LSL_TypesTestList.cs deleted file mode 100644 index 500d19a5d9..0000000000 --- a/OpenSim/Region/ScriptEngine/Common/Tests/LSL_TypesTestList.cs +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSim Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System.Collections.Generic; -using NUnit.Framework; -using OpenSim.Tests.Common; -using OpenSim.Region.ScriptEngine.Common; - -namespace OpenSim.Region.ScriptEngine.Common.Tests -{ - /// - /// Tests the LSL_Types.list class. - /// - [TestFixture] - public class LSL_TypesTestList - { - /// - /// Tests concatenating a string to a list. - /// - [Test] - public void TestConcatenateString() - { - LSL_Types.list testList = new LSL_Types.list(1, 'a', "test"); - testList += new LSL_Types.LSLString("addition"); - - Assert.AreEqual(4, testList.Length); - Assert.AreEqual(new LSL_Types.LSLString("addition"), testList.Data[3]); - Assert.AreEqual(typeof(LSL_Types.LSLString), testList.Data[3].GetType()); - - LSL_Types.list secondTestList = testList + new LSL_Types.LSLString("more"); - - Assert.AreEqual(5, secondTestList.Length); - Assert.AreEqual(new LSL_Types.LSLString("more"), secondTestList.Data[4]); - Assert.AreEqual(typeof(LSL_Types.LSLString), secondTestList.Data[4].GetType()); - } - - /// - /// Tests concatenating an integer to a list. - /// - [Test] - public void TestConcatenateInteger() - { - LSL_Types.list testList = new LSL_Types.list(1, 'a', "test"); - testList += new LSL_Types.LSLInteger(20); - - Assert.AreEqual(4, testList.Length); - Assert.AreEqual(new LSL_Types.LSLInteger(20), testList.Data[3]); - Assert.AreEqual(typeof(LSL_Types.LSLInteger), testList.Data[3].GetType()); - - LSL_Types.list secondTestList = testList + new LSL_Types.LSLInteger(2); - - Assert.AreEqual(5, secondTestList.Length); - Assert.AreEqual(new LSL_Types.LSLInteger(2), secondTestList.Data[4]); - Assert.AreEqual(typeof(LSL_Types.LSLInteger), secondTestList.Data[4].GetType()); - } - - /// - /// Tests concatenating a double to a list. - /// - [Test] - public void TestConcatenateDouble() - { - LSL_Types.list testList = new LSL_Types.list(1, 'a', "test"); - testList += new LSL_Types.LSLFloat(2.0); - - Assert.AreEqual(4, testList.Length); - Assert.AreEqual(new LSL_Types.LSLFloat(2.0), testList.Data[3]); - Assert.AreEqual(typeof(LSL_Types.LSLFloat), testList.Data[3].GetType()); - - LSL_Types.list secondTestList = testList + new LSL_Types.LSLFloat(0.04); - - Assert.AreEqual(5, secondTestList.Length); - Assert.AreEqual(new LSL_Types.LSLFloat(0.04), secondTestList.Data[4]); - Assert.AreEqual(typeof(LSL_Types.LSLFloat), secondTestList.Data[4].GetType()); - } - } -} diff --git a/OpenSim/Region/ScriptEngine/Common/Tests/LSL_TypesTestVector3.cs b/OpenSim/Region/ScriptEngine/Common/Tests/LSL_TypesTestVector3.cs deleted file mode 100644 index 0a41f92c2e..0000000000 --- a/OpenSim/Region/ScriptEngine/Common/Tests/LSL_TypesTestVector3.cs +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSim Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System.Collections.Generic; -using NUnit.Framework; -using OpenSim.Tests.Common; -using OpenSim.Region.ScriptEngine.Common; -using vector = OpenSim.Region.ScriptEngine.Common.LSL_Types.Vector3; - -namespace OpenSim.Region.ScriptEngine.Common.Tests -{ - [TestFixture] - public class LSL_TypesTestVector3 - { - /// - /// Tests for Vector3 - /// - [Test] - public void TestDotProduct() - { - // The numbers we test for. - Dictionary expectsSet = new Dictionary(); - expectsSet.Add("<1, 2, 3> * <2, 3, 4>", 20.0); - expectsSet.Add("<1, 2, 3> * <0, 0, 0>", 0.0); - - double result; - string[] parts; - string[] delim = { "*" }; - - foreach (KeyValuePair ex in expectsSet) - { - parts = ex.Key.Split(delim, System.StringSplitOptions.None); - result = new vector(parts[0]) * new vector(parts[1]); - Assert.AreEqual(ex.Value, result); - } - } - - [Test] - public void TestUnaryMinusOperator() - { - Assert.AreEqual(new vector(-1, -1, -1), - (new vector(1, 1, 1))); - Assert.AreEqual(new vector(0, 0, 0), - (new vector(0, 0, 0))); - } - } -} diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs index d689f93ee0..803fdb1953 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs @@ -332,7 +332,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL private static string CreateJSCompilerScript(string compileScript) { compileScript = String.Empty + - "import OpenSim.Region.ScriptEngine.Common; import System.Collections.Generic;\r\n" + + "import OpenSim.Region.ScriptEngine.Common; import OpenSim.Region.ScriptEngine.Shared; import System.Collections.Generic;\r\n" + "package SecondLife {\r\n" + "class Script extends OpenSim.Region.ScriptEngine.Common.BuiltIn_Commands_BaseClass { \r\n" + compileScript + @@ -343,7 +343,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL private static string CreateCSCompilerScript(string compileScript) { compileScript = String.Empty + - "using OpenSim.Region.ScriptEngine.Common; using System.Collections.Generic;\r\n" + + "using OpenSim.Region.ScriptEngine.Common; using OpenSim.Region.ScriptEngine.Shared; using System.Collections.Generic;\r\n" + String.Empty + "namespace SecondLife { " + String.Empty + "public class Script : OpenSim.Region.ScriptEngine.Common.BuiltIn_Commands_BaseClass { \r\n" + @"public Script() { } " + @@ -356,7 +356,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL { compileScript = String.Empty + "using OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.YieldProlog; " + - "using OpenSim.Region.ScriptEngine.Common; using System.Collections.Generic;\r\n" + + "using OpenSim.Region.ScriptEngine.Common; using OpenSim.Region.ScriptEngine.Shared; using System.Collections.Generic;\r\n" + String.Empty + "namespace SecondLife { " + String.Empty + "public class Script : OpenSim.Region.ScriptEngine.Common.BuiltIn_Commands_BaseClass { \r\n" + //@"public Script() { } " + @@ -371,7 +371,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL private static string CreateVBCompilerScript(string compileScript) { compileScript = String.Empty + - "Imports OpenSim.Region.ScriptEngine.Common: Imports System.Collections.Generic: " + + "Imports OpenSim.Region.ScriptEngine.Common: Imports OpenSim.Region.ScriptEngine.Shared: Imports System.Collections.Generic: " + String.Empty + "NameSpace SecondLife:" + String.Empty + "Public Class Script: Inherits OpenSim.Region.ScriptEngine.Common.BuiltIn_Commands_BaseClass: " + "\r\nPublic Sub New()\r\nEnd Sub: " + @@ -440,6 +440,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL string rootPathSE = Path.GetDirectoryName(GetType().Assembly.Location); //Console.WriteLine("Assembly location: " + rootPath); parameters.ReferencedAssemblies.Add(Path.Combine(rootPath, "OpenSim.Region.ScriptEngine.Common.dll")); + parameters.ReferencedAssemblies.Add(Path.Combine(rootPath, "OpenSim.Region.ScriptEngine.Shared.dll")); parameters.ReferencedAssemblies.Add(Path.Combine(rootPathSE, "OpenSim.Region.ScriptEngine.DotNetEngine.dll")); //parameters.ReferencedAssemblies.Add("OpenSim.Region.Environment"); diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs index beba2e6c0f..5bdc753e3d 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs @@ -32,6 +32,7 @@ using OpenMetaverse; using OpenSim.Framework; using OpenSim.Region.Environment.Scenes; using OpenSim.Region.ScriptEngine.Common; +using OpenSim.Region.ScriptEngine.Shared; using OpenSim.Region.ScriptEngine.Common.ScriptEngineBase; namespace OpenSim.Region.ScriptEngine.DotNetEngine diff --git a/prebuild.xml b/prebuild.xml index 9964a15fbe..451760d058 100644 --- a/prebuild.xml +++ b/prebuild.xml @@ -1910,6 +1910,7 @@ + @@ -1923,27 +1924,6 @@ - - - - ../../../../../bin/ - - - - - ../../../../../bin/ - - - - ../../../../../bin/ - - - - - - - - @@ -1968,6 +1948,7 @@ +