Release 0.4.3
[wine/multimedia.git] / test / hyperoid / list.c
blobe427064b17649cb67919658d514e3f4f401b2c71
1 //
2 // LIST - list processing functions for orbiter
3 //
4 // Version: 1.0 Copyright (C) 1990, Hutchins Software
5 // Author: Edward Hutchins
6 // Revisions:
7 //
9 #include "orbiter.h"
12 // AddHead - add an object to the head of a list
15 VOID FAR PASCAL AddHead( NPLIST npList, NPNODE npNode )
17 if (npList->npHead)
19 npNode->npNext = npList->npHead;
20 npNode->npPrev = NULL;
21 npList->npHead = (npList->npHead->npPrev = npNode);
23 else // add to an empty list
25 npList->npHead = npList->npTail = npNode;
26 npNode->npNext = npNode->npPrev = NULL;
31 // RemHead - remove the first element in a list
34 NPNODE FAR PASCAL RemHead( NPLIST npList )
36 if (npList->npHead)
38 NPNODE npNode = npList->npHead;
39 if (npList->npTail != npNode)
41 npList->npHead = npNode->npNext;
42 npNode->npNext->npPrev = NULL;
44 else npList->npHead = npList->npTail = NULL;
45 return( npNode );
47 else return( NULL );
51 // Remove - remove an arbitrary element from a list
54 VOID FAR PASCAL Remove( NPLIST npList, NPNODE npNode )
56 if (npNode->npPrev) npNode->npPrev->npNext = npNode->npNext;
57 else npList->npHead = npNode->npNext;
58 if (npNode->npNext) npNode->npNext->npPrev = npNode->npPrev;
59 else npList->npTail = npNode->npPrev;