]> git.ipfire.org Git - thirdparty/gcc.git/blame - libiberty/insque.c
* decl.c (cxx_maybe_build_cleanup): When clearing location of cleanup,
[thirdparty/gcc.git] / libiberty / insque.c
CommitLineData
28e9041c 1/* insque(3C) routines
2 This file is in the public domain. */
3
4/*
28e9041c 5
bac427a1 6@deftypefn Supplemental void insque (struct qelem *@var{elem}, @
7 struct qelem *@var{pred})
349e8276 8@deftypefnx Supplemental void remque (struct qelem *@var{elem})
28e9041c 9
349e8276 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):
28e9041c 16
349e8276 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
28e9041c 26
28e9041c 27*/
28
29
30struct qelem {
31 struct qelem *q_forw;
32 struct qelem *q_back;
33};
34
35
36void
8858115e 37insque (struct qelem *elem, struct qelem *pred)
28e9041c 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
8858115e 47remque (struct qelem *elem)
28e9041c 48{
49 elem -> q_forw -> q_back = elem -> q_back;
50 elem -> q_back -> q_forw = elem -> q_forw;
51}