public Compare ToCompare() { Compare compare = new Compare(); compare.Key = this.key; switch (this.op) { case Op.EQUAL: compare.Result = Compare.Types.CompareResult.Equal; break; case Op.GREATER: compare.Result = Compare.Types.CompareResult.Greater; break; case Op.LESS: compare.Result = Compare.Types.CompareResult.Less; break; default: throw new Exception("Unexpected compare type (" + this.op + ")"); } Compare.Types.CompareTarget target = this.target.GetTarget(); Object value = this.target.GetTargetValue(); compare.Target = target; switch (target) { case Compare.Types.CompareTarget.Version: compare.Version = (long)value; break; case Compare.Types.CompareTarget.Value: compare.Value = (ByteString)value; break; case Compare.Types.CompareTarget.Mod: compare.ModRevision = (long)value; break; case Compare.Types.CompareTarget.Create: compare.CreateRevision = (long)value; break; default: throw new Exception("Unexpected target type (" + target + ")"); } return(compare); }
protected CmpTarget(Compare.Types.CompareTarget target, T targetValue) { this.target = target; this.targetValue = targetValue; }