Cream.AllenTemporal.AllenDomain.Cap C# (CSharp) Method

Cap() public method

Caps the specified d.
public Cap ( Domain d ) : Domain
d Domain The d.
return Domain
        public override Domain Cap(Domain d)
        {
            if (!(d is AllenDomain))
                return EMPTY;
            var newD = new AllenDomain();
            AllenDomain d0 = this;
            var d1 = (AllenDomain)d;
            try {
                int i0 = 0;
                int i1 = 0;
                while (i0 < d0._intervals.Count && i1 < d1._intervals.Count) {
                    var interval = (int[])d0._intervals[i0];
                    int min0 = interval[0];
                    int max0 = interval[1];
                    interval = (int[])d1._intervals[i1];
                    int min1 = interval[0];
                    int max1 = interval[1];
                    if (max0 < min1) {
                        i0++;
                        continue;
                    }
                    if (max1 < min0) {
                        i1++;
                        continue;
                    }
                    interval = new int[2];
                    interval[0] = Math.Max(min0, min1);
                    interval[1] = Math.Min(max0, max1);
                    newD._intervals.Add(interval);
                    if (max0 <= max1)
                        i0++;
                    if (max1 <= max0)
                        i1++;
                }
            } catch (IndexOutOfRangeException) {
            }
            newD.UpdateSize();
            newD.UpdateMinMax();
            if (newD.Empty)
                return EMPTY;
            return newD;
        }