コード例 #1
0
ファイル: CompiledProgram.cs プロジェクト: SoftCircuits/Silk
        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
ファイル: Value.cs プロジェクト: SoftCircuits/Silk
 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
ファイル: IntegerValue.cs プロジェクト: SoftCircuits/Silk
 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
ファイル: StringValue.cs プロジェクト: SoftCircuits/Silk
 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
ファイル: StringValue.cs プロジェクト: battyone/Silk
 public override Variable Modulus(Variable value) => (IsFloat() || value.IsFloat()) ? new Variable(ToFloat() % value.ToFloat()) : new Variable(ToInteger() % value.ToInteger());
コード例 #14
0
ファイル: StringValue.cs プロジェクト: battyone/Silk
 public override Variable Multiply(Variable value) => (IsFloat() || value.IsFloat()) ? new Variable(ToFloat() * value.ToFloat()) : new Variable(ToInteger() * value.ToInteger());
コード例 #15
0
ファイル: StringValue.cs プロジェクト: battyone/Silk
 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());