Commit | Line | Data |
---|---|---|
c65fedcf KB |
1 | /*- |
2 | * LstDeQueue.c -- | |
3 | * Remove the node and return its datum from the head of the list | |
4 | * | |
5 | * Copyright (c) 1988 by University of California Regents | |
6 | * | |
7 | * Permission to use, copy, modify, and distribute this | |
8 | * software and its documentation for any purpose and without | |
9 | * fee is hereby granted, provided that the above copyright | |
10 | * notice appears in all copies. Neither the University of California nor | |
11 | * Adam de Boor makes any representations about the suitability of this | |
12 | * software for any purpose. It is provided "as is" without | |
13 | * express or implied warranty. | |
14 | */ | |
15 | #ifndef lint | |
16 | static char *rcsid = | |
17 | "$Id: lstDeQueue.c,v 1.5 88/11/17 20:52:11 adam Exp $ SPRITE (Berkeley)"; | |
18 | #endif lint | |
19 | ||
20 | #include "lstInt.h" | |
21 | ||
22 | /*- | |
23 | *----------------------------------------------------------------------- | |
24 | * Lst_DeQueue -- | |
25 | * Remove and return the datum at the head of the given list. | |
26 | * | |
27 | * Results: | |
28 | * The datum in the node at the head or (ick) NIL if the list | |
29 | * is empty. | |
30 | * | |
31 | * Side Effects: | |
32 | * The head node is removed from the list. | |
33 | * | |
34 | *----------------------------------------------------------------------- | |
35 | */ | |
36 | ClientData | |
37 | Lst_DeQueue (l) | |
38 | Lst l; | |
39 | { | |
40 | ClientData rd; | |
41 | register ListNode tln; | |
42 | ||
43 | tln = (ListNode) Lst_First (l); | |
44 | if (tln == NilListNode) { | |
45 | return ((ClientData) NIL); | |
46 | } | |
47 | ||
48 | rd = tln->datum; | |
49 | if (Lst_Remove (l, (LstNode)tln) == FAILURE) { | |
50 | return ((ClientData) NIL); | |
51 | } else { | |
52 | return (rd); | |
53 | } | |
54 | } | |
55 |