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