Merge: model: add `MType::as_notnullable` to remove the `nullable` modifier
[nit.git] / c_src / collection.sep.1.c
1 #include "collection.sep.0.h"
2 /* method collection#Sequence#subarray for (self: Sequence[nullable Object], Int, Int): Array[nullable Object] */
3 val* collection__Sequence__subarray(val* self, long p0, long p1) {
4 val* var /* : Array[nullable Object] */;
5 long var_start /* var start: Int */;
6 long var_len /* var len: Int */;
7 val* var1 /* : Array[nullable Object] */;
8 val* var_a /* var a: Array[nullable Object] */;
9 val* var2 /* : Range[Int] */;
10 long var3 /* : Int */;
11 long var5 /* : Int */;
12 val* var6 /* : Discrete */;
13 val* var7 /* : Discrete */;
14 val* var8 /* : Iterator[nullable Object] */;
15 short int var9 /* : Bool */;
16 val* var10 /* : nullable Object */;
17 long var_i /* var i: Int */;
18 long var11 /* : Int */;
19 val* var12 /* : nullable Object */;
20 var_start = p0;
21 var_len = p1;
22 var1 = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arrayabstract_collection__Sequence_FT0]);
23 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var_len) /* with_capacity on <var1:Array[nullable Object]>*/;
24 var_a = var1;
25 var2 = NEW_range__Range(&type_range__Rangekernel__Int);
26 { /* Inline kernel#Int#+ (var_start,var_len) */
27 var5 = var_start + var_len;
28 var3 = var5;
29 goto RET_LABEL4;
30 RET_LABEL4:(void)0;
31 }
32 var6 = BOX_kernel__Int(var_start); /* autobox from Int to Discrete */
33 var7 = BOX_kernel__Int(var3); /* autobox from Int to Discrete */
34 ((void (*)(val*, val*, val*))(var2->class->vft[COLOR_range__Range__without_last]))(var2, var6, var7) /* without_last on <var2:Range[Int]>*/;
35 var8 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__iterator]))(var2) /* iterator on <var2:Range[Int]>*/;
36 for(;;) {
37 var9 = ((short int (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var8) /* is_ok on <var8:Iterator[nullable Object]>*/;
38 if(!var9) break;
39 var10 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__item]))(var8) /* item on <var8:Iterator[nullable Object]>*/;
40 var11 = ((struct instance_kernel__Int*)var10)->value; /* autounbox from nullable Object to Int */;
41 var_i = var11;
42 var12 = ((val* (*)(val*, long))(self->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(self, var_i) /* [] on <self:Sequence[nullable Object]>*/;
43 ((void (*)(val*, val*))(var_a->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_a, var12) /* add on <var_a:Array[nullable Object]>*/;
44 CONTINUE_label: (void)0;
45 ((void (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__next]))(var8) /* next on <var8:Iterator[nullable Object]>*/;
46 }
47 BREAK_label: (void)0;
48 var = var_a;
49 goto RET_LABEL;
50 RET_LABEL:;
51 return var;
52 }
53 /* method collection#Sequence#subarray for (self: Object, Int, Int): Array[nullable Object] */
54 val* VIRTUAL_collection__Sequence__subarray(val* self, long p0, long p1) {
55 val* var /* : Array[nullable Object] */;
56 val* var1 /* : Array[nullable Object] */;
57 var1 = collection__Sequence__subarray(self, p0, p1);
58 var = var1;
59 RET_LABEL:;
60 return var;
61 }