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 */;
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]>*/;
25 var2
= NEW_range__Range(&type_range__Rangekernel__Int
);
26 { /* Inline kernel#Int#+ (var_start,var_len) */
27 var5
= var_start
+ var_len
;
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]>*/;
37 var9
= ((short int (*)(val
*))(var8
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var8
) /* is_ok on <var8:Iterator[nullable Object]>*/;
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 */;
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]>*/;
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
);