コード例 #1
0
 public static void AddRange <TK, TV>(this PoolingDictionary <TK, TV> target, IEnumerable <KeyValuePair <TK, TV> > src)
 {
     foreach (var item in src)
     {
         target.Add(item.Key, item.Value);
     }
 }
コード例 #2
0
 public static void AddRangeSafe <TK, TV>(this PoolingDictionary <TK, TV> target, IPoolingEnumerable <KeyValuePair <TK, TV> > src)
 {
     foreach (var item in src)
     {
         target[item.Key] = item.Value;
     }
 }
コード例 #3
0
 public ExceptExprEnumerable <T> Init(IPoolingEnumerable <T> src, PoolingDictionary <T, int> except, IEqualityComparer <T> comparer = default)
 {
     _src      = src;
     _except   = except;
     _comparer = comparer;
     _count    = 0;
     return(this);
 }
コード例 #4
0
            public IntersectExprEnumerator Init(IntersectExprEnumerable <T> parent, IPoolingEnumerator <T> src, IEqualityComparer <T> comparer)
            {
                _src              = src;
                _parent           = parent;
                _alreadyDoneItems = Pool <PoolingDictionary <T, int> > .Get().Init(0, comparer);

                return(this);
            }
コード例 #5
0
 public GroupedResultEnumerator Init(
     GroupedResultEnumerable <TSource, TKey, TResult> parent,
     PoolingDictionary <TKey, PoolingGrouping> src)
 {
     _src        = src;
     _parent     = parent;
     _enumerator = _src.GetEnumerator();
     return(this);
 }
コード例 #6
0
 public IntersectExprEnumerable <T> Init(
     IPoolingEnumerable <T> src,
     PoolingDictionary <T, int> second,
     IEqualityComparer <T> comparer = default)
 {
     _src      = src;
     _count    = 0;
     _second   = second;
     _comparer = comparer ?? EqualityComparer <T> .Default;
     return(this);
 }
コード例 #7
0
            public void Dispose()
            {
                _parent?.Dispose();
                _parent = default;

                _hashset?.Dispose();
                _hashset = default;

                _src      = default;
                _selector = default;
                Pool <DistinctExprEnumerator> .Return(this);
            }
コード例 #8
0
            public DistinctExprEnumerator Init(
                DistinctExprEnumerable <T, TItem> parent,
                IPoolingEnumerator <T> src,
                Func <T, TItem> selector,
                IEqualityComparer <TItem> comparer)
            {
                _src      = src;
                _parent   = parent;
                _selector = selector;
                _hashset  = Pool <PoolingDictionary <TItem, int> > .Get().Init(0, comparer ?? EqualityComparer <TItem> .Default);

                return(this);
            }
コード例 #9
0
            public void Dispose()
            {
                _src?.Dispose();
                _src = null;

                _alreadyDoneItems?.Dispose();
                Pool <PoolingDictionary <T, int> > .Return(_alreadyDoneItems);

                _alreadyDoneItems = default;

                _parent?.Dispose();
                _parent = default;

                Pool <IntersectExprEnumerator> .Return(this);
            }
コード例 #10
0
        private void Dispose()
        {
            if (_count == 0)
            {
                return;
            }
            _count--;
            if (_count == 0)
            {
                _src?.Dispose();
                Pool <PoolingDictionary <T, int> > .Return(_src);

                _src = default;

                Pool <UnionExprEnumerable <T> > .Return(this);
            }
        }
コード例 #11
0
        private void Dispose()
        {
            if (_count == 0)
            {
                return;
            }
            _count--;
            if (_count == 0)
            {
                _src = default;
                _second?.Dispose();
                Pool <PoolingDictionary <T, int> > .Return(_second);

                _second = default;
                Pool <IntersectExprEnumerable <T> > .Return(this);
            }
        }
コード例 #12
0
            public void Dispose()
            {
                // Cleanup contents
                foreach (var grouping in _src)
                {
                    grouping.Value.Dispose();
                    Pool <PoolingGrouping> .Return(grouping.Value);
                }

                // cleanup collection
                _src?.Dispose();
                Pool <PoolingDictionary <TKey, PoolingGrouping> > .Return(_src);

                _src = default;

                _enumerator?.Dispose();
                _enumerator = default;

                _parent?.Dispose();
                _parent = default;

                Pool <GroupedResultEnumerator> .Return(this);
            }
コード例 #13
0
 public UnionExprEnumerable <T> Init(PoolingDictionary <T, int> src)
 {
     _src   = src;
     _count = 0;
     return(this);
 }