示例#1
0
                public static void Push(ref MiniSet set, object obj)
                {
                    if (ReferenceEquals(set.value, null))
                    {
                        set.value = obj;
                    }
                    else if (set.value is object[] array)
                    {
                        Debug.Assert(set.top <= array.Length);
                        if (set.top == array.Length)
                        {
                            Array.Resize(ref array, array.Length * 2);
                            set.value = array;
                        }

                        array[set.top++] = obj;
                    }
                    else
                    {
                        // upgrade _value to object[4]
                        set.value = new[] { set.value, obj, null, null, };
                        set.top   = 2;
                    }
                }
示例#2
0
 void PopObject(object obj)
 {
     MiniSet.Pop(ref _recursion, obj);
 }