source: trunk/src/gcc/libiberty/insque.c@ 710

Last change on this file since 710 was 2, checked in by bird, 22 years ago

Initial revision

  • Property cvs2svn:cvs-rev set to 1.1
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 1.1 KB
Line 
1/* insque(3C) routines
2 This file is in the public domain. */
3
4/*
5
6@deftypefn Supplemental void insque (struct qelem *@var{elem}, struct qelem *@var{pred})
7@deftypefnx Supplemental void remque (struct qelem *@var{elem})
8
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):
15
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
25
26*/
27
28
29struct qelem {
30 struct qelem *q_forw;
31 struct qelem *q_back;
32};
33
34
35void
36insque (elem, pred)
37 struct qelem *elem;
38 struct qelem *pred;
39{
40 elem -> q_forw = pred -> q_forw;
41 pred -> q_forw -> q_back = elem;
42 elem -> q_back = pred;
43 pred -> q_forw = elem;
44}
45
46
47void
48remque (elem)
49 struct qelem *elem;
50{
51 elem -> q_forw -> q_back = elem -> q_back;
52 elem -> q_back -> q_forw = elem -> q_forw;
53}
Note: See TracBrowser for help on using the repository browser.