[Test] public void PassByValue() { S a = done.Via(); S b = a; o(a, b); o(b, a); o(a.Equals(b)); o(b.Equals(a)); o(!Object.ReferenceEquals(a, b)); }
bool Equals(S exp, S value) { if (exp.Equals(value) == false) { return(false); } else if ((exp == value) == false) { return(false); } else if ((exp != value) == true) { return(false); } return(true); }
public static status ε(status s, [P] S path = "", [M] S member = "", [L] int line = 0) => Eval(s, path, member, line);
public static status Eval(status s, [P] S path = "", [M] S member = "", [L] int line = 0) => log?Lg.Status(s, null, path, member, line) : s;
internal StatusRef(status value, LogData logData) { x = value; this.logData = logData; }
public abstract void OnStatus(status s);
override public void OnStatus(status s) => OnStatus(s.running);
public Self.Gate?Tie(status @in, [Tag] int key = -1) => store.Decorator <Self>(key, Self.id)[@in, crit : true];
public Self.Gate?While(status @in, [Tag] int key = -1) => store.Decorator <Self>(key, Self.id)[@in, crit : false];
public Gate? this[status @in, bool crit] { get{ StatusRef.hold = @in; return(@in.running ? Eval(crit) : Bypass()); } }
override public void OnStatus(status s) => passing &= s.running;