Lines Matching defs:pList

50 void		InitLinkedList( GenLinkedList *pList, size_t linkOffset)
51 /* Initialize the block of memory pointed to by pList as a linked list. */
53 pList->Head = NULL;
54 pList->Tail = NULL;
55 pList->LinkOffset = linkOffset;
59 void AddToTail( GenLinkedList *pList, void *elem)
62 if ( pList->Tail) {
63 ASSIGNLINK( pList->Tail, elem, pList->LinkOffset);
65 pList->Head = elem;
66 ASSIGNLINK( elem, NULL, pList->LinkOffset);
68 pList->Tail = elem;
72 void AddToHead( GenLinkedList *pList, void *elem)
75 ASSIGNLINK( elem, pList->Head, pList->LinkOffset);
76 if ( pList->Tail == NULL)
77 pList->Tail = elem;
79 pList->Head = elem;
83 int RemoveFromList( GenLinkedList *pList, void *elem)
89 for ( iElem = pList->Head, lastElem = NULL; iElem; iElem = GETLINK( iElem, pList->LinkOffset)) {
92 ASSIGNLINK( lastElem, GETLINK( elem, pList->LinkOffset), pList->LinkOffset);
94 pList->Head = GETLINK( elem, pList->LinkOffset);
96 if ( pList->Tail == elem)
97 pList->Tail = lastElem ? lastElem : NULL;
98 ASSIGNLINK( elem, NULL, pList->LinkOffset); // maybe catch a stale reference bug.
108 int ReplaceElem( GenLinkedList *pList, void *elemInList, void *newElem)
116 for ( iElem = pList->Head, lastElem = NULL; iElem; iElem = GETLINK( iElem, pList->LinkOffset))
120 ASSIGNLINK( newElem, GETLINK( elemInList, pList->LinkOffset), pList->LinkOffset);
123 ASSIGNLINK( lastElem, newElem, pList->LinkOffset);
127 pList->Head = newElem;
129 if ( pList->Tail == elemInList)
130 pList->Tail = newElem;
142 void InitDoubleLinkedList( GenDoubleLinkedList *pList, size_t fwdLinkOffset,
144 /* Initialize the block of memory pointed to by pList as a double linked list. */
146 pList->Head = NULL;
147 pList->Tail = NULL;
148 pList->FwdLinkOffset = fwdLinkOffset;
149 pList->BackLinkOffset = backLinkOffset;
153 void DLLAddToHead( GenDoubleLinkedList *pList, void *elem)
158 pNext = pList->Head;
161 ASSIGNLINK( elem, pList->Head, pList->FwdLinkOffset);
162 pList->Head = elem;
166 ASSIGNLINK( pNext, elem, pList->BackLinkOffset);
168 pList->Tail = elem;
169 ASSIGNLINK( elem, NULL, pList->BackLinkOffset);
173 void DLLRemoveFromList( GenDoubleLinkedList *pList, void *elem)
179 pNext = GETLINK( elem, pList->FwdLinkOffset);
180 pPrev = GETLINK( elem, pList->BackLinkOffset);
184 ASSIGNLINK( pPrev, pNext, pList->FwdLinkOffset);
186 pList->Head = pNext;
190 ASSIGNLINK( pNext, pPrev, pList->BackLinkOffset);
192 pList->Tail = pPrev;
194 ASSIGNLINK( elem, NULL, pList->FwdLinkOffset);
195 ASSIGNLINK( elem, NULL, pList->BackLinkOffset);
214 void *GetHeadPtr( GenLinkedOffsetList *pList)
217 return pList->Head ? ( (char*) (pList) + pList->Head) : NULL;
221 void *GetTailPtr( GenLinkedOffsetList *pList)
224 return pList->Tail ? ( (char*) (pList) + pList->Tail) : NULL;
228 void *GetOffsetLink( GenLinkedOffsetList *pList, void *elem)
229 /* Return the link pointer contained within element e for pList, or NULL if it is 0. */
233 nextOffset = GETOFFSET( elem, pList->LinkOffset);
239 void InitLinkedOffsetList( GenLinkedOffsetList *pList, size_t linkOffset)
240 /* Initialize the block of memory pointed to by pList as a linked list. */
242 pList->Head = 0;
243 pList->Tail = 0;
244 pList->LinkOffset = linkOffset;
248 void OffsetAddToTail( GenLinkedOffsetList *pList, void *elem)
251 if ( pList->Tail) {
252 AssignOffsetLink( GetTailPtr( pList), elem, pList->LinkOffset);
254 pList->Head = (size_t) elem - (size_t) pList;
255 AssignOffsetLink( elem, NULL, pList->LinkOffset);
257 pList->Tail = (size_t) elem - (size_t) pList;
261 void OffsetAddToHead( GenLinkedOffsetList *pList, void *elem)
264 AssignOffsetLink( elem, GetHeadPtr( pList), pList->LinkOffset);
265 if ( pList->Tail == 0)
266 pList->Tail = (size_t) elem - (size_t) pList;
268 pList->Head = (size_t) elem - (size_t) pList;
272 int OffsetRemoveFromList( GenLinkedOffsetList *pList, void *elem)
278 for ( iElem = GetHeadPtr( pList), lastElem = NULL; iElem;
279 iElem = GetOffsetLink( pList, iElem))
283 AssignOffsetLink( lastElem, GetOffsetLink( pList, elem), pList->LinkOffset);
285 iElem = GetOffsetLink( pList, elem);
286 pList->Head = iElem ? (size_t) iElem - (size_t) pList : 0;
288 if ( GetTailPtr( pList) == elem)
289 pList->Tail = lastElem ? (size_t) lastElem - (size_t) pList : 0;
290 AssignOffsetLink( elem, NULL, pList->LinkOffset); // maybe catch a stale reference bug.
300 int OffsetReplaceElem( GenLinkedOffsetList *pList, void *elemInList, void *newElem)
308 for ( iElem = GetHeadPtr( pList), lastElem = NULL; iElem;
309 iElem = GetOffsetLink( pList, iElem))
313 AssignOffsetLink( newElem, GetOffsetLink( pList, elemInList), pList->LinkOffset);
316 AssignOffsetLink( lastElem, newElem, pList->LinkOffset);
320 pList->Head = (size_t) newElem - (size_t) pList;
322 if ( GetTailPtr( pList) == elemInList)
323 pList->Tail = (size_t) newElem - (size_t) pList;