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); } } }