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