namespace tlang { public class BitwiseNot : Node { public Node Node {get;set;} public BitwiseNot(Node node) { this.Node = node; } public override TObject Execute(IScopeEnvironment nodeEnv) { var l = Node.Execute(nodeEnv); var lnum = l as TNumber; var dleft = l as TDictionary; if(dleft != null) { if(dleft.MemberExists("bnot")) { var mbm = dleft["bnot"] as ICallable; if(mbm != null) { return mbm.Call(); } } } if(lnum != null) return TObject.Number(~(long)lnum.Value); return TObject.Null; } } }