System.Security.Util.TokenBasedSet.RemoveItem C# (CSharp) Method

RemoveItem() private method

private RemoveItem ( int index ) : Object
index int
return Object
        internal Object RemoveItem(int index)
        {
            Object ret = null;

            switch (m_cElt)
            {
            case 0:
                ret = null;
                break;

            case 1:
                if (index != m_maxIndex)
                {
                    // removing a permission we don't have ignore it
                    ret = null;
                }
                else 
                {
                    // removing the permission we have at the moment
                    ret = m_Obj;
                    Reset();
                }
                break;

            default:
                // this is the general case code for when there is really an array

                // we are removing an item                
                if (index < m_Set.Length && m_Set[index] != null)
                {
                    // ok we really deleted something at this point

                    ret = m_Set[index];

                    m_Set[index] = null;
                    m_cElt--;

                    if (index == m_maxIndex)
                        ResetMaxIndex(m_Set);

                    // collapse the array
                    if (m_cElt == 1)
                    {
                        m_Obj = m_Set[m_maxIndex];
                        m_Set = null;
                    }
                }
                break;
            }

            return ret;
        }

Usage Example

Example #1
0
        internal virtual void MergeDeniedSet(TokenBasedSet denied)
        {
            if (denied == null)
            {
                return;
            }

            int minMaxIndex;

            if (this.m_maxIndex < denied.m_maxIndex)
            {
                minMaxIndex = this.m_maxIndex;
                for (int i = this.m_maxIndex + 1; i <= denied.m_maxIndex; ++i)
                {
                    denied.RemoveItem(i);
                }
            }
            else
            {
                minMaxIndex = denied.m_maxIndex;
            }

            IPermission p1;
            IPermission p2;

            for (int i = 0; i <= minMaxIndex; i++)
            {
                p1 = (IPermission)this.GetItem(i);
                p2 = (IPermission)denied.GetItem(i);

                if (p1 != null)
                {
                    if (p2 != null && p1.IsSubsetOf(p2))
                    {
                        // If the permission appears in both sets, we can remove it from both
                        // (i.e. now it's not granted instead of being denied)
                        this.RemoveItem(i);
                        denied.RemoveItem(i);
                    }
                }
                else if (p2 != null)
                {
                    // If we tried to deny it and it wasn't granted, just remove it from the denied set.
                    denied.RemoveItem(i);
                }
            }
        }
All Usage Examples Of System.Security.Util.TokenBasedSet::RemoveItem