/// <summary>
        /// Checks if a <paramref name="value"/> is clamped in an exclusive range between <paramref name="min"/> and <paramref name="max"/>.
        /// </summary>
        /// <param name="_this">The <see cref="IComparer"/> used for comparisons.</param>
        /// <param name="value"></param>
        /// <param name="min">The lower border of the range. Is considered lower than <paramref name="_this"/> if null.</param>
        /// <param name="max">The upper border of the range. Is considered higher than <paramref name="_this"/> if null.</param>
        /// <returns>True if <paramref name="value"/> is clamped, false if not.</returns>
        /// <exception cref="ArgumentNullException">Thrown if <paramref name="_this"/> is null.</exception>
        /// <example>
        /// <code>
        /// Boolean result = new MyComparer().IsClampedExclusive(value, min, max);
        /// </code>
        /// </example>
        public static Boolean IsClampedExclusive(this IComparer _this, Object value, Object min, Object max)
        {
            Throw.If.Object.IsNull(_this, nameof(_this));
            Throw.If.Object.IsNull(value, nameof(value));

            if (min != null && max != null && _this.IsGreaterThan(min, max))
            {
                return(_this.IsClampedExclusive(value, max, min));
            }

            Boolean result = true;

            result &= min == null || _this.IsGreaterThan(value, min);
            result &= max == null || _this.IsLessThan(value, max);

            return(result);
        }
示例#2
0
        /// <summary>
        /// Checks if a <paramref name="value"/> is clamped in an inclusive range between <paramref name="min"/> and <paramref name="max"/>.
        /// </summary>
        /// <typeparam name="T">The type of the objects.</typeparam>
        /// <param name="_this">The <see cref="IComparer{T}"/> used for comparisons.</param>
        /// <param name="value"></param>
        /// <param name="min">The lower border of the range. Is considered lower than <paramref name="_this"/> if null.</param>
        /// <param name="max">The upper border of the range. Is considered higher than <paramref name="_this"/> if null.</param>
        /// <returns>True if <paramref name="value"/> is clamped, false if not.</returns>
        /// <exception cref="ArgumentNullException">Thrown if <paramref name="_this"/> is null.</exception>
        /// <example>
        /// <code>
        /// Boolean result = new MyComparer().IsClamped(value, min, max);
        /// </code>
        /// </example>
        public static Boolean IsClamped <T>(this IComparer <T> _this, T value, T min, T max)
        {
            Throw.If.Object.IsNull(_this, nameof(_this));
            Throw.If.Object.IsNull(value, nameof(value));

            if (min != null && max != null && _this.IsGreaterThan(min, max))
            {
                return(_this.IsClamped(value, max, min));
            }

            Boolean result = true;

            result &= min == null || _this.IsGreaterThanOrEqual(value, min);
            result &= max == null || _this.IsLessThanOrEqual(value, max);

            return(result);
        }
        /// <summary>
        /// Clamps <paramref name="value"/> to a given inclusive range between <paramref name="min"/> and <paramref name="max"/>.
        /// </summary>
        /// <param name="_this">The <see cref="IComparer"/> used for comparisons.</param>
        /// <param name="value"></param>
        /// <param name="min">The lower border of the range. Is considered lower than <paramref name="_this"/> if null.</param>
        /// <param name="max">The upper border of the range. Is considered higher than <paramref name="_this"/> if null.</param>
        /// <returns>The clamped version of <paramref name="value"/>.</returns>
        /// <exception cref="ArgumentNullException">Thrown if <paramref name="_this"/> is null.</exception>
        /// <example>
        /// <code>
        /// var result = new MyComparer().Clamp(value, min, max);
        /// </code>
        /// </example>
        public static Object Clamp(this IComparer _this, Object value, Object min, Object max)
        {
            Throw.If.Object.IsNull(_this, nameof(_this));
            Throw.If.Object.IsNull(value, nameof(value));

            if (min != null && max != null && _this.IsGreaterThan(min, max))
            {
                return(_this.Clamp(value, max, min));
            }

            Object result = value;

            if (min != null)
            {
                result = _this.Max(value, min);
            }

            if (max != null)
            {
                result = _this.Min(result, max);
            }

            return(result);
        }
示例#4
0
        /// <summary>
        /// Clamps <paramref name="value"/> to a given inclusive range between <paramref name="min"/> and <paramref name="max"/>.
        /// </summary>
        /// <typeparam name="T">The type of the objects.</typeparam>
        /// <param name="_this">The <see cref="IComparer{T}"/> used for comparisons.</param>
        /// <param name="value"></param>
        /// <param name="min">The lower border of the range. Is considered lower than <paramref name="_this"/> if null.</param>
        /// <param name="max">The upper border of the range. Is considered higher than <paramref name="_this"/> if null.</param>
        /// <returns>The clamped version of <paramref name="value"/>.</returns>
        /// <exception cref="ArgumentNullException">Thrown if <paramref name="_this"/> is null.</exception>
        /// <example>
        /// <code>
        /// var result = new MyComparer().Clamp(value, min, max);
        /// </code>
        /// </example>
        public static T Clamp <T>(this IComparer <T> _this, T value, T min, T max)
        {
            Throw.If.Object.IsNull(_this, nameof(_this));
            Throw.If.Object.IsNull(value, nameof(value));

            if (min != null && max != null && _this.IsGreaterThan(min, max))
            {
                return(_this.Clamp(value, max, min));
            }

            T result = value;

            if (min != null)
            {
                result = _this.Max(value, min);
            }

            if (max != null)
            {
                result = _this.Min(result, max);
            }

            return(result);
        }
        /// <summary>
        /// Gets the higher value of two objects.
        /// </summary>
        /// <param name="_this">The <see cref="IComparer"/> used for comparisons.</param>
        /// <param name="x">The first <see cref="Object"/>.</param>
        /// <param name="y">The second <see cref="Object"/>.</param>
        /// <returns>The higher value.</returns>
        /// <exception cref="ArgumentNullException">Thrown if <paramref name="_this"/> is null.</exception>
        /// <example>
        /// <code>
        /// var result = new MyComparer().Max(value1, value2);
        /// </code>
        /// </example>
        public static Object Max(this IComparer _this, Object x, Object y)
        {
            Throw.If.Object.IsNull(_this, nameof(_this));

            return(_this.IsGreaterThan(x, y) ? x : y);
        }
示例#6
0
        /// <summary>
        /// Gets the higher value of two objects.
        /// </summary>
        /// <typeparam name="T">The type of the objects.</typeparam>
        /// <param name="_this">The <see cref="IComparer{T}"/> used for comparisons.</param>
        /// <param name="x">The first object of type <typeparamref name="T"/>.</param>
        /// <param name="y">The second object of type <typeparamref name="T"/>.</param>
        /// <returns>The higher value.</returns>
        /// <exception cref="ArgumentNullException">Thrown if <paramref name="_this"/> is null.</exception>
        /// <example>
        /// <code>
        /// var result = new MyComparer().Max(value1, value2);
        /// </code>
        /// </example>
        public static T Max <T>(this IComparer <T> _this, T x, T y)
        {
            Throw.If.Object.IsNull(_this, nameof(_this));

            return(_this.IsGreaterThan(x, y) ? x : y);
        }