Adrianas 0000272 -- I think we need to implement standard string/integer/float functions too.
parent
9eba3d2f89
commit
86a38dfd0f
|
@ -27,6 +27,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
namespace OpenSim.Region.ScriptEngine.Common
|
namespace OpenSim.Region.ScriptEngine.Common
|
||||||
{
|
{
|
||||||
|
@ -35,6 +36,309 @@ namespace OpenSim.Region.ScriptEngine.Common
|
||||||
{
|
{
|
||||||
|
|
||||||
// Types are kept is separate .dll to avoid having to add whatever .dll it is in it to script AppDomain
|
// Types are kept is separate .dll to avoid having to add whatever .dll it is in it to script AppDomain
|
||||||
|
[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 System.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 System.String(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)
|
||||||
|
{
|
||||||
|
if (o is String)
|
||||||
|
{
|
||||||
|
string s = (string)o;
|
||||||
|
return s == this.value;
|
||||||
|
}
|
||||||
|
if (o is key)
|
||||||
|
{
|
||||||
|
key k = (key)o;
|
||||||
|
return this.value == k.value;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int GetHashCode()
|
||||||
|
{
|
||||||
|
return value.GetHashCode();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
[Serializable]
|
||||||
|
public struct LSLString
|
||||||
|
{
|
||||||
|
public string value;
|
||||||
|
|
||||||
|
#region Constructors
|
||||||
|
|
||||||
|
public LSLString(string s)
|
||||||
|
{
|
||||||
|
value = s;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Operators
|
||||||
|
static public implicit operator System.Boolean(LSLString s)
|
||||||
|
{
|
||||||
|
if (s.value.Length == 0)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static public implicit operator System.String(LSLString s)
|
||||||
|
{
|
||||||
|
return s.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
static public implicit operator LSLString(string s)
|
||||||
|
{
|
||||||
|
return new LSLString(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool operator ==(LSLString s1, LSLString s2)
|
||||||
|
{
|
||||||
|
return s1.value == s2.value;
|
||||||
|
}
|
||||||
|
public static bool operator !=(LSLString s1, LSLString s2)
|
||||||
|
{
|
||||||
|
return s1.value != s2.value;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Overriders
|
||||||
|
public override bool Equals(object o)
|
||||||
|
{
|
||||||
|
if (o is String)
|
||||||
|
{
|
||||||
|
string s = (string)o;
|
||||||
|
return s == this.value;
|
||||||
|
}
|
||||||
|
if (o is key)
|
||||||
|
{
|
||||||
|
key k = (key)o;
|
||||||
|
return this.value == k.value;
|
||||||
|
}
|
||||||
|
if (o is LSLString)
|
||||||
|
{
|
||||||
|
LSLString s = (string)o;
|
||||||
|
return this.value == s.value;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int GetHashCode()
|
||||||
|
{
|
||||||
|
return value.GetHashCode();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
[Serializable]
|
||||||
|
public struct LSLInteger
|
||||||
|
{
|
||||||
|
public int value;
|
||||||
|
|
||||||
|
#region Constructors
|
||||||
|
public LSLInteger(int i)
|
||||||
|
{
|
||||||
|
value = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LSLInteger(double d)
|
||||||
|
{
|
||||||
|
value = (int)d;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
static public implicit operator System.Int32(LSLInteger i)
|
||||||
|
{
|
||||||
|
return i.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
static public implicit operator System.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 implicit operator LSLInteger(double d)
|
||||||
|
{
|
||||||
|
return new LSLInteger(d);
|
||||||
|
}
|
||||||
|
|
||||||
|
static public LSLInteger operator &(LSLInteger i1, LSLInteger i2)
|
||||||
|
{
|
||||||
|
int ret = i1.value & i2.value;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//static public implicit operator System.Double(LSLInteger i)
|
||||||
|
//{
|
||||||
|
// return (double)i.value;
|
||||||
|
//}
|
||||||
|
|
||||||
|
#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;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Operators
|
||||||
|
|
||||||
|
static public implicit operator System.Double(LSLFloat f)
|
||||||
|
{
|
||||||
|
return f.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
//static public implicit operator System.Int32(LSLFloat f)
|
||||||
|
//{
|
||||||
|
// return (int)f.value;
|
||||||
|
//}
|
||||||
|
|
||||||
|
|
||||||
|
static public implicit operator System.Boolean(LSLFloat f)
|
||||||
|
{
|
||||||
|
if (f.value == 0)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static public implicit operator LSLFloat(int i)
|
||||||
|
{
|
||||||
|
return new LSLFloat(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
static public implicit operator LSLFloat(double d)
|
||||||
|
{
|
||||||
|
return new LSLFloat(d);
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Overriders
|
||||||
|
public override string ToString()
|
||||||
|
{
|
||||||
|
return this.value.ToString();
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public struct Vector3
|
public struct Vector3
|
||||||
|
|
Loading…
Reference in New Issue