Upsilon/Upsilon/BaseTypes/ScriptBoolean.cs

58 lines
1.4 KiB
C#

namespace Upsilon.BaseTypes
{
public class ScriptBoolean : ScriptType
{
public ScriptBoolean(bool value)
{
Value = value;
}
public override TypeContainer Type => BaseTypes.Type.Boolean;
public override object ToCSharpObject()
{
return Value;
}
public override System.Type GetCSharpType()
{
return typeof(bool);
}
public bool Value { get; }
public static implicit operator bool(ScriptBoolean b)
{
return b.Value;
}
public static implicit operator ScriptBoolean(bool b)
{
return new ScriptBoolean(b);
}
public static ScriptBoolean operator ! (ScriptBoolean n)
{
return new ScriptBoolean(!n.Value);
}
public override string ToString()
{
return Value.ToString();
}
protected bool Equals(ScriptBoolean other)
{
return other.Value == Value;
}
public override bool Equals(object obj)
{
if (ReferenceEquals(null, obj)) return false;
if (ReferenceEquals(this, obj)) return true;
if (obj is bool b) return b == Value;
if (obj.GetType() != this.GetType()) return false;
return Equals((ScriptBoolean) obj);
}
}
}