Beispiel #1
0
            internal override bool AddIfNotPresent(T item)
            {
                if (!IsWithinRange(item))
                {
                    throw new ArgumentOutOfRangeException(nameof(item));
                }

                bool ret = _underlying.AddIfNotPresent(item);

                VersionCheck();
#if DEBUG
                Debug.Assert(this.versionUpToDate() && root == _underlying.FindRange(_min, _max));
#endif

                return(ret);
            }
 private void VersionCheckImpl()
 {
     if (version != _underlying.version)
     {
         root    = _underlying.FindRange(_min, _max, _lBoundActive, _uBoundActive);
         version = _underlying.version;
         count   = 0;
         InOrderTreeWalk(n => { count++; return(true); });
     }
 }
Beispiel #3
0
 public TreeSubSet(SortedSet <T> Underlying, T Min, T Max, bool lowerBoundActive, bool upperBoundActive)
     : base(Underlying.Comparer)
 {
     _underlying   = Underlying;
     _min          = Min;
     _max          = Max;
     _lBoundActive = lowerBoundActive;
     _uBoundActive = upperBoundActive;
     root          = _underlying.FindRange(_min, _max, _lBoundActive, _uBoundActive); // root is first element within range
     count         = 0;
     version       = -1;
     VersionCheckImpl();
 }