Mercurial > hg > CbC > CbC_gcc
comparison libiberty/insque.c @ 0:a06113de4d67
first commit
author | kent <kent@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 17 Jul 2009 14:47:48 +0900 |
parents | |
children | f6334be47118 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:a06113de4d67 |
---|---|
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 | |
9 Routines to manipulate queues built from doubly linked lists. The | |
10 @code{insque} routine inserts @var{elem} in the queue immediately | |
11 after @var{pred}. The @code{remque} routine removes @var{elem} from | |
12 its containing queue. These routines expect to be passed pointers to | |
13 structures which have as their first members a forward pointer and a | |
14 back pointer, like this prototype (although no prototype is provided): | |
15 | |
16 @example | |
17 struct 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 | |
29 struct qelem { | |
30 struct qelem *q_forw; | |
31 struct qelem *q_back; | |
32 }; | |
33 | |
34 | |
35 void | |
36 insque (struct qelem *elem, struct qelem *pred) | |
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 | |
45 void | |
46 remque (struct qelem *elem) | |
47 { | |
48 elem -> q_forw -> q_back = elem -> q_back; | |
49 elem -> q_back -> q_forw = elem -> q_forw; | |
50 } |