]> git.ipfire.org Git - thirdparty/gcc.git/blame - libiberty/insque.c
md5.h: Remove definition and uses of __P.
[thirdparty/gcc.git] / libiberty / insque.c
CommitLineData
6599da04
JM
1/* insque(3C) routines
2 This file is in the public domain. */
3
4/*
6599da04 5
aac04c15
DD
6@deftypefn Supplemental void insque (struct qelem *@var{elem}, struct qelem *@var{pred})
7@deftypefnx Supplemental void remque (struct qelem *@var{elem})
6599da04 8
aac04c15
DD
9Routines to manipulate queues built from doubly linked lists. The
10@code{insque} routine inserts @var{elem} in the queue immediately
11after @var{pred}. The @code{remque} routine removes @var{elem} from
12its containing queue. These routines expect to be passed pointers to
13structures which have as their first members a forward pointer and a
14back pointer, like this prototype (although no prototype is provided):
6599da04 15
aac04c15
DD
16@example
17struct qelem @{
18 struct qelem *q_forw;
19 struct qelem *q_back;
20 char q_data[];
21@};
22@end example
23
24@end deftypefn
6599da04 25
6599da04
JM
26*/
27
28
29struct qelem {
30 struct qelem *q_forw;
31 struct qelem *q_back;
32};
33
34
35void
6da879de 36insque (struct qelem *elem, struct qelem *pred)
6599da04
JM
37{
38 elem -> q_forw = pred -> q_forw;
39 pred -> q_forw -> q_back = elem;
40 elem -> q_back = pred;
41 pred -> q_forw = elem;
42}
43
44
45void
6da879de 46remque (struct qelem *elem)
6599da04
JM
47{
48 elem -> q_forw -> q_back = elem -> q_back;
49 elem -> q_back -> q_forw = elem -> q_forw;
50}