static public Either <Errors.FormatError, Op> DeserializeV1(Format.Schema.OpBinary op) { return(op.Kind switch { Format.Schema.OpBinary.Types.Kind.LessThan => new Op.Binary(BinaryOp.LessThan), Format.Schema.OpBinary.Types.Kind.GreaterThan => new Op.Binary(BinaryOp.GreaterThan), Format.Schema.OpBinary.Types.Kind.LessOrEqual => new Op.Binary(BinaryOp.LessOrEqual), Format.Schema.OpBinary.Types.Kind.GreaterOrEqual => new Op.Binary(BinaryOp.GreaterOrEqual), Format.Schema.OpBinary.Types.Kind.Equal => new Op.Binary(BinaryOp.Equal), Format.Schema.OpBinary.Types.Kind.Contains => new Op.Binary(BinaryOp.Contains), Format.Schema.OpBinary.Types.Kind.Prefix => new Op.Binary(BinaryOp.Prefix), Format.Schema.OpBinary.Types.Kind.Suffix => new Op.Binary(BinaryOp.Suffix), Format.Schema.OpBinary.Types.Kind.Regex => new Op.Binary(BinaryOp.Regex), Format.Schema.OpBinary.Types.Kind.Add => new Op.Binary(BinaryOp.Add), Format.Schema.OpBinary.Types.Kind.Sub => new Op.Binary(BinaryOp.Sub), Format.Schema.OpBinary.Types.Kind.Mul => new Op.Binary(BinaryOp.Mul), Format.Schema.OpBinary.Types.Kind.Div => new Op.Binary(BinaryOp.Div), Format.Schema.OpBinary.Types.Kind.And => new Op.Binary(BinaryOp.And), Format.Schema.OpBinary.Types.Kind.Or => new Op.Binary(BinaryOp.Or), Format.Schema.OpBinary.Types.Kind.Intersection => new Op.Binary(BinaryOp.Intersection), Format.Schema.OpBinary.Types.Kind.Union => new Op.Binary(BinaryOp.Union), _ => new DeserializationError("invalid binary operation"), });
public override Format.Schema.Op Serialize() { Format.Schema.Op b = new Format.Schema.Op(); Format.Schema.OpBinary b1 = new Format.Schema.OpBinary(); switch (this.op) { case BinaryOp.LessThan: b1.Kind = Format.Schema.OpBinary.Types.Kind.LessThan; break; case BinaryOp.GreaterThan: b1.Kind = Format.Schema.OpBinary.Types.Kind.GreaterThan; break; case BinaryOp.LessOrEqual: b1.Kind = Format.Schema.OpBinary.Types.Kind.LessOrEqual; break; case BinaryOp.GreaterOrEqual: b1.Kind = Format.Schema.OpBinary.Types.Kind.GreaterOrEqual; break; case BinaryOp.Equal: b1.Kind = Format.Schema.OpBinary.Types.Kind.Equal; break; case BinaryOp.Contains: b1.Kind = Format.Schema.OpBinary.Types.Kind.Contains; break; case BinaryOp.Prefix: b1.Kind = Format.Schema.OpBinary.Types.Kind.Prefix; break; case BinaryOp.Suffix: b1.Kind = Format.Schema.OpBinary.Types.Kind.Suffix; break; case BinaryOp.Regex: b1.Kind = Format.Schema.OpBinary.Types.Kind.Regex; break; case BinaryOp.Add: b1.Kind = Format.Schema.OpBinary.Types.Kind.Add; break; case BinaryOp.Sub: b1.Kind = Format.Schema.OpBinary.Types.Kind.Sub; break; case BinaryOp.Mul: b1.Kind = Format.Schema.OpBinary.Types.Kind.Mul; break; case BinaryOp.Div: b1.Kind = Format.Schema.OpBinary.Types.Kind.Div; break; case BinaryOp.And: b1.Kind = Format.Schema.OpBinary.Types.Kind.And; break; case BinaryOp.Or: b1.Kind = Format.Schema.OpBinary.Types.Kind.Or; break; case BinaryOp.Intersection: b1.Kind = Format.Schema.OpBinary.Types.Kind.Intersection; break; case BinaryOp.Union: b1.Kind = Format.Schema.OpBinary.Types.Kind.Union; break; } b.Binary = b1; return(b); }