Пример #1
0
        private void WriteVariable(Variable value, BinaryWriter writer)
        {
            writer.Write((int)value.Type);
            switch (value.Type)
            {
            case VarType.String:
                writer.Write(value.ToString());
                break;

            case VarType.Integer:
                writer.Write(value.ToInteger());
                break;

            case VarType.Float:
                writer.Write(value.ToFloat());
                break;

            case VarType.List:
                writer.Write(value.ListCount);
                foreach (var item in value.GetList())
                {
                    WriteVariable(item, writer);
                }
                break;

            default:
                throw new Exception("Unable to write unknown variable type.");
            }
        }
Пример #2
0
 public int CompareTo(Variable value)
 {
     return(value.Type switch
     {
         VarType.String => CompareTo(value.ToString()),
         VarType.Integer => CompareTo(value.ToInteger()),
         VarType.Float => CompareTo(value.ToFloat()),
         VarType.List => CompareTo((ListValue)value.Value),
         _ => throw new InvalidOperationException(),
     });
Пример #3
0
 public override Variable Add(Variable value) => value.IsFloat() ? new Variable(Value + value.ToFloat()) : new Variable(Value + value.ToInteger());
Пример #4
0
 public override Variable Add(Variable value) => new Variable(Value + value.ToFloat());
Пример #5
0
 public override Variable Modulus(Variable value) => new Variable(Value % value.ToFloat());
Пример #6
0
 public override bool IsEqual(Variable value) => (Value == value.ToFloat());
Пример #7
0
 public override Variable Divide(Variable value) => new Variable(Value / value.ToFloat());
Пример #8
0
 public override Variable Power(Variable value) => new Variable(Math.Pow(Value, value.ToFloat()));
Пример #9
0
 public override Variable Subtract(Variable value) => new Variable(Value - value.ToFloat());
Пример #10
0
 public override Variable Multiply(Variable value) => new Variable(Value * value.ToFloat());
Пример #11
0
 public override Variable Add(Variable value) => (IsFloat() || value.IsFloat()) ? new Variable(ToFloat() + value.ToFloat()) : new Variable(ToInteger() + value.ToInteger());
Пример #12
0
 public override Variable Subtract(Variable value) => value.IsFloat() ? new Variable(Value - value.ToFloat()) : new Variable(Value - value.ToInteger());
Пример #13
0
 public override Variable Modulus(Variable value) => (IsFloat() || value.IsFloat()) ? new Variable(ToFloat() % value.ToFloat()) : new Variable(ToInteger() % value.ToInteger());
Пример #14
0
 public override Variable Multiply(Variable value) => (IsFloat() || value.IsFloat()) ? new Variable(ToFloat() * value.ToFloat()) : new Variable(ToInteger() * value.ToInteger());
Пример #15
0
 public override Variable Subtract(Variable value) => (IsFloat() || value.IsFloat()) ? new Variable(ToFloat() - value.ToFloat()) : new Variable(ToInteger() - value.ToInteger());
Пример #16
0
 public override Variable Modulus(Variable value) => value.IsFloat() ? new Variable(Value % value.ToFloat()) : new Variable(Value % value.ToInteger());
Пример #17
0
 public override Variable Multiply(Variable value) => value.IsFloat() ? new Variable(Value * value.ToFloat()) : new Variable(Value * value.ToInteger());