fix comments
[Samba.git] / source / ubiqx / ubi_sLinkList.c
blob5414d5f71de927e7ef03d553d5f6ee551e039975
1 /* ========================================================================== **
2 * ubi_sLinkList.c
4 * Copyright (C) 1997 by Christopher R. Hertel
6 * Email: crh@ubiqx.mn.org
7 * -------------------------------------------------------------------------- **
8 * This module implements a really simple singly-linked list.
9 * -------------------------------------------------------------------------- **
11 * This library is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU Library General Public
13 * License as published by the Free Software Foundation; either
14 * version 2 of the License, or (at your option) any later version.
16 * This library is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 * Library General Public License for more details.
21 * You should have received a copy of the GNU Library General Public
22 * License along with this library; if not, write to the Free
23 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
25 * -------------------------------------------------------------------------- **
27 * Revision 0.2 1997/10/21 03:35:18 crh
28 * Added parameter <After> in function Insert(). Made necessary changes
29 * to macro AddHead() and added macro AddHere().
31 * Revision 0.1 1997/10/16 02:53:45 crh
32 * Initial Revision.
34 * ========================================================================== **
37 #include "ubi_sLinkList.h"
39 /* ========================================================================== **
40 * Functions...
43 ubi_slListPtr ubi_slInitList( ubi_slListPtr ListPtr )
44 /* ------------------------------------------------------------------------ **
45 * Initialize a singly-linked list header.
47 * Input: ListPtr - A pointer to the list structure that is to be
48 * initialized for use.
50 * Output: A pointer to the initialized list header (i.e., same as
51 * <ListPtr>).
53 * ------------------------------------------------------------------------ **
56 ListPtr->Head = NULL;
57 ListPtr->count = 0;
58 return( ListPtr );
59 } /* ubi_slInitList */
61 ubi_slNodePtr ubi_slInsert( ubi_slListPtr ListPtr,
62 ubi_slNodePtr New,
63 ubi_slNodePtr After )
64 /* ------------------------------------------------------------------------ **
65 * Insert a new node at the head of the list.
67 * Input: ListPtr - A pointer to the list into which the node is to
68 * be inserted.
69 * New - Pointer to the node that is to be added to the list.
70 * After - Pointer to a list in a node after which the new node
71 * will be inserted. If NULL, then the new node will
72 * be added at the head of the list.
74 * Output: A pointer to the node that was inserted into the list (i.e.,
75 * the same as <New>).
77 * ------------------------------------------------------------------------ **
80 ubi_slNodePtr *PredPtr;
82 PredPtr = ( NULL == After ) ? &(ListPtr->Head) : &(After->Next);
83 New->Next = *PredPtr;
84 *PredPtr = New;
85 ++(ListPtr->count);
86 return( New );
87 } /* ubi_slInsert */
89 ubi_slNodePtr ubi_slRemove( ubi_slListPtr ListPtr )
90 /* ------------------------------------------------------------------------ **
91 * Remove a node from the head of the list.
93 * Input: ListPtr - A pointer to the list from which the node is to be
94 * removed.
96 * Output: A pointer to the node that was removed.
98 * ------------------------------------------------------------------------ **
101 ubi_slNodePtr Old = ListPtr->Head;
103 if( NULL != Old )
105 ListPtr->Head = Old->Next;
106 --(ListPtr->count);
108 return( Old );
109 } /* ubi_slRemove */
112 /* ================================ The End ================================= */