annotate CbC-examples/quicksort/quicksort_cbc2.cbc @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 9117c3b65bc3
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
23
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 #include<stdio.h>
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 #include<stdlib.h>
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 #include<assert.h>
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
4
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 typedef struct {
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 int *v;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 int s;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 int e;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 } QS_IF;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
10
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 typedef void *stack;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 typedef __code (*RET)(QS_IF, stack);
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 typedef struct {
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 int size;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 QS_IF interface;
39
9117c3b65bc3 modify quicksort examples.
kent@zeus.cr.ie.u-ryukyu.ac.jp
parents: 23
diff changeset
16 RET ret;
23
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 } frame, *framep;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
18
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 typedef __code (*RETTYPE)(void*);
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 typedef struct {
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 RETTYPE ret;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 void *ret_arg;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 stack *sp;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 } QS_FINISH;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 #define STACK_SIZE 10240
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
26
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 #include"quicksort_cbc2.h"
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
28
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 __code returner(stack sp)
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 {
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 framep fp = (framep)sp;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 sp += fp->size;
39
9117c3b65bc3 modify quicksort examples.
kent@zeus.cr.ie.u-ryukyu.ac.jp
parents: 23
diff changeset
33 goto fp->ret(fp->interface, sp);
23
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 }
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
35
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 __code quicksort_start(QS_IF recvif, stack sp)
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 {
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 int a,b,c,p;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 a = recvif.v[recvif.s];
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 b = recvif.v[recvif.e];
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 c = recvif.v[(recvif.s+recvif.e)/2];
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
42
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 //printf("quicksort_start: s=%d,e=%d", recvif->s, recvif->e);
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 if (recvif.e <= recvif.s) goto returner(sp);
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
45
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 if (a < b) {
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 if (b < c)
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 p = b;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 else if (a < c)
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 p = c;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 else
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 p = a;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 } else {
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 if (a < c)
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 p = a;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 else if (b < c)
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 p = c;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 else
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 p = b;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 }
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
61
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 goto quicksort_divider (recvif, recvif.s, recvif.e, p, sp);
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 }
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 /* main routine end. */
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
65
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 /* divide routine. */
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 __code quicksort_divider(QS_IF recvif, int s, int e, int p, stack sp)
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 {
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 goto quicksort_divider_s(recvif, s, e, p, sp);
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 }
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 __code quicksort_divider_s(QS_IF recvif, int s, int e, int p, stack sp)
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 {
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 if (recvif.v[s]<p) {
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 s++;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 goto quicksort_divider_s(recvif, s, e, p, sp);
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 } else
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 goto quicksort_divider_e(recvif, s, e, p, sp);
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 }
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 __code quicksort_divider_e(QS_IF recvif, int s, int e, int p, stack sp)
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
80 {
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
81 if (p<recvif.v[e]) {
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 e--;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
83 goto quicksort_divider_e(recvif, s, e, p, sp);
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 } else
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 goto quicksort_swapper(recvif, s, e, p, sp);
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
86 }
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
87 __code quicksort_swapper(QS_IF recvif, int s, int e, int p, stack sp)
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
88 {
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
89 if (s<e) {
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
90 int tmp;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
91 tmp = recvif.v[s];
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 recvif.v[s] = recvif.v[e];
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
93 recvif.v[e] = tmp;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
94 s++;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
95 e--;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
96 goto quicksort_divider(recvif, s, e, p, sp);
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
97 } else {
39
9117c3b65bc3 modify quicksort examples.
kent@zeus.cr.ie.u-ryukyu.ac.jp
parents: 23
diff changeset
98 //assert(e+1==s || s==e);
23
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
99 goto quicksort_treecall(recvif, s, e, sp);
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
100 }
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
101 }
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
102 /* divide routin end. */
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
103
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
104
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
105 /* recursive call routine. */
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
106 __code quicksort_treecall(QS_IF recvif, int s, int e, stack sp)
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
107 {
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
108 framep fp;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
109
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
110 /* interface for first quicksort_start this segment directly jump to. */
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
111 fp = (sp-=sizeof(frame));
39
9117c3b65bc3 modify quicksort examples.
kent@zeus.cr.ie.u-ryukyu.ac.jp
parents: 23
diff changeset
112 fp->ret = quicksort_start;
23
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
113 fp->size = sizeof(frame);
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
114 fp->interface.v = recvif.v;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
115 fp->interface.s = e+1;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
116 fp->interface.e = recvif.e;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
117
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
118 /* recvif is used by second quicksort_start. */
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
119 recvif.e = e;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
120 goto quicksort_start(recvif, sp);
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
121 }
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
122 /* recursive call routine end. */
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
123
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
124 __code
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
125 quicksort(int *v, int s, int e, RETTYPE ret, void *arg )
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
126 {
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
127 framep fp;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
128 stack sp0, sp;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
129 sp0 = malloc(STACK_SIZE);
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
130 printf("allocate a stack %p\n", sp0);
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
131 sp = sp0 + STACK_SIZE;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
132 QS_FINISH *finish_if;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
133
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
134 /* interface for quicksort_finish. */
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
135 finish_if = (sp -= sizeof(*finish_if));
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
136 finish_if->ret = ret;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
137 finish_if->ret_arg = arg;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
138 finish_if->sp = sp0;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
139
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
140 /* interface for quicksort_start. */
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
141 /* frame for quicksort_finish. */
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
142 fp = (sp -= sizeof(frame));
39
9117c3b65bc3 modify quicksort examples.
kent@zeus.cr.ie.u-ryukyu.ac.jp
parents: 23
diff changeset
143 fp->ret = quicksort_finish;
23
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
144 fp->size = sizeof(frame);
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
145 fp->interface.v = v;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
146 fp->interface.s = s;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
147 fp->interface.e = e;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
148
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
149 goto quicksort_start(fp->interface, sp);
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
150 }
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
151 __code
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
152 quicksort_finish(QS_IF recvif, stack sp)
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
153 {
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
154 QS_FINISH *interface = (QS_FINISH*)sp;
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
155 free(interface->sp);
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
156 printf("free the stack %p\n", interface->sp);
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
157 goto interface->ret(interface->ret_arg);
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
158 }
775dfe898662 add quicksort version 2.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
159