Upsilon/Upsilon/BaseTypes/ScriptBoolean.cs

58 lines
1.4 KiB
C#
Raw Normal View History

namespace Upsilon.BaseTypes
{
public class ScriptBoolean : ScriptType
{
2018-11-23 17:18:07 +00:00
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; }
2018-11-23 17:18:07 +00:00
public static implicit operator bool(ScriptBoolean b)
{
return b.Value;
}
2018-11-23 17:18:07 +00:00
public static implicit operator ScriptBoolean(bool b)
{
2018-11-23 17:18:07 +00:00
return new ScriptBoolean(b);
}
2018-11-23 17:18:07 +00:00
public static ScriptBoolean operator ! (ScriptBoolean n)
{
2018-11-23 17:18:07 +00:00
return new ScriptBoolean(!n.Value);
}
public override string ToString()
{
return Value.ToString();
}
2018-12-09 10:45:38 +00:00
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;
2018-12-09 12:47:13 +00:00
if (obj is bool b) return b == Value;
2018-12-09 10:45:38 +00:00
if (obj.GetType() != this.GetType()) return false;
return Equals((ScriptBoolean) obj);
}
}
}