use nitg to bootstrap; drop bootstrap of nitc
[nit.git] / c_src / range.sep.1.c
1 #include "range.sep.0.h"
2 /* method range#Range#first for (self: Range[Discrete]): Discrete */
3 val* range__Range__first(val* self) {
4 val* var /* : Discrete */;
5 val* var1 /* : Discrete */;
6 var1 = self->attrs[COLOR_range__Range___first].val; /* _first on <self:Range[Discrete]> */
7 if (var1 == NULL) {
8 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _first", "lib/standard/collection/range.nit", 22);
9 exit(1);
10 }
11 var = var1;
12 RET_LABEL:;
13 return var;
14 }
15 /* method range#Range#first for (self: Object): nullable Object */
16 val* VIRTUAL_range__Range__first(val* self) {
17 val* var /* : nullable Object */;
18 val* var1 /* : Discrete */;
19 var1 = range__Range__first(self);
20 var = var1;
21 RET_LABEL:;
22 return var;
23 }
24 /* method range#Range#last for (self: Range[Discrete]): Discrete */
25 val* range__Range__last(val* self) {
26 val* var /* : Discrete */;
27 val* var1 /* : Discrete */;
28 var1 = self->attrs[COLOR_range__Range___last].val; /* _last on <self:Range[Discrete]> */
29 if (var1 == NULL) {
30 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _last", "lib/standard/collection/range.nit", 24);
31 exit(1);
32 }
33 var = var1;
34 RET_LABEL:;
35 return var;
36 }
37 /* method range#Range#last for (self: Object): Discrete */
38 val* VIRTUAL_range__Range__last(val* self) {
39 val* var /* : Discrete */;
40 val* var1 /* : Discrete */;
41 var1 = range__Range__last(self);
42 var = var1;
43 RET_LABEL:;
44 return var;
45 }
46 /* method range#Range#after for (self: Range[Discrete]): Discrete */
47 val* range__Range__after(val* self) {
48 val* var /* : Discrete */;
49 val* var1 /* : Discrete */;
50 var1 = self->attrs[COLOR_range__Range___after].val; /* _after on <self:Range[Discrete]> */
51 if (var1 == NULL) {
52 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _after", "lib/standard/collection/range.nit", 27);
53 exit(1);
54 }
55 var = var1;
56 RET_LABEL:;
57 return var;
58 }
59 /* method range#Range#after for (self: Object): Discrete */
60 val* VIRTUAL_range__Range__after(val* self) {
61 val* var /* : Discrete */;
62 val* var1 /* : Discrete */;
63 var1 = range__Range__after(self);
64 var = var1;
65 RET_LABEL:;
66 return var;
67 }
68 /* method range#Range#has for (self: Range[Discrete], Discrete): Bool */
69 short int range__Range__has(val* self, val* p0) {
70 short int var /* : Bool */;
71 short int var1 /* : Bool */;
72 int cltype;
73 int idtype;
74 const struct type* type_struct;
75 val* var_item /* var item: Discrete */;
76 short int var2 /* : Bool */;
77 val* var3 /* : Discrete */;
78 short int var4 /* : Bool */;
79 short int var_ /* var : Bool */;
80 val* var5 /* : Discrete */;
81 short int var6 /* : Bool */;
82 /* Covariant cast for argument 0 (item) <p0:Discrete> isa Collection#0 */
83 /* <p0:Discrete> isa Collection#0 */
84 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Collection_FT0];
85 cltype = type_struct->color;
86 idtype = type_struct->id;
87 if(cltype >= p0->type->table_size) {
88 var1 = 0;
89 } else {
90 var1 = p0->type->type_table[cltype] == idtype;
91 }
92 if (!var1) {
93 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/range.nit", 30);
94 exit(1);
95 }
96 var_item = p0;
97 var3 = self->attrs[COLOR_range__Range___first].val; /* _first on <self:Range[Discrete]> */
98 if (var3 == NULL) {
99 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _first", "lib/standard/collection/range.nit", 30);
100 exit(1);
101 }
102 var4 = ((short int (*)(val*, val*))(var_item->class->vft[COLOR_kernel__Comparable___62d_61d]))(var_item, var3) /* >= on <var_item:Discrete>*/;
103 var_ = var4;
104 if (var4){
105 var5 = self->attrs[COLOR_range__Range___last].val; /* _last on <self:Range[Discrete]> */
106 if (var5 == NULL) {
107 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _last", "lib/standard/collection/range.nit", 30);
108 exit(1);
109 }
110 var6 = ((short int (*)(val*, val*))(var_item->class->vft[COLOR_kernel__Comparable___60d_61d]))(var_item, var5) /* <= on <var_item:Discrete>*/;
111 var2 = var6;
112 } else {
113 var2 = var_;
114 }
115 var = var2;
116 goto RET_LABEL;
117 RET_LABEL:;
118 return var;
119 }
120 /* method range#Range#has for (self: Object, nullable Object): Bool */
121 short int VIRTUAL_range__Range__has(val* self, val* p0) {
122 short int var /* : Bool */;
123 short int var1 /* : Bool */;
124 var1 = range__Range__has(self, p0);
125 var = var1;
126 RET_LABEL:;
127 return var;
128 }
129 /* method range#Range#has_only for (self: Range[Discrete], Discrete): Bool */
130 short int range__Range__has_only(val* self, val* p0) {
131 short int var /* : Bool */;
132 short int var1 /* : Bool */;
133 int cltype;
134 int idtype;
135 const struct type* type_struct;
136 val* var_item /* var item: Discrete */;
137 short int var2 /* : Bool */;
138 short int var3 /* : Bool */;
139 val* var4 /* : Discrete */;
140 short int var5 /* : Bool */;
141 short int var_ /* var : Bool */;
142 val* var6 /* : Discrete */;
143 short int var7 /* : Bool */;
144 short int var_8 /* var : Bool */;
145 short int var9 /* : Bool */;
146 /* Covariant cast for argument 0 (item) <p0:Discrete> isa Collection#0 */
147 /* <p0:Discrete> isa Collection#0 */
148 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Collection_FT0];
149 cltype = type_struct->color;
150 idtype = type_struct->id;
151 if(cltype >= p0->type->table_size) {
152 var1 = 0;
153 } else {
154 var1 = p0->type->type_table[cltype] == idtype;
155 }
156 if (!var1) {
157 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/range.nit", 32);
158 exit(1);
159 }
160 var_item = p0;
161 var4 = self->attrs[COLOR_range__Range___first].val; /* _first on <self:Range[Discrete]> */
162 if (var4 == NULL) {
163 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _first", "lib/standard/collection/range.nit", 32);
164 exit(1);
165 }
166 var5 = ((short int (*)(val*, val*))(var4->class->vft[COLOR_kernel__Object___61d_61d]))(var4, var_item) /* == on <var4:Discrete>*/;
167 var_ = var5;
168 if (var5){
169 var6 = self->attrs[COLOR_range__Range___last].val; /* _last on <self:Range[Discrete]> */
170 if (var6 == NULL) {
171 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _last", "lib/standard/collection/range.nit", 32);
172 exit(1);
173 }
174 var7 = ((short int (*)(val*, val*))(var_item->class->vft[COLOR_kernel__Object___61d_61d]))(var_item, var6) /* == on <var_item:Discrete>*/;
175 var3 = var7;
176 } else {
177 var3 = var_;
178 }
179 var_8 = var3;
180 if (var3){
181 var2 = var_8;
182 } else {
183 var9 = ((short int (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__is_empty]))(self) /* is_empty on <self:Range[Discrete]>*/;
184 var2 = var9;
185 }
186 var = var2;
187 goto RET_LABEL;
188 RET_LABEL:;
189 return var;
190 }
191 /* method range#Range#has_only for (self: Object, nullable Object): Bool */
192 short int VIRTUAL_range__Range__has_only(val* self, val* p0) {
193 short int var /* : Bool */;
194 short int var1 /* : Bool */;
195 var1 = range__Range__has_only(self, p0);
196 var = var1;
197 RET_LABEL:;
198 return var;
199 }
200 /* method range#Range#count for (self: Range[Discrete], Discrete): Int */
201 long range__Range__count(val* self, val* p0) {
202 long var /* : Int */;
203 short int var1 /* : Bool */;
204 int cltype;
205 int idtype;
206 const struct type* type_struct;
207 val* var_item /* var item: Discrete */;
208 short int var2 /* : Bool */;
209 long var3 /* : Int */;
210 long var4 /* : Int */;
211 /* Covariant cast for argument 0 (item) <p0:Discrete> isa Collection#0 */
212 /* <p0:Discrete> isa Collection#0 */
213 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Collection_FT0];
214 cltype = type_struct->color;
215 idtype = type_struct->id;
216 if(cltype >= p0->type->table_size) {
217 var1 = 0;
218 } else {
219 var1 = p0->type->type_table[cltype] == idtype;
220 }
221 if (!var1) {
222 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/range.nit", 34);
223 exit(1);
224 }
225 var_item = p0;
226 var2 = ((short int (*)(val*, val*))(self->class->vft[COLOR_abstract_collection__Collection__has]))(self, var_item) /* has on <self:Range[Discrete]>*/;
227 if (var2){
228 var3 = 1;
229 var = var3;
230 goto RET_LABEL;
231 } else {
232 var4 = 0;
233 var = var4;
234 goto RET_LABEL;
235 }
236 RET_LABEL:;
237 return var;
238 }
239 /* method range#Range#count for (self: Object, nullable Object): Int */
240 long VIRTUAL_range__Range__count(val* self, val* p0) {
241 long var /* : Int */;
242 long var1 /* : Int */;
243 var1 = range__Range__count(self, p0);
244 var = var1;
245 RET_LABEL:;
246 return var;
247 }
248 /* method range#Range#iterator for (self: Range[Discrete]): Iterator[Discrete] */
249 val* range__Range__iterator(val* self) {
250 val* var /* : Iterator[Discrete] */;
251 val* var1 /* : IteratorRange[Discrete] */;
252 var1 = NEW_range__IteratorRange(self->type->resolution_table->types[COLOR_range__IteratorRangerange__Range_FT0]);
253 ((void (*)(val*, val*))(var1->class->vft[COLOR_range__IteratorRange__init]))(var1, self) /* init on <var1:IteratorRange[Discrete]>*/;
254 CHECK_NEW_range__IteratorRange(var1);
255 var = var1;
256 goto RET_LABEL;
257 RET_LABEL:;
258 return var;
259 }
260 /* method range#Range#iterator for (self: Object): Iterator[nullable Object] */
261 val* VIRTUAL_range__Range__iterator(val* self) {
262 val* var /* : Iterator[nullable Object] */;
263 val* var1 /* : Iterator[Discrete] */;
264 var1 = range__Range__iterator(self);
265 var = var1;
266 RET_LABEL:;
267 return var;
268 }
269 /* method range#Range#iterate for (self: Range[Discrete]) */
270 void range__Range__iterate(val* self) {
271 val* var /* : Discrete */;
272 val* var_c /* var c: Discrete */;
273 val* var1 /* : Discrete */;
274 val* var_l /* var l: Discrete */;
275 short int var2 /* : Bool */;
276 val* var3 /* : Discrete */;
277 short int var4 /* : Bool */;
278 int cltype;
279 int idtype;
280 const struct type* type_struct;
281 var = self->attrs[COLOR_range__Range___first].val; /* _first on <self:Range[Discrete]> */
282 if (var == NULL) {
283 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _first", "lib/standard/collection/range.nit", 48);
284 exit(1);
285 }
286 var_c = var;
287 var1 = self->attrs[COLOR_range__Range___last].val; /* _last on <self:Range[Discrete]> */
288 if (var1 == NULL) {
289 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _last", "lib/standard/collection/range.nit", 49);
290 exit(1);
291 }
292 var_l = var1;
293 for(;;) {
294 var2 = ((short int (*)(val*, val*))(var_c->class->vft[COLOR_kernel__Comparable___60d_61d]))(var_c, var_l) /* <= on <var_c:Discrete>*/;
295 if (!var2) break;
296 printf("NOT YET IMPLEMENTED AClosureCallExpr:lib/standard/collection/range.nit:51,4--10\n");
297 var3 = ((val* (*)(val*))(var_c->class->vft[COLOR_kernel__Discrete__succ]))(var_c) /* succ on <var_c:Discrete>*/;
298 /* <var3:Discrete> isa Range#0 */
299 type_struct = self->type->resolution_table->types[COLOR_range__Range_FT0];
300 cltype = type_struct->color;
301 idtype = type_struct->id;
302 if(cltype >= var3->type->table_size) {
303 var4 = 0;
304 } else {
305 var4 = var3->type->type_table[cltype] == idtype;
306 }
307 if (!var4) {
308 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/range.nit", 52);
309 exit(1);
310 }
311 var_c = var3;
312 CONTINUE_label: (void)0;
313 }
314 BREAK_label: (void)0;
315 RET_LABEL:;
316 }
317 /* method range#Range#iterate for (self: Object) */
318 void VIRTUAL_range__Range__iterate(val* self) {
319 range__Range__iterate(self);
320 RET_LABEL:;
321 }
322 /* method range#Range#length for (self: Range[Discrete]): Int */
323 long range__Range__length(val* self) {
324 long var /* : Int */;
325 val* var1 /* : Discrete */;
326 val* var2 /* : Discrete */;
327 long var3 /* : Int */;
328 long var_nb /* var nb: Int */;
329 long var4 /* : Int */;
330 short int var5 /* : Bool */;
331 short int var7 /* : Bool */;
332 int cltype;
333 int idtype;
334 short int var8 /* : Bool */;
335 long var9 /* : Int */;
336 var1 = self->attrs[COLOR_range__Range___first].val; /* _first on <self:Range[Discrete]> */
337 if (var1 == NULL) {
338 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _first", "lib/standard/collection/range.nit", 58);
339 exit(1);
340 }
341 var2 = self->attrs[COLOR_range__Range___after].val; /* _after on <self:Range[Discrete]> */
342 if (var2 == NULL) {
343 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _after", "lib/standard/collection/range.nit", 58);
344 exit(1);
345 }
346 var3 = ((long (*)(val*, val*))(var1->class->vft[COLOR_kernel__Discrete__distance]))(var1, var2) /* distance on <var1:Discrete>*/;
347 var_nb = var3;
348 var4 = 0;
349 { /* Inline kernel#Int#> (var_nb,var4) */
350 /* Covariant cast for argument 0 (i) <var4:Int> isa OTHER */
351 /* <var4:Int> isa OTHER */
352 var7 = 1; /* easy <var4:Int> isa OTHER*/
353 if (!var7) {
354 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259);
355 exit(1);
356 }
357 var8 = var_nb > var4;
358 var5 = var8;
359 goto RET_LABEL6;
360 RET_LABEL6:(void)0;
361 }
362 if (var5){
363 var = var_nb;
364 goto RET_LABEL;
365 } else {
366 var9 = 0;
367 var = var9;
368 goto RET_LABEL;
369 }
370 RET_LABEL:;
371 return var;
372 }
373 /* method range#Range#length for (self: Object): Int */
374 long VIRTUAL_range__Range__length(val* self) {
375 long var /* : Int */;
376 long var1 /* : Int */;
377 var1 = range__Range__length(self);
378 var = var1;
379 RET_LABEL:;
380 return var;
381 }
382 /* method range#Range#is_empty for (self: Range[Discrete]): Bool */
383 short int range__Range__is_empty(val* self) {
384 short int var /* : Bool */;
385 val* var1 /* : Discrete */;
386 val* var2 /* : Discrete */;
387 short int var3 /* : Bool */;
388 var1 = self->attrs[COLOR_range__Range___first].val; /* _first on <self:Range[Discrete]> */
389 if (var1 == NULL) {
390 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _first", "lib/standard/collection/range.nit", 66);
391 exit(1);
392 }
393 var2 = self->attrs[COLOR_range__Range___after].val; /* _after on <self:Range[Discrete]> */
394 if (var2 == NULL) {
395 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _after", "lib/standard/collection/range.nit", 66);
396 exit(1);
397 }
398 var3 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_kernel__Comparable___62d_61d]))(var1, var2) /* >= on <var1:Discrete>*/;
399 var = var3;
400 goto RET_LABEL;
401 RET_LABEL:;
402 return var;
403 }
404 /* method range#Range#is_empty for (self: Object): Bool */
405 short int VIRTUAL_range__Range__is_empty(val* self) {
406 short int var /* : Bool */;
407 short int var1 /* : Bool */;
408 var1 = range__Range__is_empty(self);
409 var = var1;
410 RET_LABEL:;
411 return var;
412 }
413 /* method range#Range#init for (self: Range[Discrete], Discrete, Discrete) */
414 void range__Range__init(val* self, val* p0, val* p1) {
415 short int var /* : Bool */;
416 int cltype;
417 int idtype;
418 const struct type* type_struct;
419 short int var1 /* : Bool */;
420 int cltype2;
421 int idtype3;
422 const struct type* type_struct4;
423 val* var_from /* var from: Discrete */;
424 val* var_to /* var to: Discrete */;
425 val* var5 /* : Discrete */;
426 short int var6 /* : Bool */;
427 int cltype7;
428 int idtype8;
429 const struct type* type_struct9;
430 /* Covariant cast for argument 0 (from) <p0:Discrete> isa Range#0 */
431 /* <p0:Discrete> isa Range#0 */
432 type_struct = self->type->resolution_table->types[COLOR_range__Range_FT0];
433 cltype = type_struct->color;
434 idtype = type_struct->id;
435 if(cltype >= p0->type->table_size) {
436 var = 0;
437 } else {
438 var = p0->type->type_table[cltype] == idtype;
439 }
440 if (!var) {
441 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/range.nit", 68);
442 exit(1);
443 }
444 /* Covariant cast for argument 1 (to) <p1:Discrete> isa Range#0 */
445 /* <p1:Discrete> isa Range#0 */
446 type_struct4 = self->type->resolution_table->types[COLOR_range__Range_FT0];
447 cltype2 = type_struct4->color;
448 idtype3 = type_struct4->id;
449 if(cltype2 >= p1->type->table_size) {
450 var1 = 0;
451 } else {
452 var1 = p1->type->type_table[cltype2] == idtype3;
453 }
454 if (!var1) {
455 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/range.nit", 68);
456 exit(1);
457 }
458 var_from = p0;
459 var_to = p1;
460 self->attrs[COLOR_range__Range___first].val = var_from; /* _first on <self:Range[Discrete]> */
461 self->attrs[COLOR_range__Range___last].val = var_to; /* _last on <self:Range[Discrete]> */
462 var5 = ((val* (*)(val*))(var_to->class->vft[COLOR_kernel__Discrete__succ]))(var_to) /* succ on <var_to:Discrete>*/;
463 /* <var5:Discrete> isa Range#0 */
464 type_struct9 = self->type->resolution_table->types[COLOR_range__Range_FT0];
465 cltype7 = type_struct9->color;
466 idtype8 = type_struct9->id;
467 if(cltype7 >= var5->type->table_size) {
468 var6 = 0;
469 } else {
470 var6 = var5->type->type_table[cltype7] == idtype8;
471 }
472 if (!var6) {
473 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/range.nit", 74);
474 exit(1);
475 }
476 self->attrs[COLOR_range__Range___after].val = var5; /* _after on <self:Range[Discrete]> */
477 RET_LABEL:;
478 }
479 /* method range#Range#init for (self: Object, Discrete, Discrete) */
480 void VIRTUAL_range__Range__init(val* self, val* p0, val* p1) {
481 range__Range__init(self, p0, p1);
482 RET_LABEL:;
483 }
484 /* method range#Range#without_last for (self: Range[Discrete], Discrete, Discrete) */
485 void range__Range__without_last(val* self, val* p0, val* p1) {
486 short int var /* : Bool */;
487 int cltype;
488 int idtype;
489 const struct type* type_struct;
490 short int var1 /* : Bool */;
491 int cltype2;
492 int idtype3;
493 const struct type* type_struct4;
494 val* var_from /* var from: Discrete */;
495 val* var_to /* var to: Discrete */;
496 val* var5 /* : Discrete */;
497 short int var6 /* : Bool */;
498 int cltype7;
499 int idtype8;
500 const struct type* type_struct9;
501 /* Covariant cast for argument 0 (from) <p0:Discrete> isa Range#0 */
502 /* <p0:Discrete> isa Range#0 */
503 type_struct = self->type->resolution_table->types[COLOR_range__Range_FT0];
504 cltype = type_struct->color;
505 idtype = type_struct->id;
506 if(cltype >= p0->type->table_size) {
507 var = 0;
508 } else {
509 var = p0->type->type_table[cltype] == idtype;
510 }
511 if (!var) {
512 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/range.nit", 77);
513 exit(1);
514 }
515 /* Covariant cast for argument 1 (to) <p1:Discrete> isa Range#0 */
516 /* <p1:Discrete> isa Range#0 */
517 type_struct4 = self->type->resolution_table->types[COLOR_range__Range_FT0];
518 cltype2 = type_struct4->color;
519 idtype3 = type_struct4->id;
520 if(cltype2 >= p1->type->table_size) {
521 var1 = 0;
522 } else {
523 var1 = p1->type->type_table[cltype2] == idtype3;
524 }
525 if (!var1) {
526 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/range.nit", 77);
527 exit(1);
528 }
529 var_from = p0;
530 var_to = p1;
531 self->attrs[COLOR_range__Range___first].val = var_from; /* _first on <self:Range[Discrete]> */
532 var5 = ((val* (*)(val*))(var_to->class->vft[COLOR_kernel__Discrete__prec]))(var_to) /* prec on <var_to:Discrete>*/;
533 /* <var5:Discrete> isa Range#0 */
534 type_struct9 = self->type->resolution_table->types[COLOR_range__Range_FT0];
535 cltype7 = type_struct9->color;
536 idtype8 = type_struct9->id;
537 if(cltype7 >= var5->type->table_size) {
538 var6 = 0;
539 } else {
540 var6 = var5->type->type_table[cltype7] == idtype8;
541 }
542 if (!var6) {
543 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/range.nit", 82);
544 exit(1);
545 }
546 self->attrs[COLOR_range__Range___last].val = var5; /* _last on <self:Range[Discrete]> */
547 self->attrs[COLOR_range__Range___after].val = var_to; /* _after on <self:Range[Discrete]> */
548 RET_LABEL:;
549 }
550 /* method range#Range#without_last for (self: Object, Discrete, Discrete) */
551 void VIRTUAL_range__Range__without_last(val* self, val* p0, val* p1) {
552 range__Range__without_last(self, p0, p1);
553 RET_LABEL:;
554 }
555 /* method range#IteratorRange#item for (self: IteratorRange[Discrete]): Discrete */
556 val* range__IteratorRange__item(val* self) {
557 val* var /* : Discrete */;
558 val* var1 /* : Discrete */;
559 var1 = self->attrs[COLOR_range__IteratorRange___item].val; /* _item on <self:IteratorRange[Discrete]> */
560 if (var1 == NULL) {
561 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _item", "lib/standard/collection/range.nit", 91);
562 exit(1);
563 }
564 var = var1;
565 RET_LABEL:;
566 return var;
567 }
568 /* method range#IteratorRange#item for (self: Object): nullable Object */
569 val* VIRTUAL_range__IteratorRange__item(val* self) {
570 val* var /* : nullable Object */;
571 val* var1 /* : Discrete */;
572 var1 = range__IteratorRange__item(self);
573 var = var1;
574 RET_LABEL:;
575 return var;
576 }
577 /* method range#IteratorRange#is_ok for (self: IteratorRange[Discrete]): Bool */
578 short int range__IteratorRange__is_ok(val* self) {
579 short int var /* : Bool */;
580 val* var1 /* : Discrete */;
581 val* var2 /* : Range[Discrete] */;
582 val* var3 /* : Discrete */;
583 short int var4 /* : Bool */;
584 var1 = self->attrs[COLOR_range__IteratorRange___item].val; /* _item on <self:IteratorRange[Discrete]> */
585 if (var1 == NULL) {
586 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _item", "lib/standard/collection/range.nit", 93);
587 exit(1);
588 }
589 var2 = self->attrs[COLOR_range__IteratorRange___range].val; /* _range on <self:IteratorRange[Discrete]> */
590 if (var2 == NULL) {
591 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _range", "lib/standard/collection/range.nit", 93);
592 exit(1);
593 }
594 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_range__Range__after]))(var2) /* after on <var2:Range[Discrete]>*/;
595 var4 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_kernel__Comparable___60d]))(var1, var3) /* < on <var1:Discrete>*/;
596 var = var4;
597 goto RET_LABEL;
598 RET_LABEL:;
599 return var;
600 }
601 /* method range#IteratorRange#is_ok for (self: Object): Bool */
602 short int VIRTUAL_range__IteratorRange__is_ok(val* self) {
603 short int var /* : Bool */;
604 short int var1 /* : Bool */;
605 var1 = range__IteratorRange__is_ok(self);
606 var = var1;
607 RET_LABEL:;
608 return var;
609 }
610 /* method range#IteratorRange#next for (self: IteratorRange[Discrete]) */
611 void range__IteratorRange__next(val* self) {
612 val* var /* : Discrete */;
613 val* var1 /* : Discrete */;
614 short int var2 /* : Bool */;
615 int cltype;
616 int idtype;
617 const struct type* type_struct;
618 var = self->attrs[COLOR_range__IteratorRange___item].val; /* _item on <self:IteratorRange[Discrete]> */
619 if (var == NULL) {
620 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _item", "lib/standard/collection/range.nit", 95);
621 exit(1);
622 }
623 var1 = ((val* (*)(val*))(var->class->vft[COLOR_kernel__Discrete__succ]))(var) /* succ on <var:Discrete>*/;
624 /* <var1:Discrete> isa IteratorRange#0 */
625 type_struct = self->type->resolution_table->types[COLOR_range__IteratorRange_FT0];
626 cltype = type_struct->color;
627 idtype = type_struct->id;
628 if(cltype >= var1->type->table_size) {
629 var2 = 0;
630 } else {
631 var2 = var1->type->type_table[cltype] == idtype;
632 }
633 if (!var2) {
634 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/range.nit", 95);
635 exit(1);
636 }
637 self->attrs[COLOR_range__IteratorRange___item].val = var1; /* _item on <self:IteratorRange[Discrete]> */
638 RET_LABEL:;
639 }
640 /* method range#IteratorRange#next for (self: Object) */
641 void VIRTUAL_range__IteratorRange__next(val* self) {
642 range__IteratorRange__next(self);
643 RET_LABEL:;
644 }
645 /* method range#IteratorRange#init for (self: IteratorRange[Discrete], Range[Discrete]) */
646 void range__IteratorRange__init(val* self, val* p0) {
647 short int var /* : Bool */;
648 int cltype;
649 int idtype;
650 const struct type* type_struct;
651 val* var_r /* var r: Range[Discrete] */;
652 val* var1 /* : nullable Object */;
653 /* Covariant cast for argument 0 (r) <p0:Range[Discrete]> isa Range[IteratorRange#0] */
654 /* <p0:Range[Discrete]> isa Range[IteratorRange#0] */
655 type_struct = self->type->resolution_table->types[COLOR_range__Rangerange__IteratorRange_FT0];
656 cltype = type_struct->color;
657 idtype = type_struct->id;
658 if(cltype >= p0->type->table_size) {
659 var = 0;
660 } else {
661 var = p0->type->type_table[cltype] == idtype;
662 }
663 if (!var) {
664 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/range.nit", 97);
665 exit(1);
666 }
667 var_r = p0;
668 self->attrs[COLOR_range__IteratorRange___range].val = var_r; /* _range on <self:IteratorRange[Discrete]> */
669 var1 = ((val* (*)(val*))(var_r->class->vft[COLOR_abstract_collection__Collection__first]))(var_r) /* first on <var_r:Range[Discrete]>*/;
670 self->attrs[COLOR_range__IteratorRange___item].val = var1; /* _item on <self:IteratorRange[Discrete]> */
671 RET_LABEL:;
672 }
673 /* method range#IteratorRange#init for (self: Object, Range[Discrete]) */
674 void VIRTUAL_range__IteratorRange__init(val* self, val* p0) {
675 range__IteratorRange__init(self, p0);
676 RET_LABEL:;
677 }
678 /* method range#Discrete#times for (self: Discrete): Range[Discrete] */
679 val* range__Discrete__times(val* self) {
680 val* var /* : Range[Discrete] */;
681 val* var1 /* : Range[Discrete] */;
682 long var2 /* : Int */;
683 short int var3 /* : Bool */;
684 int cltype;
685 int idtype;
686 const struct type* type_struct;
687 long var4 /* : Int */;
688 val* var5 /* : Discrete */;
689 val* var6 /* : Discrete */;
690 var1 = NEW_range__Range(self->type->resolution_table->types[COLOR_range__Rangekernel__Comparable_VTOTHER]);
691 var2 = 0;
692 /* <var2:Int> isa OTHER */
693 type_struct = self->type->resolution_table->types[COLOR_kernel__Comparable_VTOTHER];
694 cltype = type_struct->color;
695 idtype = type_struct->id;
696 if(cltype >= (&type_kernel__Int)->table_size) {
697 var3 = 0;
698 } else {
699 var3 = (&type_kernel__Int)->type_table[cltype] == idtype;
700 }
701 if (!var3) {
702 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/collection/range.nit", 109);
703 exit(1);
704 }
705 var4 = 1;
706 var5 = ((val* (*)(val*, long))(self->class->vft[COLOR_kernel__Discrete___45d]))(self, var4) /* - on <self:Discrete>*/;
707 var6 = BOX_kernel__Int(var2); /* autobox from Int to Discrete */
708 ((void (*)(val*, val*, val*))(var1->class->vft[COLOR_range__Range__init]))(var1, var6, var5) /* init on <var1:Range[Discrete]>*/;
709 CHECK_NEW_range__Range(var1);
710 var = var1;
711 goto RET_LABEL;
712 RET_LABEL:;
713 return var;
714 }
715 /* method range#Discrete#times for (self: Object): Range[Discrete] */
716 val* VIRTUAL_range__Discrete__times(val* self) {
717 val* var /* : Range[Discrete] */;
718 val* var1 /* : Range[Discrete] */;
719 var1 = range__Discrete__times(self);
720 var = var1;
721 RET_LABEL:;
722 return var;
723 }