public override DObject OpMOD(DObject other) { if (HasMember("mod")) { return(AssertType <DBool>(CLRCallFunction("mod", other))); } return(base.OpMOD(other)); }
public override DBool OpGR(DObject other) { if (HasMember("greaterThan")) { return(AssertType <DBool>(CLRCallFunction("greaterThan", other))); } return(base.OpGR(other)); }
public override DObject OpADD(DObject other) { if (HasMember("add")) { return(CLRCallFunction("add", other)); } return(base.OpADD(other)); }
public override DObject OpSUB(DObject other) { if (HasMember("sub")) { return(CLRCallFunction("sub", other)); } return(base.OpSUB(other)); }
public override DBool OpEQ(DObject other) { if (HasMember("equals")) { return(AssertType <DBool>(CLRCallFunction("equals", other))); } return(base.OpEQ(other)); }
public override DObject OpDIV(DObject other) { if (HasMember("divide")) { return(CLRCallFunction("divide", other)); } return(base.OpDIV(other)); }
public override DObject OpMUL(DObject other) { if (HasMember("multiply")) { return(CLRCallFunction("multiply", other)); } return(base.OpMUL(other)); }
public override DObject OpPOW(DObject other) { if (HasMember("exponent")) { return(AssertType <DBool>(CLRCallFunction("exponent", other))); } return(base.OpPOW(other)); }
public override Member OpINDEX(DObject other) { var key = pairs.Keys.ToList().Find(x => x.Equals(other)); if (key == null) { throw new InterpreterException(Interpreter.current.CurrentToken, "No key exists: " + other.ToString()); } return(pairs[key]); }
public void Remove(DObject value) { Member m = null; foreach (var item in items) { if (item.Value.Equals(value)) { m = item; break; } } if (m != null) { items.Remove(m); } }
public void Write(DObject obj) { Console.Write(obj.ToString()); }
public override DObject OpMOD(DObject other) { return((value % AssertType <DNumber>(other).value).ToDNumber()); }
public void Print(DObject obj) { Console.WriteLine(obj.ToString()); }
public override DBool OpLS(DObject other) { return((value < AssertType <DNumber>(other).value).ToDBool()); }
public override DObject OpPOW(DObject other) { return(Math.Pow(value, AssertType <DNumber>(other).value).ToDNumber()); }
// EQUALITY OPERATORS public virtual DBool OpEQ(DObject other) { return(Equals(other).ToDBool()); }
public virtual Member OpINDEX(DObject other) { throw Interpreter.current.Exception("Type " + GetType() + " cannot be indexed"); }
public override Member OpINDEX(DObject other) { return(items[AssertType <DNumber>(other).ToInt()]); }
public override Member OpINDEX(DObject other) { return(GetMember(other.ToString())); //throw new Exception("A table cannot be indexed. Instead, make getter and setter methods."); }
public virtual DBool OpLS(DObject other) { throw OpException(GetType(), other.GetType()); }
public void Remove(DObject key) { pairs.Remove(key); }
public virtual DBool OpNEQ(DObject other) { return(OpEQ(other).OpNOT()); }
public virtual DBool OpLEQ(DObject other) { return(OpLS(other).OpOR(OpEQ(other))); }
public virtual DObject OpMUL(DObject other) { throw OpException(GetType(), other.GetType()); }
public void Add(DObject key, DObject value) { pairs.Add(key, new Member(value)); }
public override DObject OpADD(DObject other) { return(new DString(value + other.ToString())); }
public DString(DSet charArray) { value = new string(charArray.items.Select(x => DObject.AssertType <DChar>(x.Value).value).ToArray()); }
public void Add(DObject value) { items.Add(new Member(value)); }
public override Member OpINDEX(DObject other) { int index = AssertType <DNumber>(other).ToInt(); return(new StringChar(this, index)); }
public DObject Set(DNumber index, DObject value) { return(items[index.ToInt()].Value = value); }