// Constructors /// <summary> /// Initializes a new instance of this type. /// </summary> /// <param name="origin">Initial <see cref="Origin"/> property value.</param> public DifferentialTuple(Tuple origin) { ArgumentValidator.EnsureArgumentNotNull(origin, "origin"); this.origin = origin; difference = null; backupedDifference = null; }
internal void BackupDifference() { if (difference != null) { backupedDifference = (DifferentialTuple)this.Clone(); } }
/// <summary> /// Initializes a new instance of this type. /// </summary> /// <param name="origin">Initial <see cref="Origin"/> property value.</param> /// <param name="difference">Initial <see cref="Difference"/> property value.</param> /// <exception cref="ArgumentException">Tuple descriptors mismatch.</exception> public DifferentialTuple(Tuple origin, Tuple difference) { ArgumentValidator.EnsureArgumentNotNull(origin, "origin"); if (difference != null && origin.Descriptor != difference.Descriptor) { throw new ArgumentException( string.Format(Strings.ExInvalidTupleDescriptorExpectedDescriptorIs, origin.Descriptor), "difference"); } this.origin = origin; this.difference = difference; backupedDifference = null; }
internal void RestoreDifference() { if (backupedDifference != null) { origin.MergeWith(backupedDifference.Origin, MergeBehavior.PreferDifference); if (difference == null) { difference = backupedDifference.Difference.Clone(); } else { difference.MergeWith(backupedDifference, 0, MergeBehavior.PreferDifference); } backupedDifference = null; } }
private DifferentialTuple(Tuple origin, Tuple difference, DifferentialTuple backupedDifference) : this(origin, difference) { this.backupedDifference = backupedDifference; }
internal void DropBackedUpDifference() { backupedDifference = null; }