using System;

namespace UnityEngine.Rendering.Universal
{
    struct InclusiveRange
    {
        public short start;
        public short end;

        public InclusiveRange(short startEnd)
        {
            this.start = startEnd;
            this.end = startEnd;
        }

        public InclusiveRange(short start, short end)
        {
            this.start = start;
            this.end = end;
        }

        public void Expand(short index)
        {
            start = Math.Min(start, index);
            end = Math.Max(end, index);
        }

        public void Clamp(short min, short max)
        {
            start = Math.Max(min, start);
            end = Math.Min(max, end);
        }

        public bool isEmpty => end < start;

        public bool Contains(short index)
        {
            return index >= start && index <= end;
        }

        public static InclusiveRange Merge(InclusiveRange a, InclusiveRange b) => new(Math.Min(a.start, b.start), Math.Max(a.end, b.end));

        public static InclusiveRange empty => new InclusiveRange(short.MaxValue, short.MinValue);

        public override string ToString()
        {
            return $"[{start}, {end}]";
        }
    }
}