source: doc/theses/mike_brooks_MMath/programs/lst-features-multidir.run.cfa@ b195498

Last change on this file since b195498 was b195498, checked in by Peter A. Buhr <pabuhr@…>, 5 months ago

proofreading intro and background chapters, capitalize section titles, update backtick calls to regular calls

  • Property mode set to 100644
File size: 1.6 KB
Line 
1#include <collections/list.hfa>
2
3
4
5
6int main() {
7
8
9
10
11
12
13
14
15
16
17
18
19
20struct req {
21 int pri, rqr;
22 inline struct by_pri { inline dlink(req); };
23 inline struct by_rqr { inline dlink(req); };
24};
25
26
27
28
29
30
31
32// need to spice this case; can't forward declare nested struct
33P9_EMBEDDED_INFUNC(req, req.by_pri)
34P9_EMBEDDED_INFUNC(req, req.by_rqr)
35P9_EMBEDDED_INFUNC(req.by_pri, dlink(req))
36P9_EMBEDDED_INFUNC(req.by_rqr, dlink(req))
37
38
39
40
41
42
43
44dlist(req, req.by_pri) reqs_pri_global;
45dlist(req, req.by_rqr) reqs_rqr_42;
46dlist(req, req.by_rqr) reqs_rqr_17;
47dlist(req, req.by_rqr) reqs_rqr_99;
48
49struct req
50 r42a = {1, 42},
51 r42b = {2, 42},
52 r17a = {2, 17},
53 r17b = {3, 17},
54 r17c = {4, 17},
55 r99a = {3, 99};
56
57insert_first(reqs_pri_global, r17c);
58insert_first(reqs_pri_global, r99a);
59insert_first(reqs_pri_global, r17b);
60insert_first(reqs_pri_global, r42b);
61insert_first(reqs_pri_global, r17a);
62insert_first(reqs_pri_global, r42a);
63
64insert_first(reqs_rqr_42, r42b);
65insert_first(reqs_rqr_42, r42a);
66
67insert_first(reqs_rqr_17, r17c);
68insert_first(reqs_rqr_17, r17b);
69insert_first(reqs_rqr_17, r17a);
70
71insert_first(reqs_rqr_99, r99a);
72
73
74
75
76
77
78
79
80with(DLINK_VIA(req, req.by_pri)) {
81 while( req & cur = iter( reqs_pri_global ); advance( cur ) )
82 printf("{%d %d} ", cur.pri, cur.rqr);
83 printf("| ");
84}
85
86with(DLINK_VIA(req, req.by_rqr)) {
87 while( req & cur = iter( reqs_rqr_42 ); advance( cur ) )
88 printf("{%d %d} ", cur.pri, cur.rqr);
89 printf("| ");
90 while( req & cur = iter( reqs_rqr_17 ); advance( cur ) )
91 printf("{%d %d} ", cur.pri, cur.rqr);
92 printf("| ");
93 while( req & cur = iter( reqs_rqr_99 ); advance( cur ) )
94 printf("{%d %d} ", cur.pri, cur.rqr);
95 printf("\n");
96}
97
98
99
100
101}
Note: See TracBrowser for help on using the repository browser.