new c_src
[nit.git] / c_src / range._sep.c
1 /* This C file is generated by NIT to compile module range. */
2 #include "range._sep.h"
3 val_t range___Range___iterator(val_t self) {
4 struct trace_t trace = {NULL, NULL, 43, LOCATE_range___Range___iterator};
5 val_t variable[4];
6 void **closurevariable = NULL;
7 trace.prev = tracehead; tracehead = &trace;
8 trace.file = LOCATE_range;
9 variable[0] = self;
10 variable[2] = variable[0];
11 variable[3] = NEW_IteratorRange_range___IteratorRange___init(variable[2]); /*new IteratorRange[E]*/
12 variable[2] = variable[3];
13 variable[1] = variable[2];
14 goto return_label0;
15 return_label0: while(false);
16 tracehead = trace.prev;
17 return variable[1];
18 }
19 val_t range___Range___is_empty(val_t self) {
20 struct trace_t trace = {NULL, NULL, 55, LOCATE_range___Range___is_empty};
21 val_t variable[4];
22 void **closurevariable = NULL;
23 trace.prev = tracehead; tracehead = &trace;
24 trace.file = LOCATE_range;
25 variable[0] = self;
26 variable[2] = variable[0];
27 variable[2] = ATTR_range___Range____first(variable[2]) /*Range::_first*/;
28 variable[3] = variable[0];
29 variable[3] = ATTR_range___Range____after(variable[3]) /*Range::_after*/;
30 variable[2] = CALL_kernel___Comparable_____geq(variable[2])(variable[2], variable[3]) /*Comparable::>=*/;
31 variable[1] = variable[2];
32 goto return_label1;
33 return_label1: while(false);
34 tracehead = trace.prev;
35 return variable[1];
36 }
37 val_t range___Range___length(val_t self) {
38 struct trace_t trace = {NULL, NULL, 45, LOCATE_range___Range___length};
39 val_t variable[5];
40 void **closurevariable = NULL;
41 trace.prev = tracehead; tracehead = &trace;
42 trace.file = LOCATE_range;
43 variable[0] = self;
44 variable[3] = variable[0];
45 variable[3] = ATTR_range___Range____first(variable[3]) /*Range::_first*/;
46 variable[4] = variable[0];
47 variable[4] = ATTR_range___Range____after(variable[4]) /*Range::_after*/;
48 variable[3] = CALL_kernel___Discrete___distance(variable[3])(variable[3], variable[4]) /*Discrete::distance*/;
49 variable[2] = variable[3];
50 variable[3] = TAG_Bool(UNTAG_Int( variable[2] /*nb*/)>UNTAG_Int( TAG_Int(0)));
51 if (UNTAG_Bool(variable[3])) { /*if*/
52 variable[1] = variable[2] /*nb*/;
53 goto return_label2;
54 } else { /*if*/
55 variable[1] = TAG_Int(0);
56 goto return_label2;
57 }
58 return_label2: while(false);
59 tracehead = trace.prev;
60 return variable[1];
61 }
62 val_t range___Range___has(val_t self, val_t param0) {
63 struct trace_t trace = {NULL, NULL, 30, LOCATE_range___Range___has};
64 val_t variable[5];
65 void **closurevariable = NULL;
66 trace.prev = tracehead; tracehead = &trace;
67 trace.file = LOCATE_range;
68 variable[0] = self;
69 variable[1] = param0;
70 variable[3] = variable[0];
71 variable[3] = ATTR_range___Range____first(variable[3]) /*Range::_first*/;
72 variable[3] = CALL_kernel___Comparable_____geq( variable[1] /*item*/)( variable[1] /*item*/, variable[3]) /*Comparable::>=*/;
73 variable[4] = variable[3];
74 if (UNTAG_Bool(variable[4])) { /* and */
75 variable[4] = variable[0];
76 variable[4] = ATTR_range___Range____last(variable[4]) /*Range::_last*/;
77 variable[4] = CALL_kernel___Comparable_____leq( variable[1] /*item*/)( variable[1] /*item*/, variable[4]) /*Comparable::<=*/;
78 }
79 variable[3] = variable[4];
80 variable[2] = variable[3];
81 goto return_label3;
82 return_label3: while(false);
83 tracehead = trace.prev;
84 return variable[2];
85 }
86 val_t range___Range___has_only(val_t self, val_t param0) {
87 struct trace_t trace = {NULL, NULL, 32, LOCATE_range___Range___has_only};
88 val_t variable[5];
89 void **closurevariable = NULL;
90 trace.prev = tracehead; tracehead = &trace;
91 trace.file = LOCATE_range;
92 variable[0] = self;
93 variable[1] = param0;
94 variable[3] = variable[0];
95 variable[3] = ATTR_range___Range____first(variable[3]) /*Range::_first*/;
96 variable[3] = TAG_Bool((variable[3] == variable[1] /*item*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], variable[1] /*item*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3], variable[1] /*item*/) /*Object::==*/)))));
97 variable[4] = variable[3];
98 if (UNTAG_Bool(variable[4])) { /* and */
99 variable[4] = variable[0];
100 variable[4] = ATTR_range___Range____last(variable[4]) /*Range::_last*/;
101 variable[4] = TAG_Bool(( variable[1] /*item*/ == variable[4]) || (( variable[1] /*item*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*item*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*item*/,variable[4])):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*item*/)( variable[1] /*item*/, variable[4]) /*Object::==*/)))));
102 }
103 variable[3] = variable[4];
104 variable[2] = variable[3];
105 goto return_label4;
106 return_label4: while(false);
107 tracehead = trace.prev;
108 return variable[2];
109 }
110 val_t range___Range___count(val_t self, val_t param0) {
111 struct trace_t trace = {NULL, NULL, 34, LOCATE_range___Range___count};
112 val_t variable[4];
113 void **closurevariable = NULL;
114 trace.prev = tracehead; tracehead = &trace;
115 trace.file = LOCATE_range;
116 variable[0] = self;
117 variable[1] = param0;
118 variable[3] = variable[0];
119 variable[3] = CALL_abstract_collection___Collection___has(variable[3])(variable[3], variable[1] /*item*/) /*Range::has*/;
120 if (UNTAG_Bool(variable[3])) { /*if*/
121 variable[2] = TAG_Int(1);
122 goto return_label5;
123 } else { /*if*/
124 variable[2] = TAG_Int(0);
125 goto return_label5;
126 }
127 return_label5: while(false);
128 tracehead = trace.prev;
129 return variable[2];
130 }
131 val_t range___Range___first(val_t self) {
132 struct trace_t trace = {NULL, NULL, 22, LOCATE_range___Range___first};
133 val_t *variable = NULL;
134 void **closurevariable = NULL;
135 trace.prev = tracehead; tracehead = &trace;
136 trace.file = LOCATE_range;
137 tracehead = trace.prev;
138 return ATTR_range___Range____first( self) /*Range::_first*/;
139 }
140 val_t range___Range___last(val_t self) {
141 struct trace_t trace = {NULL, NULL, 24, LOCATE_range___Range___last};
142 val_t *variable = NULL;
143 void **closurevariable = NULL;
144 trace.prev = tracehead; tracehead = &trace;
145 trace.file = LOCATE_range;
146 tracehead = trace.prev;
147 return ATTR_range___Range____last( self) /*Range::_last*/;
148 }
149 val_t range___Range___after(val_t self) {
150 struct trace_t trace = {NULL, NULL, 27, LOCATE_range___Range___after};
151 val_t *variable = NULL;
152 void **closurevariable = NULL;
153 trace.prev = tracehead; tracehead = &trace;
154 trace.file = LOCATE_range;
155 tracehead = trace.prev;
156 return ATTR_range___Range____after( self) /*Range::_after*/;
157 }
158 void range___Range___init(val_t self, val_t param0, val_t param1, int* init_table) {
159 struct trace_t trace = {NULL, NULL, 57, LOCATE_range___Range___init};
160 val_t variable[6];
161 void **closurevariable = NULL;
162 trace.prev = tracehead; tracehead = &trace;
163 trace.file = LOCATE_range;
164 variable[0] = self;
165 variable[1] = param0;
166 variable[2] = param1;
167 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_Range].i]) return;
168 variable[4] = variable[0];
169 ATTR_range___Range____first(variable[4]) /*Range::_first*/ = variable[1] /*from*/;
170 variable[4] = variable[0];
171 ATTR_range___Range____last(variable[4]) /*Range::_last*/ = variable[2] /*to*/;
172 variable[4] = variable[0];
173 variable[5] = CALL_kernel___Discrete___succ( variable[2] /*to*/)( variable[2] /*to*/) /*Discrete::succ*/;
174 ATTR_range___Range____after(variable[4]) /*Range::_after*/ = variable[5];
175 return_label6: while(false);
176 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_Range].i] = 1;
177 tracehead = trace.prev;
178 return;
179 }
180 void range___Range___without_last(val_t self, val_t param0, val_t param1, int* init_table) {
181 struct trace_t trace = {NULL, NULL, 66, LOCATE_range___Range___without_last};
182 val_t variable[6];
183 void **closurevariable = NULL;
184 trace.prev = tracehead; tracehead = &trace;
185 trace.file = LOCATE_range;
186 variable[0] = self;
187 variable[1] = param0;
188 variable[2] = param1;
189 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_Range].i]) return;
190 variable[4] = variable[0];
191 ATTR_range___Range____first(variable[4]) /*Range::_first*/ = variable[1] /*from*/;
192 variable[4] = variable[0];
193 variable[5] = CALL_kernel___Discrete___prec( variable[2] /*to*/)( variable[2] /*to*/) /*Discrete::prec*/;
194 ATTR_range___Range____last(variable[4]) /*Range::_last*/ = variable[5];
195 variable[4] = variable[0];
196 ATTR_range___Range____after(variable[4]) /*Range::_after*/ = variable[2] /*to*/;
197 return_label7: while(false);
198 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_Range].i] = 1;
199 tracehead = trace.prev;
200 return;
201 }
202 val_t range___IteratorRange___item(val_t self) {
203 struct trace_t trace = {NULL, NULL, 80, LOCATE_range___IteratorRange___item};
204 val_t *variable = NULL;
205 void **closurevariable = NULL;
206 trace.prev = tracehead; tracehead = &trace;
207 trace.file = LOCATE_range;
208 tracehead = trace.prev;
209 return ATTR_range___IteratorRange____item( self) /*IteratorRange::_item*/;
210 }
211 void range___IteratorRange___next(val_t self) {
212 struct trace_t trace = {NULL, NULL, 84, LOCATE_range___IteratorRange___next};
213 val_t variable[4];
214 void **closurevariable = NULL;
215 trace.prev = tracehead; tracehead = &trace;
216 trace.file = LOCATE_range;
217 variable[0] = self;
218 variable[2] = variable[0];
219 variable[3] = variable[0];
220 variable[3] = ATTR_range___IteratorRange____item(variable[3]) /*IteratorRange::_item*/;
221 variable[3] = CALL_kernel___Discrete___succ(variable[3])(variable[3]) /*Discrete::succ*/;
222 ATTR_range___IteratorRange____item(variable[2]) /*IteratorRange::_item*/ = variable[3];
223 return_label8: while(false);
224 tracehead = trace.prev;
225 return;
226 }
227 val_t range___IteratorRange___is_ok(val_t self) {
228 struct trace_t trace = {NULL, NULL, 82, LOCATE_range___IteratorRange___is_ok};
229 val_t variable[4];
230 void **closurevariable = NULL;
231 trace.prev = tracehead; tracehead = &trace;
232 trace.file = LOCATE_range;
233 variable[0] = self;
234 variable[2] = variable[0];
235 variable[2] = ATTR_range___IteratorRange____item(variable[2]) /*IteratorRange::_item*/;
236 variable[3] = variable[0];
237 variable[3] = ATTR_range___IteratorRange____range(variable[3]) /*IteratorRange::_range*/;
238 variable[3] = CALL_range___Range___after(variable[3])(variable[3]) /*Range::after*/;
239 variable[2] = CALL_kernel___Comparable_____l(variable[2])(variable[2], variable[3]) /*Comparable::<*/;
240 variable[1] = variable[2];
241 goto return_label9;
242 return_label9: while(false);
243 tracehead = trace.prev;
244 return variable[1];
245 }
246 void range___IteratorRange___init(val_t self, val_t param0, int* init_table) {
247 struct trace_t trace = {NULL, NULL, 86, LOCATE_range___IteratorRange___init};
248 val_t variable[5];
249 void **closurevariable = NULL;
250 trace.prev = tracehead; tracehead = &trace;
251 trace.file = LOCATE_range;
252 variable[0] = self;
253 variable[1] = param0;
254 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_IteratorRange].i]) return;
255 variable[3] = variable[0];
256 ATTR_range___IteratorRange____range(variable[3]) /*IteratorRange::_range*/ = variable[1] /*r*/;
257 variable[3] = variable[0];
258 variable[4] = CALL_abstract_collection___Collection___first( variable[1] /*r*/)( variable[1] /*r*/) /*Range::first*/;
259 ATTR_range___IteratorRange____item(variable[3]) /*IteratorRange::_item*/ = variable[4];
260 return_label10: while(false);
261 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_IteratorRange].i] = 1;
262 tracehead = trace.prev;
263 return;
264 }