Пример #1
0
//$-----------------------------------------------------------------------------
//@ Initialize an item for an existing pool.
//&-----------------------------------------------------------------------------
    public void PoolListItemInit(int ipoolListID)
    {
        // we do this so we dont have to access a indexed List
        // each time we move or acces an item from a List
        active_last   = active_lastList[ipoolListID];
        inactive_last = inactive_lastList[ipoolListID];
    }
Пример #2
0
//$--------------------------------------------------------------------------
//@ Returns free inactive item.
//&--------------------------------------------------------------------------
    public static EchoLinkedList PoolGetFreeInactive(int ipoolListID)
    {
        EchoLinkedList epl = inactive_firstList[ipoolListID].inactive_next;

        if (epl == null || epl.inactive_next == null)
        {
            if (newObjCallbacks[ipoolListID].dynamicAdd)
            {
                newObjCallbacks[ipoolListID].CallCreateNewObject();
                epl = inactive_firstList[ipoolListID].inactive_next;
            }
            else
            {
                return(null);
            }
        }

        // remove from inactive list
        epl.inactive_prev.inactive_next = epl.inactive_next;
        epl.inactive_next.inactive_prev = epl.inactive_prev;

        // add to active
        epl.active_next = epl.active_last;
        epl.active_prev = epl.active_last.active_prev;

        epl.active_last.active_prev.active_next = epl;
        epl.active_last.active_prev             = epl;

        return(epl);
    }
Пример #3
0
//$--------------------------------------------------------------------------
//@ Adds item to active list
//&--------------------------------------------------------------------------
    public static void PoolAddListActive(EchoLinkedList epl)
    {
        epl.active_next = epl.active_last;
        epl.active_prev = epl.active_last.active_prev;

        epl.active_last.active_prev.active_next = epl;
        epl.active_last.active_prev             = epl;
    }
Пример #4
0
//$--------------------------------------------------------------------------
//@ Moves item from inactive to active list
//&--------------------------------------------------------------------------
    public static void PoolMoveInactive2Active(EchoLinkedList epl)
    {
        epl.inactive_prev.inactive_next = epl.inactive_next;
        epl.inactive_next.inactive_prev = epl.inactive_prev;

        epl.active_next = epl.active_last;
        epl.active_prev = epl.active_last.active_prev;

        epl.active_last.active_prev.active_next = epl;
        epl.active_last.active_prev             = epl;
    }
Пример #5
0
//$--------------------------------------------------------------------------
//@ Removes item from active list
//&--------------------------------------------------------------------------
    public static void PoolRemoveListActive(EchoLinkedList epl)
    {
        epl.active_prev.active_next = epl.active_next;
        epl.active_next.active_prev = epl.active_prev;
    }