2 // LIST - list processing functions for orbiter
4 // Version: 1.0 Copyright (C) 1990, Hutchins Software
5 // Author: Edward Hutchins
12 // AddHead - add an object to the head of a list
15 VOID FAR PASCAL
AddHead( NPLIST npList
, NPNODE npNode
)
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
)
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
;
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
;