1296177Sjhibbits/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc.
2296177Sjhibbits * All rights reserved.
3296177Sjhibbits *
4296177Sjhibbits * Redistribution and use in source and binary forms, with or without
5296177Sjhibbits * modification, are permitted provided that the following conditions are met:
6296177Sjhibbits *     * Redistributions of source code must retain the above copyright
7296177Sjhibbits *       notice, this list of conditions and the following disclaimer.
8296177Sjhibbits *     * Redistributions in binary form must reproduce the above copyright
9296177Sjhibbits *       notice, this list of conditions and the following disclaimer in the
10296177Sjhibbits *       documentation and/or other materials provided with the distribution.
11296177Sjhibbits *     * Neither the name of Freescale Semiconductor nor the
12296177Sjhibbits *       names of its contributors may be used to endorse or promote products
13296177Sjhibbits *       derived from this software without specific prior written permission.
14296177Sjhibbits *
15296177Sjhibbits *
16296177Sjhibbits * ALTERNATIVELY, this software may be distributed under the terms of the
17296177Sjhibbits * GNU General Public License ("GPL") as published by the Free Software
18296177Sjhibbits * Foundation, either version 2 of that License or (at your option) any
19296177Sjhibbits * later version.
20296177Sjhibbits *
21296177Sjhibbits * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY
22296177Sjhibbits * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
23296177Sjhibbits * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
24296177Sjhibbits * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
25296177Sjhibbits * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
26296177Sjhibbits * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
27296177Sjhibbits * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
28296177Sjhibbits * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29296177Sjhibbits * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30296177Sjhibbits * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31296177Sjhibbits */
32296177Sjhibbits
33296177Sjhibbits/**************************************************************************//**
34296177Sjhibbits
35296177Sjhibbits @File          list.c
36296177Sjhibbits
37296177Sjhibbits @Description   Implementation of list.
38296177Sjhibbits*//***************************************************************************/
39296177Sjhibbits#include "std_ext.h"
40296177Sjhibbits#include "list_ext.h"
41296177Sjhibbits
42296177Sjhibbits
43296177Sjhibbitsvoid LIST_Append(t_List *p_NewList, t_List *p_Head)
44296177Sjhibbits{
45296177Sjhibbits    t_List *p_First = NCSW_LIST_FIRST(p_NewList);
46296177Sjhibbits
47296177Sjhibbits    if (p_First != p_NewList)
48296177Sjhibbits    {
49296177Sjhibbits        t_List *p_Last  = LIST_LAST(p_NewList);
50296177Sjhibbits        t_List *p_Cur   = NCSW_LIST_NEXT(p_Head);
51296177Sjhibbits
52296177Sjhibbits        NCSW_LIST_PREV(p_First) = p_Head;
53296177Sjhibbits        NCSW_LIST_FIRST(p_Head) = p_First;
54296177Sjhibbits        NCSW_LIST_NEXT(p_Last)  = p_Cur;
55296177Sjhibbits        LIST_LAST(p_Cur)   = p_Last;
56296177Sjhibbits    }
57296177Sjhibbits}
58296177Sjhibbits
59296177Sjhibbits
60296177Sjhibbitsint LIST_NumOfObjs(t_List *p_List)
61296177Sjhibbits{
62296177Sjhibbits    t_List *p_Tmp;
63296177Sjhibbits    int    numOfObjs = 0;
64296177Sjhibbits
65296177Sjhibbits    if (!LIST_IsEmpty(p_List))
66296177Sjhibbits        LIST_FOR_EACH(p_Tmp, p_List)
67296177Sjhibbits            numOfObjs++;
68296177Sjhibbits
69296177Sjhibbits    return numOfObjs;
70296177Sjhibbits}
71