Esempio n. 1
0
        /// <summary>
        /// Clones the instance using special context and returns cloned instance.
        /// </summary>
        /// <param name="context">Special context for providing references continuity.</param>
        /// <returns>Cloned instance.</returns>
        public RangeValue Clone(Dictionary <object, object> context)
        {
            if (context.ContainsKey(this))
            {
                return((RangeValue)context[this]);
            }

            var result = new RangeValue();

            context[this] = result;

            result.LeftBoundary  = LeftBoundary?.Clone(context);
            result.RightBoundary = RightBoundary?.Clone(context);

            result.AppendAnnotations(this, context);

            return(result);
        }
Esempio n. 2
0
        /// <inheritdoc/>
        protected override ulong CalculateLongHashCode()
        {
            var result = base.CalculateLongHashCode();

            if (LeftBoundary != null)
            {
                LeftBoundary.CheckDirty();
                result ^= LeftBoundary.GetLongHashCode();
            }

            if (RightBoundary != null)
            {
                RightBoundary.CheckDirty();
                result ^= RightBoundary.GetLongHashCode();
            }

            return(result);
        }