Пример #1
0
    public static RecycleList <T> MakeValueEnumerable <TStructEnumerable>(ref TStructEnumerable enumerable) where TStructEnumerable : struct, IEnumerable <T>
    {
        RecycleList <T> list = RecycleList <T> .Make();

        list.AddRange((TStructEnumerable)enumerable);
        return(list);
    }
Пример #2
0
    public static RecycleList <T> Make <TClassEnumerable>(TClassEnumerable enumerable) where TClassEnumerable : class, IEnumerable <T>
    {
        RecycleList <T> list = RecycleList <T> .Make();

        list.AddRange(enumerable);
        return(list);
    }
Пример #3
0
    public static RecycleList <T> MakeFromValuedEnumerator <TEnumerator>(ref TEnumerator enumerator) where TEnumerator : struct, IEnumerator <T>
    {
        RecycleList <T> list = RecycleList <T> .Make();

        while (enumerator.MoveNext())
        {
            list.Add((T)enumerator.Current);
        }
        enumerator.Dispose();
        return(list);
    }
Пример #4
0
    public static void Bin(ref RecycleList <T> list)
    {
        if (list != null)
        {
            if (list.bound)
            {
                RecycleList <T> .bin.AddLast(list);

                list.bound = false;
            }
            list = null;
        }
    }
Пример #5
0
    public static RecycleList <T> Make()
    {
        RecycleList <T> recycleList;

        if (RecycleList <T> .binCount <= 0)
        {
            recycleList = new RecycleList <T>();
        }
        else
        {
            recycleList = RecycleList <T> .bin.First.Value;
            RecycleList <T> .bin.RemoveFirst();

            RecycleList <T> .binCount = RecycleList <T> .binCount - 1;
        }
        recycleList.bound = true;
        return(recycleList);
    }
Пример #6
0
    public RecycleList <T> SymmetricExceptList(IEnumerable <T> exceptWith)
    {
        RecycleList <T> list = null;

        try
        {
            HSet <T> .temp.UnionWith(this);

            HSet <T> .temp.SymmetricExceptWith(exceptWith);

            list = HSet <T> .temp.ToList();
        }
        finally
        {
            HSet <T> .temp.Clear();
        }
        return(list);
    }
Пример #7
0
    public RecycleList <T> IntersectList(IEnumerable <T> intersectWith)
    {
        RecycleList <T> list = null;

        try
        {
            HSet <T> .temp.UnionWith(this);

            HSet <T> .temp.IntersectWith(intersectWith);

            list = HSet <T> .temp.ToList();
        }
        finally
        {
            HSet <T> .temp.Clear();
        }
        return(list);
    }
Пример #8
0
    public static RecycleList <T> Make()
    {
        RecycleList <T> list;

        if (RecycleList <T> .binCount > 0)
        {
            list = RecycleList <T> .bin.First.Value;
            RecycleList <T> .bin.RemoveFirst();

            RecycleList <T> .binCount--;
        }
        else
        {
            list = new RecycleList <T>();
        }
        list.bound = true;
        return(list);
    }
Пример #9
0
    public void Dispose()
    {
        RecycleList <T> recycleList = this;

        RecycleList <T> .Bin(ref recycleList);
    }
Пример #10
0
 public RecycleList <T> Clone()
 {
     return(RecycleList <T> .Make <RecycleList <T> >(this));
 }
Пример #11
0
    private RecycleList <T> ToList()
    {
        HSetIter <T> enumerator = this.GetEnumerator();

        return(RecycleList <T> .MakeFromValuedEnumerator <HSetIter <T> >(ref enumerator));
    }
Пример #12
0
 public void Dispose()
 {
     RecycleList <T> .Bin(ref list);
 }