1 #include "ropes.sep.0.h"
2 /* method ropes#TupleLeafNodePos#curr_node for (self: TupleLeafNodePos): LeafNode */
3 val
* ropes__TupleLeafNodePos__curr_node(val
* self
) {
4 val
* var
/* : LeafNode */;
5 val
* var1
/* : LeafNode */;
6 var1
= self
->attrs
[COLOR_ropes__TupleLeafNodePos___64dcurr_node
].val
; /* @curr_node on <self:TupleLeafNodePos> */
8 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @curr_node", "lib/standard/ropes.nit", 24);
15 /* method ropes#TupleLeafNodePos#curr_node for (self: Object): LeafNode */
16 val
* VIRTUAL_ropes__TupleLeafNodePos__curr_node(val
* self
) {
17 val
* var
/* : LeafNode */;
18 val
* var1
/* : LeafNode */;
19 var1
= ropes__TupleLeafNodePos__curr_node(self
);
24 /* method ropes#TupleLeafNodePos#curr_node= for (self: TupleLeafNodePos, LeafNode) */
25 void ropes__TupleLeafNodePos__curr_node_61d(val
* self
, val
* p0
) {
26 self
->attrs
[COLOR_ropes__TupleLeafNodePos___64dcurr_node
].val
= p0
; /* @curr_node on <self:TupleLeafNodePos> */
29 /* method ropes#TupleLeafNodePos#curr_node= for (self: Object, LeafNode) */
30 void VIRTUAL_ropes__TupleLeafNodePos__curr_node_61d(val
* self
, val
* p0
) {
31 ropes__TupleLeafNodePos__curr_node_61d(self
, p0
);
34 /* method ropes#TupleLeafNodePos#corrected_pos for (self: TupleLeafNodePos): Int */
35 long ropes__TupleLeafNodePos__corrected_pos(val
* self
) {
37 long var1
/* : Int */;
38 var1
= self
->attrs
[COLOR_ropes__TupleLeafNodePos___64dcorrected_pos
].l
; /* @corrected_pos on <self:TupleLeafNodePos> */
43 /* method ropes#TupleLeafNodePos#corrected_pos for (self: Object): Int */
44 long VIRTUAL_ropes__TupleLeafNodePos__corrected_pos(val
* self
) {
46 long var1
/* : Int */;
47 var1
= ropes__TupleLeafNodePos__corrected_pos(self
);
52 /* method ropes#TupleLeafNodePos#corrected_pos= for (self: TupleLeafNodePos, Int) */
53 void ropes__TupleLeafNodePos__corrected_pos_61d(val
* self
, long p0
) {
54 self
->attrs
[COLOR_ropes__TupleLeafNodePos___64dcorrected_pos
].l
= p0
; /* @corrected_pos on <self:TupleLeafNodePos> */
57 /* method ropes#TupleLeafNodePos#corrected_pos= for (self: Object, Int) */
58 void VIRTUAL_ropes__TupleLeafNodePos__corrected_pos_61d(val
* self
, long p0
) {
59 ropes__TupleLeafNodePos__corrected_pos_61d(self
, p0
);
62 /* method ropes#TupleLeafNodePos#visit_stack for (self: TupleLeafNodePos): List[TupleVisitNode] */
63 val
* ropes__TupleLeafNodePos__visit_stack(val
* self
) {
64 val
* var
/* : List[TupleVisitNode] */;
65 val
* var1
/* : List[TupleVisitNode] */;
66 var1
= self
->attrs
[COLOR_ropes__TupleLeafNodePos___64dvisit_stack
].val
; /* @visit_stack on <self:TupleLeafNodePos> */
68 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @visit_stack", "lib/standard/ropes.nit", 26);
75 /* method ropes#TupleLeafNodePos#visit_stack for (self: Object): List[TupleVisitNode] */
76 val
* VIRTUAL_ropes__TupleLeafNodePos__visit_stack(val
* self
) {
77 val
* var
/* : List[TupleVisitNode] */;
78 val
* var1
/* : List[TupleVisitNode] */;
79 var1
= ropes__TupleLeafNodePos__visit_stack(self
);
84 /* method ropes#TupleLeafNodePos#visit_stack= for (self: TupleLeafNodePos, List[TupleVisitNode]) */
85 void ropes__TupleLeafNodePos__visit_stack_61d(val
* self
, val
* p0
) {
86 self
->attrs
[COLOR_ropes__TupleLeafNodePos___64dvisit_stack
].val
= p0
; /* @visit_stack on <self:TupleLeafNodePos> */
89 /* method ropes#TupleLeafNodePos#visit_stack= for (self: Object, List[TupleVisitNode]) */
90 void VIRTUAL_ropes__TupleLeafNodePos__visit_stack_61d(val
* self
, val
* p0
) {
91 ropes__TupleLeafNodePos__visit_stack_61d(self
, p0
);
94 /* method ropes#TupleLeafNodePos#init for (self: TupleLeafNodePos, LeafNode, Int, List[TupleVisitNode]) */
95 void ropes__TupleLeafNodePos__init(val
* self
, val
* p0
, long p1
, val
* p2
) {
96 self
->attrs
[COLOR_ropes__TupleLeafNodePos___64dcurr_node
].val
= p0
; /* @curr_node on <self:TupleLeafNodePos> */
97 self
->attrs
[COLOR_ropes__TupleLeafNodePos___64dcorrected_pos
].l
= p1
; /* @corrected_pos on <self:TupleLeafNodePos> */
98 self
->attrs
[COLOR_ropes__TupleLeafNodePos___64dvisit_stack
].val
= p2
; /* @visit_stack on <self:TupleLeafNodePos> */
101 /* method ropes#TupleLeafNodePos#init for (self: Object, LeafNode, Int, List[TupleVisitNode]) */
102 void VIRTUAL_ropes__TupleLeafNodePos__init(val
* self
, val
* p0
, long p1
, val
* p2
) {
103 ropes__TupleLeafNodePos__init(self
, p0
, p1
, p2
);
106 /* method ropes#Rope#str_representation for (self: Rope): nullable String */
107 val
* ropes__Rope__str_representation(val
* self
) {
108 val
* var
/* : nullable String */;
109 val
* var1
/* : nullable String */;
110 var1
= self
->attrs
[COLOR_ropes__Rope___64dstr_representation
].val
; /* @str_representation on <self:Rope> */
115 /* method ropes#Rope#str_representation for (self: Object): nullable String */
116 val
* VIRTUAL_ropes__Rope__str_representation(val
* self
) {
117 val
* var
/* : nullable String */;
118 val
* var1
/* : nullable String */;
119 var1
= ropes__Rope__str_representation(self
);
124 /* method ropes#Rope#str_representation= for (self: Rope, nullable String) */
125 void ropes__Rope__str_representation_61d(val
* self
, val
* p0
) {
126 self
->attrs
[COLOR_ropes__Rope___64dstr_representation
].val
= p0
; /* @str_representation on <self:Rope> */
129 /* method ropes#Rope#str_representation= for (self: Object, nullable String) */
130 void VIRTUAL_ropes__Rope__str_representation_61d(val
* self
, val
* p0
) {
131 ropes__Rope__str_representation_61d(self
, p0
);
134 /* method ropes#Rope#parent_node for (self: Rope): RopeNode */
135 val
* ropes__Rope__parent_node(val
* self
) {
136 val
* var
/* : RopeNode */;
137 val
* var1
/* : RopeNode */;
138 var1
= self
->attrs
[COLOR_ropes__Rope___64dparent_node
].val
; /* @parent_node on <self:Rope> */
140 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @parent_node", "lib/standard/ropes.nit", 39);
147 /* method ropes#Rope#parent_node for (self: Object): RopeNode */
148 val
* VIRTUAL_ropes__Rope__parent_node(val
* self
) {
149 val
* var
/* : RopeNode */;
150 val
* var1
/* : RopeNode */;
151 var1
= ropes__Rope__parent_node(self
);
156 /* method ropes#Rope#parent_node= for (self: Rope, RopeNode) */
157 void ropes__Rope__parent_node_61d(val
* self
, val
* p0
) {
158 self
->attrs
[COLOR_ropes__Rope___64dparent_node
].val
= p0
; /* @parent_node on <self:Rope> */
161 /* method ropes#Rope#parent_node= for (self: Object, RopeNode) */
162 void VIRTUAL_ropes__Rope__parent_node_61d(val
* self
, val
* p0
) {
163 ropes__Rope__parent_node_61d(self
, p0
);
166 /* method ropes#Rope#init for (self: Rope) */
167 void ropes__Rope__init(val
* self
) {
168 val
* var
/* : ConcatNode */;
169 var
= NEW_ropes__ConcatNode(&type_ropes__ConcatNode
);
170 ((void (*)(val
*))(var
->class->vft
[COLOR_ropes__ConcatNode__init
]))(var
) /* init on <var:ConcatNode>*/;
171 CHECK_NEW_ropes__ConcatNode(var
);
172 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__Rope__parent_node_61d
]))(self
, var
) /* parent_node= on <self:Rope>*/;
175 /* method ropes#Rope#init for (self: Object) */
176 void VIRTUAL_ropes__Rope__init(val
* self
) {
177 ropes__Rope__init(self
);
180 /* method ropes#Rope#with_string for (self: Rope, AbstractString) */
181 void ropes__Rope__with_string(val
* self
, val
* p0
) {
182 val
* var_str
/* var str: AbstractString */;
183 val
* var
/* : ConcatNode */;
184 val
* var1
/* : RopeNode */;
185 short int var2
/* : Bool */;
188 val
* var3
/* : LeafNode */;
189 val
* var4
/* : RopeNode */;
190 short int var5
/* : Bool */;
194 var
= NEW_ropes__ConcatNode(&type_ropes__ConcatNode
);
195 ((void (*)(val
*))(var
->class->vft
[COLOR_ropes__ConcatNode__init
]))(var
) /* init on <var:ConcatNode>*/;
196 CHECK_NEW_ropes__ConcatNode(var
);
197 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__Rope__parent_node_61d
]))(self
, var
) /* parent_node= on <self:Rope>*/;
198 var1
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__Rope__parent_node
]))(self
) /* parent_node on <self:Rope>*/;
199 /* <var1:RopeNode> isa ConcatNode */
200 cltype
= type_ropes__ConcatNode
.color
;
201 idtype
= type_ropes__ConcatNode
.id
;
202 if(cltype
>= var1
->type
->table_size
) {
205 var2
= var1
->type
->type_table
[cltype
] == idtype
;
208 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/ropes.nit", 50);
211 var3
= NEW_ropes__LeafNode(&type_ropes__LeafNode
);
212 ((void (*)(val
*, val
*))(var3
->class->vft
[COLOR_ropes__LeafNode__init
]))(var3
, var_str
) /* init on <var3:LeafNode>*/;
213 CHECK_NEW_ropes__LeafNode(var3
);
214 ((void (*)(val
*, val
*))(var1
->class->vft
[COLOR_ropes__ConcatNode__right_child_61d
]))(var1
, var3
) /* right_child= on <var1:RopeNode(ConcatNode)>*/;
215 var4
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__Rope__parent_node
]))(self
) /* parent_node on <self:Rope>*/;
216 /* <var4:RopeNode> isa ConcatNode */
217 cltype6
= type_ropes__ConcatNode
.color
;
218 idtype7
= type_ropes__ConcatNode
.id
;
219 if(cltype6
>= var4
->type
->table_size
) {
222 var5
= var4
->type
->type_table
[cltype6
] == idtype7
;
225 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/ropes.nit", 51);
228 ((void (*)(val
*))(var4
->class->vft
[COLOR_ropes__ConcatNode__update_data
]))(var4
) /* update_data on <var4:RopeNode(ConcatNode)>*/;
231 /* method ropes#Rope#with_string for (self: Object, AbstractString) */
232 void VIRTUAL_ropes__Rope__with_string(val
* self
, val
* p0
) {
233 ropes__Rope__with_string(self
, p0
);
236 /* method ropes#Rope#chars for (self: Rope): SequenceRead[Char] */
237 val
* ropes__Rope__chars(val
* self
) {
238 val
* var
/* : SequenceRead[Char] */;
239 val
* var1
/* : CharRopeView */;
240 var1
= NEW_ropes__CharRopeView(&type_ropes__CharRopeView
);
241 ((void (*)(val
*, val
*))(var1
->class->vft
[COLOR_ropes__CharRopeView__init
]))(var1
, self
) /* init on <var1:CharRopeView>*/;
242 CHECK_NEW_ropes__CharRopeView(var1
);
248 /* method ropes#Rope#chars for (self: Object): SequenceRead[Char] */
249 val
* VIRTUAL_ropes__Rope__chars(val
* self
) {
250 val
* var
/* : SequenceRead[Char] */;
251 val
* var1
/* : SequenceRead[Char] */;
252 var1
= ropes__Rope__chars(self
);
257 /* method ropes#Rope#length for (self: Rope): Int */
258 long ropes__Rope__length(val
* self
) {
259 long var
/* : Int */;
260 val
* var1
/* : RopeNode */;
261 long var2
/* : Int */;
262 var1
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__Rope__parent_node
]))(self
) /* parent_node on <self:Rope>*/;
263 var2
= ((long (*)(val
*))(var1
->class->vft
[COLOR_ropes__RopeNode__length
]))(var1
) /* length on <var1:RopeNode>*/;
269 /* method ropes#Rope#length for (self: Object): Int */
270 long VIRTUAL_ropes__Rope__length(val
* self
) {
271 long var
/* : Int */;
272 long var1
/* : Int */;
273 var1
= ropes__Rope__length(self
);
278 /* method ropes#Rope#to_s for (self: Rope): String */
279 val
* ropes__Rope__to_s(val
* self
) {
280 val
* var
/* : String */;
281 val
* var1
/* : nullable String */;
282 val
* var2
/* : null */;
283 short int var3
/* : Bool */;
284 val
* var4
/* : String */;
285 val
* var5
/* : nullable String */;
286 var1
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__Rope__str_representation
]))(self
) /* str_representation on <self:Rope>*/;
289 var3
= 1; /* is null */
291 var3
= 0; /* arg is null but recv is not */
294 var4
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__Rope__flatten
]))(self
) /* flatten on <self:Rope>*/;
298 var5
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__Rope__str_representation
]))(self
) /* str_representation on <self:Rope>*/;
300 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/ropes.nit", 70);
308 /* method ropes#Rope#to_s for (self: Object): String */
309 val
* VIRTUAL_ropes__Rope__to_s(val
* self
) {
310 val
* var
/* : String */;
311 val
* var1
/* : String */;
312 var1
= ropes__Rope__to_s(self
);
317 /* method ropes#Rope#flatten for (self: Rope): String */
318 val
* ropes__Rope__flatten(val
* self
) {
319 val
* var
/* : String */;
320 long var1
/* : Int */;
321 long var2
/* : Int */;
322 long var3
/* : Int */;
323 long var5
/* : Int */;
324 char* var6
/* : NativeString */;
325 char* var_native_final_str
/* var native_final_str: NativeString */;
326 long var7
/* : Int */;
327 char var8
/* : Char */;
328 long var10
/* : Int */;
329 long var_offset
/* var offset: Int */;
330 val
* var11
/* : DFSRopeLeafIterator */;
331 val
* var_iter
/* var iter: DFSRopeLeafIterator */;
332 short int var12
/* : Bool */;
333 val
* var13
/* : nullable Object */;
334 val
* var14
/* : String */;
335 char* var15
/* : NativeString */;
336 val
* var16
/* : nullable Object */;
337 val
* var17
/* : String */;
338 long var18
/* : Int */;
339 long var19
/* : Int */;
340 val
* var21
/* : nullable Object */;
341 val
* var22
/* : String */;
342 long var23
/* : Int */;
343 long var24
/* : Int */;
344 long var26
/* : Int */;
345 long var27
/* : Int */;
346 val
* var28
/* : String */;
347 var1
= ((long (*)(val
*))(self
->class->vft
[COLOR_ropes__Rope__length
]))(self
) /* length on <self:Rope>*/;
349 { /* Inline kernel#Int#+ (var1,var2) */
355 var6
= ((char* (*)(val
*, long))(self
->class->vft
[COLOR_string__StringCapable__calloc_string
]))(self
, var3
) /* calloc_string on <self:Rope>*/;
356 var_native_final_str
= var6
;
357 var7
= ((long (*)(val
*))(self
->class->vft
[COLOR_ropes__Rope__length
]))(self
) /* length on <self:Rope>*/;
359 { /* Inline string#NativeString#[]= (var_native_final_str,var7,var8) */
360 var_native_final_str
[var7
]=var8
;
365 var11
= NEW_ropes__DFSRopeLeafIterator(&type_ropes__DFSRopeLeafIterator
);
366 ((void (*)(val
*, val
*))(var11
->class->vft
[COLOR_ropes__DFSRopeLeafIterator__init
]))(var11
, self
) /* init on <var11:DFSRopeLeafIterator>*/;
367 CHECK_NEW_ropes__DFSRopeLeafIterator(var11
);
370 var12
= ((short int (*)(val
*))(var_iter
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var_iter
) /* is_ok on <var_iter:DFSRopeLeafIterator>*/;
372 var13
= ((val
* (*)(val
*))(var_iter
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var_iter
) /* item on <var_iter:DFSRopeLeafIterator>*/;
373 var14
= ((val
* (*)(val
*))(var13
->class->vft
[COLOR_ropes__LeafNode__value
]))(var13
) /* value on <var13:nullable Object(LeafNode)>*/;
374 var15
= var14
->attrs
[COLOR_string__AbstractString___items
].str
; /* _items on <var14:String> */
375 var16
= ((val
* (*)(val
*))(var_iter
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var_iter
) /* item on <var_iter:DFSRopeLeafIterator>*/;
376 var17
= ((val
* (*)(val
*))(var16
->class->vft
[COLOR_ropes__LeafNode__value
]))(var16
) /* value on <var16:nullable Object(LeafNode)>*/;
377 var18
= ((long (*)(val
*))(var17
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var17
) /* length on <var17:String>*/;
379 { /* Inline string#NativeString#copy_to (var15,var_native_final_str,var18,var19,var_offset) */
380 memcpy(var_native_final_str
+var_offset
,var15
+var19
,var18
);
383 var21
= ((val
* (*)(val
*))(var_iter
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var_iter
) /* item on <var_iter:DFSRopeLeafIterator>*/;
384 var22
= ((val
* (*)(val
*))(var21
->class->vft
[COLOR_ropes__LeafNode__value
]))(var21
) /* value on <var21:nullable Object(LeafNode)>*/;
385 var23
= ((long (*)(val
*))(var22
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var22
) /* length on <var22:String>*/;
386 { /* Inline kernel#Int#+ (var_offset,var23) */
387 var26
= var_offset
+ var23
;
393 ((void (*)(val
*))(var_iter
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var_iter
) /* next on <var_iter:DFSRopeLeafIterator>*/;
394 CONTINUE_label
: (void)0;
396 BREAK_label
: (void)0;
397 var27
= ((long (*)(val
*))(self
->class->vft
[COLOR_ropes__Rope__length
]))(self
) /* length on <self:Rope>*/;
398 var28
= string__NativeString__to_s_with_length(var_native_final_str
, var27
);
404 /* method ropes#Rope#flatten for (self: Object): String */
405 val
* VIRTUAL_ropes__Rope__flatten(val
* self
) {
406 val
* var
/* : String */;
407 val
* var1
/* : String */;
408 var1
= ropes__Rope__flatten(self
);
413 /* method ropes#Rope#get_node_for_pos for (self: Rope, Int): TupleLeafNodePos */
414 val
* ropes__Rope__get_node_for_pos(val
* self
, long p0
) {
415 val
* var
/* : TupleLeafNodePos */;
416 long var_position
/* var position: Int */;
417 short int var1
/* : Bool */;
418 long var2
/* : Int */;
419 short int var3
/* : Bool */;
420 short int var5
/* : Bool */;
423 short int var6
/* : Bool */;
424 short int var_
/* var : Bool */;
425 long var7
/* : Int */;
426 short int var8
/* : Bool */;
427 short int var10
/* : Bool */;
430 short int var13
/* : Bool */;
431 val
* var14
/* : RopeNode */;
432 val
* var_curr_node
/* var curr_node: nullable RopeNode */;
433 val
* var15
/* : List[TupleVisitNode] */;
434 val
* var_visit_stack
/* var visit_stack: List[TupleVisitNode] */;
435 short int var16
/* : Bool */;
438 val
* var19
/* : TupleVisitNode */;
439 val
* var_curr_visit_tuple
/* var curr_visit_tuple: TupleVisitNode */;
440 short int var20
/* : Bool */;
441 val
* var21
/* : nullable RopeNode */;
442 val
* var22
/* : null */;
443 short int var23
/* : Bool */;
444 val
* var24
/* : nullable RopeNode */;
445 long var25
/* : Int */;
446 short int var26
/* : Bool */;
447 short int var28
/* : Bool */;
450 short int var31
/* : Bool */;
451 short int var32
/* : Bool */;
452 val
* var33
/* : nullable RopeNode */;
453 val
* var34
/* : nullable RopeNode */;
454 val
* var35
/* : null */;
455 short int var36
/* : Bool */;
456 short int var37
/* : Bool */;
457 short int var38
/* : Bool */;
458 val
* var39
/* : nullable RopeNode */;
459 val
* var40
/* : null */;
460 short int var41
/* : Bool */;
461 val
* var42
/* : nullable RopeNode */;
462 long var43
/* : Int */;
463 long var44
/* : Int */;
464 long var46
/* : Int */;
465 val
* var47
/* : nullable RopeNode */;
467 val
* var48
/* : String */;
468 char* var49
/* : NativeString */;
469 long var50
/* : Int */;
470 val
* var51
/* : String */;
471 short int var52
/* : Bool */;
474 val
* var55
/* : TupleLeafNodePos */;
477 { /* Inline kernel#Int#>= (var_position,var2) */
478 /* Covariant cast for argument 0 (i) <var2:Int> isa OTHER */
479 /* <var2:Int> isa OTHER */
480 var5
= 1; /* easy <var2:Int> isa OTHER*/
482 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 258);
485 var6
= var_position
>= var2
;
492 var7
= ((long (*)(val
*))(self
->class->vft
[COLOR_ropes__Rope__length
]))(self
) /* length on <self:Rope>*/;
493 { /* Inline kernel#Int#< (var_position,var7) */
494 /* Covariant cast for argument 0 (i) <var7:Int> isa OTHER */
495 /* <var7:Int> isa OTHER */
496 var10
= 1; /* easy <var7:Int> isa OTHER*/
498 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 257);
501 var13
= var_position
< var7
;
511 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Assert failed", "lib/standard/ropes.nit", 96);
514 var14
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__Rope__parent_node
]))(self
) /* parent_node on <self:Rope>*/;
515 var_curr_node
= var14
;
516 var15
= NEW_list__List(&type_list__Listropes__TupleVisitNode
);
517 ((void (*)(val
*))(var15
->class->vft
[COLOR_list__List__init
]))(var15
) /* init on <var15:List[TupleVisitNode]>*/;
518 CHECK_NEW_list__List(var15
);
519 var_visit_stack
= var15
;
521 /* <var_curr_node:nullable RopeNode> isa ConcatNode */
522 cltype17
= type_ropes__ConcatNode
.color
;
523 idtype18
= type_ropes__ConcatNode
.id
;
524 if(var_curr_node
== NULL
) {
527 if(cltype17
>= var_curr_node
->type
->table_size
) {
530 var16
= var_curr_node
->type
->type_table
[cltype17
] == idtype18
;
534 var19
= NEW_ropes__TupleVisitNode(&type_ropes__TupleVisitNode
);
535 ((void (*)(val
*, val
*))(var19
->class->vft
[COLOR_ropes__TupleVisitNode__init
]))(var19
, var_curr_node
) /* init on <var19:TupleVisitNode>*/;
536 CHECK_NEW_ropes__TupleVisitNode(var19
);
537 var_curr_visit_tuple
= var19
;
538 var21
= ((val
* (*)(val
*))(var_curr_node
->class->vft
[COLOR_ropes__ConcatNode__left_child
]))(var_curr_node
) /* left_child on <var_curr_node:nullable RopeNode(ConcatNode)>*/;
541 var23
= 0; /* is null */
543 var23
= 1; /* arg is null and recv is not */
548 var24
= ((val
* (*)(val
*))(var_curr_node
->class->vft
[COLOR_ropes__ConcatNode__left_child
]))(var_curr_node
) /* left_child on <var_curr_node:nullable RopeNode(ConcatNode)>*/;
550 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/ropes.nit", 107);
553 var25
= ((long (*)(val
*))(var24
->class->vft
[COLOR_ropes__RopeNode__length
]))(var24
) /* length on <var24:nullable RopeNode>*/;
555 { /* Inline kernel#Int#< (var_position,var25) */
556 /* Covariant cast for argument 0 (i) <var25:Int> isa OTHER */
557 /* <var25:Int> isa OTHER */
558 var28
= 1; /* easy <var25:Int> isa OTHER*/
560 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 257);
563 var31
= var_position
< var25
;
572 ((void (*)(val
*, short int))(var_curr_visit_tuple
->class->vft
[COLOR_ropes__TupleVisitNode__left_visited_61d
]))(var_curr_visit_tuple
, var32
) /* left_visited= on <var_curr_visit_tuple:TupleVisitNode>*/;
573 var33
= ((val
* (*)(val
*))(var_curr_node
->class->vft
[COLOR_ropes__ConcatNode__left_child
]))(var_curr_node
) /* left_child on <var_curr_node:nullable RopeNode(ConcatNode)>*/;
574 var_curr_node
= var33
;
576 var34
= ((val
* (*)(val
*))(var_curr_node
->class->vft
[COLOR_ropes__ConcatNode__right_child
]))(var_curr_node
) /* right_child on <var_curr_node:nullable RopeNode(ConcatNode)>*/;
579 var36
= 0; /* is null */
581 var36
= 1; /* arg is null and recv is not */
585 ((void (*)(val
*, short int))(var_curr_visit_tuple
->class->vft
[COLOR_ropes__TupleVisitNode__left_visited_61d
]))(var_curr_visit_tuple
, var37
) /* left_visited= on <var_curr_visit_tuple:TupleVisitNode>*/;
587 ((void (*)(val
*, short int))(var_curr_visit_tuple
->class->vft
[COLOR_ropes__TupleVisitNode__right_visited_61d
]))(var_curr_visit_tuple
, var38
) /* right_visited= on <var_curr_visit_tuple:TupleVisitNode>*/;
588 var39
= ((val
* (*)(val
*))(var_curr_node
->class->vft
[COLOR_ropes__ConcatNode__left_child
]))(var_curr_node
) /* left_child on <var_curr_node:nullable RopeNode(ConcatNode)>*/;
591 var41
= 0; /* is null */
593 var41
= 1; /* arg is null and recv is not */
596 var42
= ((val
* (*)(val
*))(var_curr_node
->class->vft
[COLOR_ropes__ConcatNode__left_child
]))(var_curr_node
) /* left_child on <var_curr_node:nullable RopeNode(ConcatNode)>*/;
598 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/ropes.nit", 113);
601 var43
= ((long (*)(val
*))(var42
->class->vft
[COLOR_ropes__RopeNode__length
]))(var42
) /* length on <var42:nullable RopeNode>*/;
603 { /* Inline kernel#Int#- (var_position,var43) */
604 var46
= var_position
- var43
;
609 var_position
= var44
;
612 var47
= ((val
* (*)(val
*))(var_curr_node
->class->vft
[COLOR_ropes__ConcatNode__right_child
]))(var_curr_node
) /* right_child on <var_curr_node:nullable RopeNode(ConcatNode)>*/;
613 var_curr_node
= var47
;
618 var49
= "Fatal Error";
620 var51
= string__NativeString__to_s_with_length(var49
, var50
);
624 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_file__Object__print
]))(self
, var48
) /* print on <self:Rope>*/;
625 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Aborted", "lib/standard/ropes.nit", 117);
629 ((void (*)(val
*, val
*))(var_visit_stack
->class->vft
[COLOR_abstract_collection__Sequence__push
]))(var_visit_stack
, var_curr_visit_tuple
) /* push on <var_visit_stack:List[TupleVisitNode]>*/;
631 /* <var_curr_node:nullable RopeNode> isa LeafNode */
632 cltype53
= type_ropes__LeafNode
.color
;
633 idtype54
= type_ropes__LeafNode
.id
;
634 if(var_curr_node
== NULL
) {
637 if(cltype53
>= var_curr_node
->type
->table_size
) {
640 var52
= var_curr_node
->type
->type_table
[cltype53
] == idtype54
;
644 var55
= NEW_ropes__TupleLeafNodePos(&type_ropes__TupleLeafNodePos
);
645 ((void (*)(val
*, val
*, long, val
*))(var55
->class->vft
[COLOR_ropes__TupleLeafNodePos__init
]))(var55
, var_curr_node
, var_position
, var_visit_stack
) /* init on <var55:TupleLeafNodePos>*/;
646 CHECK_NEW_ropes__TupleLeafNodePos(var55
);
652 CONTINUE_label
: (void)0;
654 BREAK_label
: (void)0;
658 /* method ropes#Rope#get_node_for_pos for (self: Object, Int): TupleLeafNodePos */
659 val
* VIRTUAL_ropes__Rope__get_node_for_pos(val
* self
, long p0
) {
660 val
* var
/* : TupleLeafNodePos */;
661 val
* var1
/* : TupleLeafNodePos */;
662 var1
= ropes__Rope__get_node_for_pos(self
, p0
);
667 /* method ropes#Rope#+ for (self: Rope, Rope): Rope */
668 val
* ropes__Rope___43d(val
* self
, val
* p0
) {
669 val
* var
/* : Rope */;
670 val
* var_other
/* var other: Rope */;
671 val
* var1
/* : BufferRope */;
672 val
* var_new_rope
/* var new_rope: BufferRope */;
673 val
* var2
/* : DFSRopeLeafIterator */;
674 val
* var_first_iter
/* var first_iter: DFSRopeLeafIterator */;
675 short int var3
/* : Bool */;
676 val
* var4
/* : nullable Object */;
677 val
* var5
/* : String */;
678 val
* var6
/* : BufferRope */;
679 val
* var7
/* : DFSRopeLeafIterator */;
680 val
* var_second_iter
/* var second_iter: DFSRopeLeafIterator */;
681 short int var8
/* : Bool */;
682 val
* var9
/* : nullable Object */;
683 val
* var10
/* : String */;
684 val
* var11
/* : BufferRope */;
686 var1
= NEW_ropes__BufferRope(&type_ropes__BufferRope
);
687 ((void (*)(val
*))(var1
->class->vft
[COLOR_ropes__BufferRope__init
]))(var1
) /* init on <var1:BufferRope>*/;
688 CHECK_NEW_ropes__BufferRope(var1
);
690 var2
= NEW_ropes__DFSRopeLeafIterator(&type_ropes__DFSRopeLeafIterator
);
691 ((void (*)(val
*, val
*))(var2
->class->vft
[COLOR_ropes__DFSRopeLeafIterator__init
]))(var2
, self
) /* init on <var2:DFSRopeLeafIterator>*/;
692 CHECK_NEW_ropes__DFSRopeLeafIterator(var2
);
693 var_first_iter
= var2
;
695 var3
= ((short int (*)(val
*))(var_first_iter
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var_first_iter
) /* is_ok on <var_first_iter:DFSRopeLeafIterator>*/;
697 var4
= ((val
* (*)(val
*))(var_first_iter
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var_first_iter
) /* item on <var_first_iter:DFSRopeLeafIterator>*/;
698 var5
= ((val
* (*)(val
*))(var4
->class->vft
[COLOR_ropes__LeafNode__value
]))(var4
) /* value on <var4:nullable Object(LeafNode)>*/;
699 var6
= ((val
* (*)(val
*, val
*))(var_new_rope
->class->vft
[COLOR_ropes__BufferRope__append
]))(var_new_rope
, var5
) /* append on <var_new_rope:BufferRope>*/;
701 ((void (*)(val
*))(var_first_iter
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var_first_iter
) /* next on <var_first_iter:DFSRopeLeafIterator>*/;
702 CONTINUE_label
: (void)0;
704 BREAK_label
: (void)0;
705 var7
= NEW_ropes__DFSRopeLeafIterator(&type_ropes__DFSRopeLeafIterator
);
706 ((void (*)(val
*, val
*))(var7
->class->vft
[COLOR_ropes__DFSRopeLeafIterator__init
]))(var7
, var_other
) /* init on <var7:DFSRopeLeafIterator>*/;
707 CHECK_NEW_ropes__DFSRopeLeafIterator(var7
);
708 var_second_iter
= var7
;
710 var8
= ((short int (*)(val
*))(var_second_iter
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var_second_iter
) /* is_ok on <var_second_iter:DFSRopeLeafIterator>*/;
712 var9
= ((val
* (*)(val
*))(var_second_iter
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var_second_iter
) /* item on <var_second_iter:DFSRopeLeafIterator>*/;
713 var10
= ((val
* (*)(val
*))(var9
->class->vft
[COLOR_ropes__LeafNode__value
]))(var9
) /* value on <var9:nullable Object(LeafNode)>*/;
714 var11
= ((val
* (*)(val
*, val
*))(var_new_rope
->class->vft
[COLOR_ropes__BufferRope__append
]))(var_new_rope
, var10
) /* append on <var_new_rope:BufferRope>*/;
716 ((void (*)(val
*))(var_second_iter
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var_second_iter
) /* next on <var_second_iter:DFSRopeLeafIterator>*/;
717 CONTINUE_label12
: (void)0;
719 BREAK_label12
: (void)0;
725 /* method ropes#Rope#+ for (self: Object, Rope): Rope */
726 val
* VIRTUAL_ropes__Rope___43d(val
* self
, val
* p0
) {
727 val
* var
/* : Rope */;
728 val
* var1
/* : Rope */;
729 var1
= ropes__Rope___43d(self
, p0
);
734 /* method ropes#Rope#multi_concat for (self: Rope, Array[Rope]): Rope */
735 val
* ropes__Rope__multi_concat(val
* self
, val
* p0
) {
736 val
* var
/* : Rope */;
737 val
* var_ropes
/* var ropes: Array[Rope] */;
738 val
* var1
/* : BufferRope */;
739 val
* var_new_rope
/* var new_rope: BufferRope */;
740 val
* var2
/* : Iterator[LeafNode] */;
741 val
* var_self_iter
/* var self_iter: Iterator[LeafNode] */;
742 short int var3
/* : Bool */;
743 val
* var4
/* : nullable Object */;
744 val
* var5
/* : String */;
745 val
* var6
/* : BufferRope */;
746 val
* var7
/* : Iterator[nullable Object] */;
747 short int var8
/* : Bool */;
748 val
* var9
/* : nullable Object */;
749 val
* var_i
/* var i: Rope */;
750 val
* var10
/* : Iterator[LeafNode] */;
751 val
* var_iter
/* var iter: Iterator[LeafNode] */;
752 short int var11
/* : Bool */;
753 val
* var12
/* : nullable Object */;
754 val
* var13
/* : String */;
755 val
* var14
/* : BufferRope */;
757 var1
= NEW_ropes__BufferRope(&type_ropes__BufferRope
);
758 ((void (*)(val
*))(var1
->class->vft
[COLOR_ropes__BufferRope__init
]))(var1
) /* init on <var1:BufferRope>*/;
759 CHECK_NEW_ropes__BufferRope(var1
);
761 var2
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__Rope__iterator
]))(self
) /* iterator on <self:Rope>*/;
762 var_self_iter
= var2
;
764 var3
= ((short int (*)(val
*))(var_self_iter
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var_self_iter
) /* is_ok on <var_self_iter:Iterator[LeafNode]>*/;
766 var4
= ((val
* (*)(val
*))(var_self_iter
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var_self_iter
) /* item on <var_self_iter:Iterator[LeafNode]>*/;
767 var5
= ((val
* (*)(val
*))(var4
->class->vft
[COLOR_ropes__LeafNode__value
]))(var4
) /* value on <var4:nullable Object(LeafNode)>*/;
768 var6
= ((val
* (*)(val
*, val
*))(var_new_rope
->class->vft
[COLOR_ropes__BufferRope__append
]))(var_new_rope
, var5
) /* append on <var_new_rope:BufferRope>*/;
770 ((void (*)(val
*))(var_self_iter
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var_self_iter
) /* next on <var_self_iter:Iterator[LeafNode]>*/;
771 CONTINUE_label
: (void)0;
773 BREAK_label
: (void)0;
774 var7
= ((val
* (*)(val
*))(var_ropes
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_ropes
) /* iterator on <var_ropes:Array[Rope]>*/;
776 var8
= ((short int (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var7
) /* is_ok on <var7:Iterator[nullable Object]>*/;
778 var9
= ((val
* (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var7
) /* item on <var7:Iterator[nullable Object]>*/;
780 var10
= ((val
* (*)(val
*))(var_i
->class->vft
[COLOR_ropes__Rope__iterator
]))(var_i
) /* iterator on <var_i:Rope>*/;
783 var11
= ((short int (*)(val
*))(var_iter
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var_iter
) /* is_ok on <var_iter:Iterator[LeafNode]>*/;
785 var12
= ((val
* (*)(val
*))(var_iter
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var_iter
) /* item on <var_iter:Iterator[LeafNode]>*/;
786 var13
= ((val
* (*)(val
*))(var12
->class->vft
[COLOR_ropes__LeafNode__value
]))(var12
) /* value on <var12:nullable Object(LeafNode)>*/;
787 var14
= ((val
* (*)(val
*, val
*))(var_new_rope
->class->vft
[COLOR_ropes__BufferRope__append
]))(var_new_rope
, var13
) /* append on <var_new_rope:BufferRope>*/;
789 ((void (*)(val
*))(var_iter
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var_iter
) /* next on <var_iter:Iterator[LeafNode]>*/;
790 CONTINUE_label15
: (void)0;
792 BREAK_label15
: (void)0;
793 CONTINUE_label16
: (void)0;
794 ((void (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var7
) /* next on <var7:Iterator[nullable Object]>*/;
796 BREAK_label16
: (void)0;
802 /* method ropes#Rope#multi_concat for (self: Object, Array[Rope]): Rope */
803 val
* VIRTUAL_ropes__Rope__multi_concat(val
* self
, val
* p0
) {
804 val
* var
/* : Rope */;
805 val
* var1
/* : Rope */;
806 var1
= ropes__Rope__multi_concat(self
, p0
);
811 /* method ropes#Rope#* for (self: Rope, Int): Rope */
812 val
* ropes__Rope___42d(val
* self
, long p0
) {
813 val
* var
/* : Rope */;
814 long var_repeats
/* var repeats: Int */;
815 val
* var1
/* : BufferRope */;
816 val
* var_new_rope
/* var new_rope: BufferRope */;
817 val
* var2
/* : String */;
818 val
* var_str
/* var str: String */;
819 val
* var3
/* : Range[Int] */;
820 long var4
/* : Int */;
821 val
* var5
/* : Discrete */;
822 val
* var6
/* : Discrete */;
823 val
* var7
/* : Iterator[nullable Object] */;
824 short int var8
/* : Bool */;
825 val
* var9
/* : nullable Object */;
826 long var_i
/* var i: Int */;
827 long var10
/* : Int */;
828 val
* var11
/* : BufferRope */;
830 var1
= NEW_ropes__BufferRope(&type_ropes__BufferRope
);
831 ((void (*)(val
*))(var1
->class->vft
[COLOR_ropes__BufferRope__init
]))(var1
) /* init on <var1:BufferRope>*/;
832 CHECK_NEW_ropes__BufferRope(var1
);
834 var2
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_string__Object__to_s
]))(self
) /* to_s on <self:Rope>*/;
836 var3
= NEW_range__Range(&type_range__Rangekernel__Int
);
838 var5
= BOX_kernel__Int(var4
); /* autobox from Int to Discrete */
839 var6
= BOX_kernel__Int(var_repeats
); /* autobox from Int to Discrete */
840 ((void (*)(val
*, val
*, val
*))(var3
->class->vft
[COLOR_range__Range__init
]))(var3
, var5
, var6
) /* init on <var3:Range[Int]>*/;
841 CHECK_NEW_range__Range(var3
);
842 var7
= ((val
* (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var3
) /* iterator on <var3:Range[Int]>*/;
844 var8
= ((short int (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var7
) /* is_ok on <var7:Iterator[nullable Object]>*/;
846 var9
= ((val
* (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var7
) /* item on <var7:Iterator[nullable Object]>*/;
847 var10
= ((struct instance_kernel__Int
*)var9
)->value
; /* autounbox from nullable Object to Int */;
849 var11
= ((val
* (*)(val
*, val
*))(var_new_rope
->class->vft
[COLOR_ropes__BufferRope__append
]))(var_new_rope
, var_str
) /* append on <var_new_rope:BufferRope>*/;
851 CONTINUE_label
: (void)0;
852 ((void (*)(val
*))(var7
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var7
) /* next on <var7:Iterator[nullable Object]>*/;
854 BREAK_label
: (void)0;
860 /* method ropes#Rope#* for (self: Object, Int): Rope */
861 val
* VIRTUAL_ropes__Rope___42d(val
* self
, long p0
) {
862 val
* var
/* : Rope */;
863 val
* var1
/* : Rope */;
864 var1
= ropes__Rope___42d(self
, p0
);
869 /* method ropes#Rope#iterator for (self: Rope): Iterator[LeafNode] */
870 val
* ropes__Rope__iterator(val
* self
) {
871 val
* var
/* : Iterator[LeafNode] */;
872 val
* var1
/* : DFSRopeLeafIterator */;
873 var1
= NEW_ropes__DFSRopeLeafIterator(&type_ropes__DFSRopeLeafIterator
);
874 ((void (*)(val
*, val
*))(var1
->class->vft
[COLOR_ropes__DFSRopeLeafIterator__init
]))(var1
, self
) /* init on <var1:DFSRopeLeafIterator>*/;
875 CHECK_NEW_ropes__DFSRopeLeafIterator(var1
);
881 /* method ropes#Rope#iterator for (self: Object): Iterator[LeafNode] */
882 val
* VIRTUAL_ropes__Rope__iterator(val
* self
) {
883 val
* var
/* : Iterator[LeafNode] */;
884 val
* var1
/* : Iterator[LeafNode] */;
885 var1
= ropes__Rope__iterator(self
);
890 /* method ropes#Rope#subrope for (self: Rope, Int, Int): Rope */
891 val
* ropes__Rope__subrope(val
* self
, long p0
, long p1
) {
892 val
* var
/* : Rope */;
893 long var_index_from
/* var index_from: Int */;
894 long var_count
/* var count: Int */;
895 long var1
/* : Int */;
896 short int var2
/* : Bool */;
897 short int var4
/* : Bool */;
900 short int var5
/* : Bool */;
901 long var6
/* : Int */;
902 short int var7
/* : Bool */;
903 short int var9
/* : Bool */;
906 short int var12
/* : Bool */;
907 long var13
/* : Int */;
908 long var15
/* : Int */;
909 long var16
/* : Int */;
910 short int var17
/* : Bool */;
911 short int var19
/* : Bool */;
914 short int var22
/* : Bool */;
915 long var23
/* : Int */;
916 long var24
/* : Int */;
917 long var25
/* : Int */;
918 long var27
/* : Int */;
919 long var28
/* : Int */;
920 short int var29
/* : Bool */;
921 short int var31
/* : Bool */;
924 short int var34
/* : Bool */;
925 long var35
/* : Int */;
926 long var36
/* : Int */;
927 long var38
/* : Int */;
928 val
* var39
/* : BufferRope */;
929 val
* var_buffer
/* var buffer: BufferRope */;
930 val
* var40
/* : DFSRopeLeafIterator */;
931 val
* var_iter
/* var iter: DFSRopeLeafIterator */;
932 long var41
/* : Int */;
933 long var42
/* : Int */;
934 long var44
/* : Int */;
935 long var_curr_subrope_index
/* var curr_subrope_index: Int */;
936 short int var45
/* : Bool */;
937 long var46
/* : Int */;
938 short int var47
/* : Bool */;
939 short int var49
/* : Bool */;
940 long var50
/* : Int */;
941 short int var51
/* : Bool */;
942 short int var53
/* : Bool */;
945 short int var56
/* : Bool */;
946 val
* var57
/* : nullable Object */;
947 val
* var58
/* : String */;
948 long var59
/* : Int */;
949 short int var60
/* : Bool */;
950 short int var62
/* : Bool */;
953 short int var65
/* : Bool */;
954 val
* var66
/* : nullable Object */;
955 val
* var67
/* : String */;
956 val
* var68
/* : String */;
957 val
* var69
/* : BufferRope */;
958 val
* var70
/* : nullable Object */;
959 val
* var71
/* : String */;
960 long var72
/* : Int */;
961 long var73
/* : Int */;
962 long var75
/* : Int */;
963 long var76
/* : Int */;
964 long var78
/* : Int */;
965 long var79
/* : Int */;
966 val
* var80
/* : nullable Object */;
967 val
* var81
/* : String */;
968 val
* var82
/* : String */;
969 val
* var83
/* : BufferRope */;
970 val
* var84
/* : nullable Object */;
971 val
* var85
/* : String */;
972 long var86
/* : Int */;
973 short int var87
/* : Bool */;
974 short int var89
/* : Bool */;
977 short int var92
/* : Bool */;
978 val
* var93
/* : nullable Object */;
979 val
* var94
/* : String */;
980 val
* var95
/* : BufferRope */;
981 val
* var96
/* : nullable Object */;
982 val
* var97
/* : String */;
983 long var98
/* : Int */;
984 long var99
/* : Int */;
985 long var101
/* : Int */;
986 val
* var102
/* : nullable Object */;
987 val
* var103
/* : String */;
988 long var104
/* : Int */;
989 val
* var105
/* : String */;
990 val
* var106
/* : BufferRope */;
994 { /* Inline kernel#Int#>= (var_count,var1) */
995 /* Covariant cast for argument 0 (i) <var1:Int> isa OTHER */
996 /* <var1:Int> isa OTHER */
997 var4
= 1; /* easy <var1:Int> isa OTHER*/
999 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 258);
1002 var5
= var_count
>= var1
;
1008 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Assert failed", "lib/standard/ropes.nit", 205);
1012 { /* Inline kernel#Int#< (var_index_from,var6) */
1013 /* Covariant cast for argument 0 (i) <var6:Int> isa OTHER */
1014 /* <var6:Int> isa OTHER */
1015 var9
= 1; /* easy <var6:Int> isa OTHER*/
1017 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 257);
1020 var12
= var_index_from
< var6
;
1026 { /* Inline kernel#Int#+ (var_count,var_index_from) */
1027 var15
= var_count
+ var_index_from
;
1030 RET_LABEL14
:(void)0;
1034 { /* Inline kernel#Int#< (var_count,var16) */
1035 /* Covariant cast for argument 0 (i) <var16:Int> isa OTHER */
1036 /* <var16:Int> isa OTHER */
1037 var19
= 1; /* easy <var16:Int> isa OTHER*/
1039 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 257);
1042 var22
= var_count
< var16
;
1045 RET_LABEL18
:(void)0;
1053 var_index_from
= var24
;
1056 { /* Inline kernel#Int#- (var_count,var_index_from) */
1057 var27
= var_count
- var_index_from
;
1060 RET_LABEL26
:(void)0;
1062 var28
= ((long (*)(val
*))(self
->class->vft
[COLOR_ropes__Rope__length
]))(self
) /* length on <self:Rope>*/;
1063 { /* Inline kernel#Int#>= (var25,var28) */
1064 /* Covariant cast for argument 0 (i) <var28:Int> isa OTHER */
1065 /* <var28:Int> isa OTHER */
1066 var31
= 1; /* easy <var28:Int> isa OTHER*/
1068 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 258);
1071 var34
= var25
>= var28
;
1074 RET_LABEL30
:(void)0;
1077 var35
= ((long (*)(val
*))(self
->class->vft
[COLOR_ropes__Rope__length
]))(self
) /* length on <self:Rope>*/;
1078 { /* Inline kernel#Int#- (var35,var_index_from) */
1079 var38
= var35
- var_index_from
;
1082 RET_LABEL37
:(void)0;
1087 var39
= NEW_ropes__BufferRope(&type_ropes__BufferRope
);
1088 ((void (*)(val
*))(var39
->class->vft
[COLOR_ropes__BufferRope__init
]))(var39
) /* init on <var39:BufferRope>*/;
1089 CHECK_NEW_ropes__BufferRope(var39
);
1091 var40
= NEW_ropes__DFSRopeLeafIterator(&type_ropes__DFSRopeLeafIterator
);
1092 ((void (*)(val
*, val
*, long))(var40
->class->vft
[COLOR_ropes__DFSRopeLeafIterator__with_index
]))(var40
, self
, var_index_from
) /* with_index on <var40:DFSRopeLeafIterator>*/;
1093 CHECK_NEW_ropes__DFSRopeLeafIterator(var40
);
1095 var41
= ((long (*)(val
*))(var_iter
->class->vft
[COLOR_ropes__RopeIterator__pos
]))(var_iter
) /* pos on <var_iter:DFSRopeLeafIterator>*/;
1096 { /* Inline kernel#Int#- (var_index_from,var41) */
1097 var44
= var_index_from
- var41
;
1100 RET_LABEL43
:(void)0;
1102 var_curr_subrope_index
= var42
;
1104 var45
= ((short int (*)(val
*))(var_iter
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var_iter
) /* is_ok on <var_iter:DFSRopeLeafIterator>*/;
1107 { /* Inline kernel#Int#== (var_count,var46) */
1108 var49
= var_count
== var46
;
1111 RET_LABEL48
:(void)0;
1118 { /* Inline kernel#Int#> (var_curr_subrope_index,var50) */
1119 /* Covariant cast for argument 0 (i) <var50:Int> isa OTHER */
1120 /* <var50:Int> isa OTHER */
1121 var53
= 1; /* easy <var50:Int> isa OTHER*/
1123 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259);
1126 var56
= var_curr_subrope_index
> var50
;
1129 RET_LABEL52
:(void)0;
1132 var57
= ((val
* (*)(val
*))(var_iter
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var_iter
) /* item on <var_iter:DFSRopeLeafIterator>*/;
1133 var58
= ((val
* (*)(val
*))(var57
->class->vft
[COLOR_ropes__LeafNode__value
]))(var57
) /* value on <var57:nullable Object(LeafNode)>*/;
1134 var59
= ((long (*)(val
*))(var58
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var58
) /* length on <var58:String>*/;
1135 { /* Inline kernel#Int#>= (var_count,var59) */
1136 /* Covariant cast for argument 0 (i) <var59:Int> isa OTHER */
1137 /* <var59:Int> isa OTHER */
1138 var62
= 1; /* easy <var59:Int> isa OTHER*/
1140 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 258);
1143 var65
= var_count
>= var59
;
1146 RET_LABEL61
:(void)0;
1149 var66
= ((val
* (*)(val
*))(var_iter
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var_iter
) /* item on <var_iter:DFSRopeLeafIterator>*/;
1150 var67
= ((val
* (*)(val
*))(var66
->class->vft
[COLOR_ropes__LeafNode__value
]))(var66
) /* value on <var66:nullable Object(LeafNode)>*/;
1151 var68
= ((val
* (*)(val
*, long, long))(var67
->class->vft
[COLOR_string__AbstractString__substring
]))(var67
, var_curr_subrope_index
, var_count
) /* substring on <var67:String>*/;
1152 var69
= ((val
* (*)(val
*, val
*))(var_buffer
->class->vft
[COLOR_ropes__BufferRope__append
]))(var_buffer
, var68
) /* append on <var_buffer:BufferRope>*/;
1154 var70
= ((val
* (*)(val
*))(var_iter
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var_iter
) /* item on <var_iter:DFSRopeLeafIterator>*/;
1155 var71
= ((val
* (*)(val
*))(var70
->class->vft
[COLOR_ropes__LeafNode__value
]))(var70
) /* value on <var70:nullable Object(LeafNode)>*/;
1156 var72
= ((long (*)(val
*))(var71
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var71
) /* length on <var71:String>*/;
1157 { /* Inline kernel#Int#- (var72,var_curr_subrope_index) */
1158 var75
= var72
- var_curr_subrope_index
;
1161 RET_LABEL74
:(void)0;
1163 { /* Inline kernel#Int#- (var_count,var73) */
1164 var78
= var_count
- var73
;
1167 RET_LABEL77
:(void)0;
1171 var_curr_subrope_index
= var79
;
1173 var80
= ((val
* (*)(val
*))(var_iter
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var_iter
) /* item on <var_iter:DFSRopeLeafIterator>*/;
1174 var81
= ((val
* (*)(val
*))(var80
->class->vft
[COLOR_ropes__LeafNode__value
]))(var80
) /* value on <var80:nullable Object(LeafNode)>*/;
1175 var82
= ((val
* (*)(val
*, long, long))(var81
->class->vft
[COLOR_string__AbstractString__substring
]))(var81
, var_curr_subrope_index
, var_count
) /* substring on <var81:String>*/;
1176 var83
= ((val
* (*)(val
*, val
*))(var_buffer
->class->vft
[COLOR_ropes__BufferRope__append
]))(var_buffer
, var82
) /* append on <var_buffer:BufferRope>*/;
1181 var84
= ((val
* (*)(val
*))(var_iter
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var_iter
) /* item on <var_iter:DFSRopeLeafIterator>*/;
1182 var85
= ((val
* (*)(val
*))(var84
->class->vft
[COLOR_ropes__LeafNode__value
]))(var84
) /* value on <var84:nullable Object(LeafNode)>*/;
1183 var86
= ((long (*)(val
*))(var85
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var85
) /* length on <var85:String>*/;
1184 { /* Inline kernel#Int#>= (var_count,var86) */
1185 /* Covariant cast for argument 0 (i) <var86:Int> isa OTHER */
1186 /* <var86:Int> isa OTHER */
1187 var89
= 1; /* easy <var86:Int> isa OTHER*/
1189 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 258);
1192 var92
= var_count
>= var86
;
1195 RET_LABEL88
:(void)0;
1198 var93
= ((val
* (*)(val
*))(var_iter
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var_iter
) /* item on <var_iter:DFSRopeLeafIterator>*/;
1199 var94
= ((val
* (*)(val
*))(var93
->class->vft
[COLOR_ropes__LeafNode__value
]))(var93
) /* value on <var93:nullable Object(LeafNode)>*/;
1200 var95
= ((val
* (*)(val
*, val
*))(var_buffer
->class->vft
[COLOR_ropes__BufferRope__append
]))(var_buffer
, var94
) /* append on <var_buffer:BufferRope>*/;
1202 var96
= ((val
* (*)(val
*))(var_iter
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var_iter
) /* item on <var_iter:DFSRopeLeafIterator>*/;
1203 var97
= ((val
* (*)(val
*))(var96
->class->vft
[COLOR_ropes__LeafNode__value
]))(var96
) /* value on <var96:nullable Object(LeafNode)>*/;
1204 var98
= ((long (*)(val
*))(var97
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var97
) /* length on <var97:String>*/;
1205 { /* Inline kernel#Int#- (var_count,var98) */
1206 var101
= var_count
- var98
;
1209 RET_LABEL100
:(void)0;
1213 var102
= ((val
* (*)(val
*))(var_iter
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var_iter
) /* item on <var_iter:DFSRopeLeafIterator>*/;
1214 var103
= ((val
* (*)(val
*))(var102
->class->vft
[COLOR_ropes__LeafNode__value
]))(var102
) /* value on <var102:nullable Object(LeafNode)>*/;
1216 var105
= ((val
* (*)(val
*, long, long))(var103
->class->vft
[COLOR_string__AbstractString__substring
]))(var103
, var104
, var_count
) /* substring on <var103:String>*/;
1217 var106
= ((val
* (*)(val
*, val
*))(var_buffer
->class->vft
[COLOR_ropes__BufferRope__append
]))(var_buffer
, var105
) /* append on <var_buffer:BufferRope>*/;
1222 ((void (*)(val
*))(var_iter
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var_iter
) /* next on <var_iter:DFSRopeLeafIterator>*/;
1223 CONTINUE_label
: (void)0;
1225 BREAK_label
: (void)0;
1231 /* method ropes#Rope#subrope for (self: Object, Int, Int): Rope */
1232 val
* VIRTUAL_ropes__Rope__subrope(val
* self
, long p0
, long p1
) {
1233 val
* var
/* : Rope */;
1234 val
* var1
/* : Rope */;
1235 var1
= ropes__Rope__subrope(self
, p0
, p1
);
1240 /* method ropes#Rope#to_upper for (self: Rope): Rope */
1241 val
* ropes__Rope__to_upper(val
* self
) {
1242 val
* var
/* : Rope */;
1243 val
* var1
/* : BufferRope */;
1244 val
* var_new_rope
/* var new_rope: BufferRope */;
1245 val
* var2
/* : DFSRopeLeafIterator */;
1246 val
* var_iter
/* var iter: DFSRopeLeafIterator */;
1247 short int var3
/* : Bool */;
1248 val
* var4
/* : nullable Object */;
1249 val
* var5
/* : String */;
1250 val
* var6
/* : String */;
1251 val
* var7
/* : BufferRope */;
1252 var1
= NEW_ropes__BufferRope(&type_ropes__BufferRope
);
1253 ((void (*)(val
*))(var1
->class->vft
[COLOR_ropes__BufferRope__init
]))(var1
) /* init on <var1:BufferRope>*/;
1254 CHECK_NEW_ropes__BufferRope(var1
);
1255 var_new_rope
= var1
;
1256 var2
= NEW_ropes__DFSRopeLeafIterator(&type_ropes__DFSRopeLeafIterator
);
1257 ((void (*)(val
*, val
*))(var2
->class->vft
[COLOR_ropes__DFSRopeLeafIterator__init
]))(var2
, self
) /* init on <var2:DFSRopeLeafIterator>*/;
1258 CHECK_NEW_ropes__DFSRopeLeafIterator(var2
);
1261 var3
= ((short int (*)(val
*))(var_iter
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var_iter
) /* is_ok on <var_iter:DFSRopeLeafIterator>*/;
1263 var4
= ((val
* (*)(val
*))(var_iter
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var_iter
) /* item on <var_iter:DFSRopeLeafIterator>*/;
1264 var5
= ((val
* (*)(val
*))(var4
->class->vft
[COLOR_ropes__LeafNode__value
]))(var4
) /* value on <var4:nullable Object(LeafNode)>*/;
1265 var6
= ((val
* (*)(val
*))(var5
->class->vft
[COLOR_string__AbstractString__to_upper
]))(var5
) /* to_upper on <var5:String>*/;
1266 var7
= ((val
* (*)(val
*, val
*))(var_new_rope
->class->vft
[COLOR_ropes__BufferRope__append
]))(var_new_rope
, var6
) /* append on <var_new_rope:BufferRope>*/;
1268 ((void (*)(val
*))(var_iter
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var_iter
) /* next on <var_iter:DFSRopeLeafIterator>*/;
1269 CONTINUE_label
: (void)0;
1271 BREAK_label
: (void)0;
1277 /* method ropes#Rope#to_upper for (self: Object): Rope */
1278 val
* VIRTUAL_ropes__Rope__to_upper(val
* self
) {
1279 val
* var
/* : Rope */;
1280 val
* var1
/* : Rope */;
1281 var1
= ropes__Rope__to_upper(self
);
1286 /* method ropes#Rope#to_lower for (self: Rope): Rope */
1287 val
* ropes__Rope__to_lower(val
* self
) {
1288 val
* var
/* : Rope */;
1289 val
* var1
/* : BufferRope */;
1290 val
* var_new_rope
/* var new_rope: BufferRope */;
1291 val
* var2
/* : DFSRopeLeafIterator */;
1292 val
* var_iter
/* var iter: DFSRopeLeafIterator */;
1293 short int var3
/* : Bool */;
1294 val
* var4
/* : nullable Object */;
1295 val
* var5
/* : String */;
1296 val
* var6
/* : String */;
1297 val
* var7
/* : BufferRope */;
1298 var1
= NEW_ropes__BufferRope(&type_ropes__BufferRope
);
1299 ((void (*)(val
*))(var1
->class->vft
[COLOR_ropes__BufferRope__init
]))(var1
) /* init on <var1:BufferRope>*/;
1300 CHECK_NEW_ropes__BufferRope(var1
);
1301 var_new_rope
= var1
;
1302 var2
= NEW_ropes__DFSRopeLeafIterator(&type_ropes__DFSRopeLeafIterator
);
1303 ((void (*)(val
*, val
*))(var2
->class->vft
[COLOR_ropes__DFSRopeLeafIterator__init
]))(var2
, self
) /* init on <var2:DFSRopeLeafIterator>*/;
1304 CHECK_NEW_ropes__DFSRopeLeafIterator(var2
);
1307 var3
= ((short int (*)(val
*))(var_iter
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var_iter
) /* is_ok on <var_iter:DFSRopeLeafIterator>*/;
1309 var4
= ((val
* (*)(val
*))(var_iter
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var_iter
) /* item on <var_iter:DFSRopeLeafIterator>*/;
1310 var5
= ((val
* (*)(val
*))(var4
->class->vft
[COLOR_ropes__LeafNode__value
]))(var4
) /* value on <var4:nullable Object(LeafNode)>*/;
1311 var6
= ((val
* (*)(val
*))(var5
->class->vft
[COLOR_string__AbstractString__to_lower
]))(var5
) /* to_lower on <var5:String>*/;
1312 var7
= ((val
* (*)(val
*, val
*))(var_new_rope
->class->vft
[COLOR_ropes__BufferRope__append
]))(var_new_rope
, var6
) /* append on <var_new_rope:BufferRope>*/;
1314 ((void (*)(val
*))(var_iter
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var_iter
) /* next on <var_iter:DFSRopeLeafIterator>*/;
1315 CONTINUE_label
: (void)0;
1317 BREAK_label
: (void)0;
1323 /* method ropes#Rope#to_lower for (self: Object): Rope */
1324 val
* VIRTUAL_ropes__Rope__to_lower(val
* self
) {
1325 val
* var
/* : Rope */;
1326 val
* var1
/* : Rope */;
1327 var1
= ropes__Rope__to_lower(self
);
1332 /* method ropes#Rope#== for (self: Rope, nullable Object): Bool */
1333 short int ropes__Rope___61d_61d(val
* self
, val
* p0
) {
1334 short int var
/* : Bool */;
1335 val
* var_other
/* var other: nullable Object */;
1336 short int var1
/* : Bool */;
1337 val
* var2
/* : null */;
1338 short int var3
/* : Bool */;
1339 short int var_
/* var : Bool */;
1340 short int var4
/* : Bool */;
1341 short int var5
/* : Bool */;
1344 short int var_6
/* var : Bool */;
1345 short int var7
/* : Bool */;
1348 short int var10
/* : Bool */;
1349 short int var11
/* : Bool */;
1350 val
* var12
/* : RopeCharIterator */;
1351 val
* var_self_iter
/* var self_iter: RopeCharIterator */;
1352 short int var13
/* : Bool */;
1355 long var16
/* : Int */;
1356 long var17
/* : Int */;
1357 short int var18
/* : Bool */;
1358 short int var20
/* : Bool */;
1359 short int var21
/* : Bool */;
1360 short int var22
/* : Bool */;
1361 val
* var23
/* : RopeCharIterator */;
1362 val
* var_other_iterator
/* var other_iterator: RopeCharIterator */;
1363 short int var24
/* : Bool */;
1364 val
* var25
/* : nullable Object */;
1365 val
* var26
/* : nullable Object */;
1366 short int var27
/* : Bool */;
1367 short int var29
/* : Bool */;
1368 short int var30
/* : Bool */;
1369 short int var31
/* : Bool */;
1370 short int var32
/* : Bool */;
1373 long var35
/* : Int */;
1374 long var_pos
/* var pos: Int */;
1375 long var36
/* : Int */;
1376 long var37
/* : Int */;
1377 short int var38
/* : Bool */;
1378 short int var40
/* : Bool */;
1379 short int var41
/* : Bool */;
1380 short int var42
/* : Bool */;
1381 short int var43
/* : Bool */;
1382 val
* var44
/* : nullable Object */;
1383 val
* var45
/* : nullable Object */;
1384 short int var46
/* : Bool */;
1385 short int var48
/* : Bool */;
1386 short int var49
/* : Bool */;
1387 short int var50
/* : Bool */;
1388 long var51
/* : Int */;
1389 long var52
/* : Int */;
1390 long var54
/* : Int */;
1391 short int var56
/* : Bool */;
1394 if (var_other
== NULL
) {
1395 var3
= 1; /* is null */
1397 var3
= 0; /* arg is null but recv is not */
1403 /* <var_other:nullable Object(Object)> isa Rope */
1404 cltype
= type_ropes__Rope
.color
;
1405 idtype
= type_ropes__Rope
.id
;
1406 if(cltype
>= var_other
->type
->table_size
) {
1409 var5
= var_other
->type
->type_table
[cltype
] == idtype
;
1415 /* <var_other:nullable Object(Object)> isa AbstractString */
1416 cltype8
= type_string__AbstractString
.color
;
1417 idtype9
= type_string__AbstractString
.id
;
1418 if(cltype8
>= var_other
->type
->table_size
) {
1421 var7
= var_other
->type
->type_table
[cltype8
] == idtype9
;
1434 var12
= NEW_ropes__RopeCharIterator(&type_ropes__RopeCharIterator
);
1435 ((void (*)(val
*, val
*))(var12
->class->vft
[COLOR_ropes__RopeCharIterator__init
]))(var12
, self
) /* init on <var12:RopeCharIterator>*/;
1436 CHECK_NEW_ropes__RopeCharIterator(var12
);
1437 var_self_iter
= var12
;
1438 /* <var_other:nullable Object> isa Rope */
1439 cltype14
= type_ropes__Rope
.color
;
1440 idtype15
= type_ropes__Rope
.id
;
1441 if(var_other
== NULL
) {
1444 if(cltype14
>= var_other
->type
->table_size
) {
1447 var13
= var_other
->type
->type_table
[cltype14
] == idtype15
;
1451 var16
= ((long (*)(val
*))(self
->class->vft
[COLOR_ropes__Rope__length
]))(self
) /* length on <self:Rope>*/;
1452 var17
= ((long (*)(val
*))(var_other
->class->vft
[COLOR_ropes__Rope__length
]))(var_other
) /* length on <var_other:nullable Object(Rope)>*/;
1453 { /* Inline kernel#Int#!= (var16,var17) */
1454 var20
= var16
== var17
;
1458 RET_LABEL19
:(void)0;
1466 var23
= NEW_ropes__RopeCharIterator(&type_ropes__RopeCharIterator
);
1467 ((void (*)(val
*, val
*))(var23
->class->vft
[COLOR_ropes__RopeCharIterator__init
]))(var23
, var_other
) /* init on <var23:RopeCharIterator>*/;
1468 CHECK_NEW_ropes__RopeCharIterator(var23
);
1469 var_other_iterator
= var23
;
1471 var24
= ((short int (*)(val
*))(var_self_iter
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var_self_iter
) /* is_ok on <var_self_iter:RopeCharIterator>*/;
1473 var25
= ((val
* (*)(val
*))(var_self_iter
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var_self_iter
) /* item on <var_self_iter:RopeCharIterator>*/;
1474 var26
= ((val
* (*)(val
*))(var_other_iterator
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var_other_iterator
) /* item on <var_other_iterator:RopeCharIterator>*/;
1475 { /* Inline kernel#Char#!= (var25,var26) */
1476 var29
= var25
== var26
|| (((struct instance_kernel__Char
*)var25
)->value
== ((struct instance_kernel__Char
*)var26
)->value
);
1480 RET_LABEL28
:(void)0;
1488 ((void (*)(val
*))(var_self_iter
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var_self_iter
) /* next on <var_self_iter:RopeCharIterator>*/;
1489 ((void (*)(val
*))(var_other_iterator
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var_other_iterator
) /* next on <var_other_iterator:RopeCharIterator>*/;
1490 CONTINUE_label
: (void)0;
1492 BREAK_label
: (void)0;
1494 /* <var_other:nullable Object> isa AbstractString */
1495 cltype33
= type_string__AbstractString
.color
;
1496 idtype34
= type_string__AbstractString
.id
;
1497 if(var_other
== NULL
) {
1500 if(cltype33
>= var_other
->type
->table_size
) {
1503 var32
= var_other
->type
->type_table
[cltype33
] == idtype34
;
1509 var36
= ((long (*)(val
*))(self
->class->vft
[COLOR_ropes__Rope__length
]))(self
) /* length on <self:Rope>*/;
1510 var37
= ((long (*)(val
*))(var_other
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var_other
) /* length on <var_other:nullable Object(AbstractString)>*/;
1511 { /* Inline kernel#Int#!= (var36,var37) */
1512 var40
= var36
== var37
;
1516 RET_LABEL39
:(void)0;
1525 var43
= ((short int (*)(val
*))(var_self_iter
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var_self_iter
) /* is_ok on <var_self_iter:RopeCharIterator>*/;
1527 var44
= ((val
* (*)(val
*))(var_self_iter
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var_self_iter
) /* item on <var_self_iter:RopeCharIterator>*/;
1528 var45
= ((val
* (*)(val
*, long))(var_other
->class->vft
[COLOR_abstract_collection__SequenceRead___91d_93d
]))(var_other
, var_pos
) /* [] on <var_other:nullable Object(AbstractString)>*/;
1529 { /* Inline kernel#Char#!= (var44,var45) */
1530 var48
= var44
== var45
|| (((struct instance_kernel__Char
*)var44
)->value
== ((struct instance_kernel__Char
*)var45
)->value
);
1534 RET_LABEL47
:(void)0;
1543 { /* Inline kernel#Int#+ (var_pos,var51) */
1544 var54
= var_pos
+ var51
;
1547 RET_LABEL53
:(void)0;
1550 ((void (*)(val
*))(var_self_iter
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var_self_iter
) /* next on <var_self_iter:RopeCharIterator>*/;
1551 CONTINUE_label55
: (void)0;
1553 BREAK_label55
: (void)0;
1563 /* method ropes#Rope#== for (self: Object, nullable Object): Bool */
1564 short int VIRTUAL_ropes__Rope___61d_61d(val
* self
, val
* p0
) {
1565 short int var
/* : Bool */;
1566 short int var1
/* : Bool */;
1567 var1
= ropes__Rope___61d_61d(self
, p0
);
1572 /* method ropes#Rope#< for (self: Rope, Rope): Bool */
1573 short int ropes__Rope___60d(val
* self
, val
* p0
) {
1574 short int var
/* : Bool */;
1575 short int var1
/* : Bool */;
1578 const struct type
* type_struct
;
1579 val
* var_other
/* var other: Rope */;
1580 val
* var2
/* : SequenceRead[Char] */;
1581 val
* var3
/* : Iterator[nullable Object] */;
1582 val
* var_other_iter
/* var other_iter: IndexedIterator[Char] */;
1583 val
* var4
/* : SequenceRead[Char] */;
1584 val
* var5
/* : Iterator[nullable Object] */;
1585 short int var6
/* : Bool */;
1586 val
* var7
/* : nullable Object */;
1587 char var_i
/* var i: Char */;
1588 char var8
/* : Char */;
1589 short int var9
/* : Bool */;
1590 short int var10
/* : Bool */;
1591 short int var11
/* : Bool */;
1592 val
* var12
/* : nullable Object */;
1593 short int var13
/* : Bool */;
1594 short int var15
/* : Bool */;
1597 char var18
/* : Char */;
1598 short int var19
/* : Bool */;
1599 short int var20
/* : Bool */;
1600 val
* var21
/* : nullable Object */;
1601 short int var22
/* : Bool */;
1602 short int var24
/* : Bool */;
1605 char var27
/* : Char */;
1606 short int var28
/* : Bool */;
1607 short int var29
/* : Bool */;
1608 short int var30
/* : Bool */;
1609 short int var31
/* : Bool */;
1610 short int var32
/* : Bool */;
1611 /* Covariant cast for argument 0 (other) <p0:Rope> isa OTHER */
1612 /* <p0:Rope> isa OTHER */
1613 type_struct
= self
->type
->resolution_table
->types
[COLOR_kernel__Comparable_VTOTHER
];
1614 cltype
= type_struct
->color
;
1615 idtype
= type_struct
->id
;
1616 if(cltype
>= p0
->type
->table_size
) {
1619 var1
= p0
->type
->type_table
[cltype
] == idtype
;
1622 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/ropes.nit", 301);
1626 var2
= ((val
* (*)(val
*))(var_other
->class->vft
[COLOR_ropes__Rope__chars
]))(var_other
) /* chars on <var_other:Rope>*/;
1627 var3
= ((val
* (*)(val
*))(var2
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var2
) /* iterator on <var2:SequenceRead[Char]>*/;
1628 var_other_iter
= var3
;
1629 var4
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__Rope__chars
]))(self
) /* chars on <self:Rope>*/;
1630 var5
= ((val
* (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var4
) /* iterator on <var4:SequenceRead[Char]>*/;
1632 var6
= ((short int (*)(val
*))(var5
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var5
) /* is_ok on <var5:Iterator[nullable Object]>*/;
1634 var7
= ((val
* (*)(val
*))(var5
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var5
) /* item on <var5:Iterator[nullable Object]>*/;
1635 var8
= ((struct instance_kernel__Char
*)var7
)->value
; /* autounbox from nullable Object to Char */;
1637 var9
= ((short int (*)(val
*))(var_other_iter
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var_other_iter
) /* is_ok on <var_other_iter:IndexedIterator[Char]>*/;
1645 var12
= ((val
* (*)(val
*))(var_other_iter
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var_other_iter
) /* item on <var_other_iter:IndexedIterator[Char]>*/;
1646 { /* Inline kernel#Char#< (var_i,var12) */
1647 /* Covariant cast for argument 0 (i) <var12:nullable Object(Char)> isa OTHER */
1648 /* <var12:nullable Object(Char)> isa OTHER */
1649 var15
= 1; /* easy <var12:nullable Object(Char)> isa OTHER*/
1651 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 455);
1654 var18
= ((struct instance_kernel__Char
*)var12
)->value
; /* autounbox from nullable Object to Char */;
1655 var19
= var_i
< var18
;
1658 RET_LABEL14
:(void)0;
1666 var21
= ((val
* (*)(val
*))(var_other_iter
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var_other_iter
) /* item on <var_other_iter:IndexedIterator[Char]>*/;
1667 { /* Inline kernel#Char#> (var_i,var21) */
1668 /* Covariant cast for argument 0 (i) <var21:nullable Object(Char)> isa OTHER */
1669 /* <var21:nullable Object(Char)> isa OTHER */
1670 var24
= 1; /* easy <var21:nullable Object(Char)> isa OTHER*/
1672 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 457);
1675 var27
= ((struct instance_kernel__Char
*)var21
)->value
; /* autounbox from nullable Object to Char */;
1676 var28
= var_i
> var27
;
1679 RET_LABEL23
:(void)0;
1687 ((void (*)(val
*))(var_other_iter
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var_other_iter
) /* next on <var_other_iter:IndexedIterator[Char]>*/;
1688 CONTINUE_label
: (void)0;
1689 ((void (*)(val
*))(var5
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var5
) /* next on <var5:Iterator[nullable Object]>*/;
1691 BREAK_label
: (void)0;
1692 var30
= ((short int (*)(val
*))(var_other_iter
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var_other_iter
) /* is_ok on <var_other_iter:IndexedIterator[Char]>*/;
1705 /* method ropes#Rope#< for (self: Object, Comparable): Bool */
1706 short int VIRTUAL_ropes__Rope___60d(val
* self
, val
* p0
) {
1707 short int var
/* : Bool */;
1708 short int var1
/* : Bool */;
1709 var1
= ropes__Rope___60d(self
, p0
);
1714 /* method ropes#BufferRope#is_dirty for (self: BufferRope): Bool */
1715 short int ropes__BufferRope__is_dirty(val
* self
) {
1716 short int var
/* : Bool */;
1717 short int var1
/* : Bool */;
1718 var1
= self
->attrs
[COLOR_ropes__BufferRope___64dis_dirty
].s
; /* @is_dirty on <self:BufferRope> */
1723 /* method ropes#BufferRope#is_dirty for (self: Object): Bool */
1724 short int VIRTUAL_ropes__BufferRope__is_dirty(val
* self
) {
1725 short int var
/* : Bool */;
1726 short int var1
/* : Bool */;
1727 var1
= ropes__BufferRope__is_dirty(self
);
1732 /* method ropes#BufferRope#is_dirty= for (self: BufferRope, Bool) */
1733 void ropes__BufferRope__is_dirty_61d(val
* self
, short int p0
) {
1734 self
->attrs
[COLOR_ropes__BufferRope___64dis_dirty
].s
= p0
; /* @is_dirty on <self:BufferRope> */
1737 /* method ropes#BufferRope#is_dirty= for (self: Object, Bool) */
1738 void VIRTUAL_ropes__BufferRope__is_dirty_61d(val
* self
, short int p0
) {
1739 ropes__BufferRope__is_dirty_61d(self
, p0
);
1742 /* method ropes#BufferRope#init for (self: BufferRope) */
1743 void ropes__BufferRope__init(val
* self
) {
1744 ((void (*)(val
*))(self
->class->vft
[COLOR_ropes__Rope__init
]))(self
) /* init on <self:BufferRope>*/;
1747 /* method ropes#BufferRope#init for (self: Object) */
1748 void VIRTUAL_ropes__BufferRope__init(val
* self
) {
1749 ropes__BufferRope__init(self
);
1752 /* method ropes#BufferRope#with_string for (self: BufferRope, AbstractString) */
1753 void ropes__BufferRope__with_string(val
* self
, val
* p0
) {
1754 val
* var_str
/* var str: AbstractString */;
1756 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__Rope__with_string
]))(self
, p0
) /* with_string on <self:BufferRope>*/;
1759 /* method ropes#BufferRope#with_string for (self: Object, AbstractString) */
1760 void VIRTUAL_ropes__BufferRope__with_string(val
* self
, val
* p0
) {
1761 ropes__BufferRope__with_string(self
, p0
);
1764 /* method ropes#BufferRope#rotate_right for (self: BufferRope, ConcatNode) */
1765 void ropes__BufferRope__rotate_right(val
* self
, val
* p0
) {
1766 val
* var_root
/* var root: ConcatNode */;
1767 val
* var
/* : nullable RopeNode */;
1768 val
* var1
/* : null */;
1769 short int var2
/* : Bool */;
1770 val
* var3
/* : nullable RopeNode */;
1771 short int var4
/* : Bool */;
1774 val
* var_pivot
/* var pivot: ConcatNode */;
1775 val
* var5
/* : nullable RopeNode */;
1776 val
* var_root_new_left
/* var root_new_left: nullable RopeNode */;
1777 val
* var6
/* : nullable ConcatNode */;
1778 val
* var_root_parent
/* var root_parent: nullable ConcatNode */;
1779 val
* var7
/* : null */;
1780 short int var8
/* : Bool */;
1781 val
* var9
/* : null */;
1782 val
* var10
/* : nullable RopeNode */;
1783 short int var11
/* : Bool */;
1785 var
= ((val
* (*)(val
*))(var_root
->class->vft
[COLOR_ropes__ConcatNode__left_child
]))(var_root
) /* left_child on <var_root:ConcatNode>*/;
1788 var2
= 0; /* is null */
1790 var2
= 1; /* arg is null and recv is not */
1793 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Assert failed", "lib/standard/ropes.nit", 353);
1796 var3
= ((val
* (*)(val
*))(var_root
->class->vft
[COLOR_ropes__ConcatNode__left_child
]))(var_root
) /* left_child on <var_root:ConcatNode>*/;
1797 /* <var3:nullable RopeNode> isa ConcatNode */
1798 cltype
= type_ropes__ConcatNode
.color
;
1799 idtype
= type_ropes__ConcatNode
.id
;
1803 if(cltype
>= var3
->type
->table_size
) {
1806 var4
= var3
->type
->type_table
[cltype
] == idtype
;
1810 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/ropes.nit", 354);
1814 var5
= ((val
* (*)(val
*))(var_pivot
->class->vft
[COLOR_ropes__ConcatNode__right_child
]))(var_pivot
) /* right_child on <var_pivot:ConcatNode>*/;
1815 var_root_new_left
= var5
;
1816 var6
= ((val
* (*)(val
*))(var_root
->class->vft
[COLOR_ropes__RopeNode__parent
]))(var_root
) /* parent on <var_root:ConcatNode>*/;
1817 var_root_parent
= var6
;
1818 ((void (*)(val
*, val
*))(var_root
->class->vft
[COLOR_ropes__ConcatNode__left_child_61d
]))(var_root
, var_root_new_left
) /* left_child= on <var_root:ConcatNode>*/;
1819 ((void (*)(val
*, val
*))(var_pivot
->class->vft
[COLOR_ropes__ConcatNode__right_child_61d
]))(var_pivot
, var_root
) /* right_child= on <var_pivot:ConcatNode>*/;
1821 if (var_root_parent
== NULL
) {
1822 var8
= 1; /* is null */
1824 var8
= 0; /* arg is null but recv is not */
1827 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__Rope__parent_node_61d
]))(self
, var_pivot
) /* parent_node= on <self:BufferRope>*/;
1829 ((void (*)(val
*, val
*))(var_pivot
->class->vft
[COLOR_ropes__RopeNode__parent_61d
]))(var_pivot
, var9
) /* parent= on <var_pivot:ConcatNode>*/;
1833 var10
= ((val
* (*)(val
*))(var_root_parent
->class->vft
[COLOR_ropes__ConcatNode__left_child
]))(var_root_parent
) /* left_child on <var_root_parent:nullable ConcatNode(ConcatNode)>*/;
1834 if (var10
== NULL
) {
1835 var11
= 0; /* <var_root:ConcatNode> cannot be null */
1837 var11
= ((short int (*)(val
*, val
*))(var10
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var10
, var_root
) /* == on <var10:nullable RopeNode>*/;
1840 ((void (*)(val
*, val
*))(var_root_parent
->class->vft
[COLOR_ropes__ConcatNode__left_child_61d
]))(var_root_parent
, var_pivot
) /* left_child= on <var_root_parent:nullable ConcatNode(ConcatNode)>*/;
1842 ((void (*)(val
*, val
*))(var_root_parent
->class->vft
[COLOR_ropes__ConcatNode__right_child_61d
]))(var_root_parent
, var_pivot
) /* right_child= on <var_root_parent:nullable ConcatNode(ConcatNode)>*/;
1844 ((void (*)(val
*))(var_root
->class->vft
[COLOR_ropes__ConcatNode__update_data
]))(var_root
) /* update_data on <var_root:ConcatNode>*/;
1845 ((void (*)(val
*))(var_pivot
->class->vft
[COLOR_ropes__ConcatNode__update_data
]))(var_pivot
) /* update_data on <var_pivot:ConcatNode>*/;
1846 ((void (*)(val
*))(var_root_parent
->class->vft
[COLOR_ropes__ConcatNode__update_data
]))(var_root_parent
) /* update_data on <var_root_parent:nullable ConcatNode(ConcatNode)>*/;
1849 /* method ropes#BufferRope#rotate_right for (self: Object, ConcatNode) */
1850 void VIRTUAL_ropes__BufferRope__rotate_right(val
* self
, val
* p0
) {
1851 ropes__BufferRope__rotate_right(self
, p0
);
1854 /* method ropes#BufferRope#rotate_left for (self: BufferRope, ConcatNode) */
1855 void ropes__BufferRope__rotate_left(val
* self
, val
* p0
) {
1856 val
* var_root
/* var root: ConcatNode */;
1857 val
* var
/* : nullable RopeNode */;
1858 val
* var1
/* : null */;
1859 short int var2
/* : Bool */;
1860 val
* var3
/* : nullable RopeNode */;
1861 short int var4
/* : Bool */;
1864 val
* var_pivot
/* var pivot: ConcatNode */;
1865 val
* var5
/* : nullable RopeNode */;
1866 val
* var_root_new_right
/* var root_new_right: nullable RopeNode */;
1867 val
* var6
/* : nullable ConcatNode */;
1868 val
* var_root_parent
/* var root_parent: nullable ConcatNode */;
1869 val
* var7
/* : null */;
1870 short int var8
/* : Bool */;
1871 val
* var9
/* : null */;
1872 val
* var10
/* : nullable RopeNode */;
1873 short int var11
/* : Bool */;
1875 var
= ((val
* (*)(val
*))(var_root
->class->vft
[COLOR_ropes__ConcatNode__right_child
]))(var_root
) /* right_child on <var_root:ConcatNode>*/;
1878 var2
= 0; /* is null */
1880 var2
= 1; /* arg is null and recv is not */
1883 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Assert failed", "lib/standard/ropes.nit", 386);
1886 var3
= ((val
* (*)(val
*))(var_root
->class->vft
[COLOR_ropes__ConcatNode__right_child
]))(var_root
) /* right_child on <var_root:ConcatNode>*/;
1887 /* <var3:nullable RopeNode> isa ConcatNode */
1888 cltype
= type_ropes__ConcatNode
.color
;
1889 idtype
= type_ropes__ConcatNode
.id
;
1893 if(cltype
>= var3
->type
->table_size
) {
1896 var4
= var3
->type
->type_table
[cltype
] == idtype
;
1900 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/ropes.nit", 387);
1904 var5
= ((val
* (*)(val
*))(var_pivot
->class->vft
[COLOR_ropes__ConcatNode__left_child
]))(var_pivot
) /* left_child on <var_pivot:ConcatNode>*/;
1905 var_root_new_right
= var5
;
1906 var6
= ((val
* (*)(val
*))(var_root
->class->vft
[COLOR_ropes__RopeNode__parent
]))(var_root
) /* parent on <var_root:ConcatNode>*/;
1907 var_root_parent
= var6
;
1908 ((void (*)(val
*, val
*))(var_root
->class->vft
[COLOR_ropes__ConcatNode__right_child_61d
]))(var_root
, var_root_new_right
) /* right_child= on <var_root:ConcatNode>*/;
1909 ((void (*)(val
*, val
*))(var_pivot
->class->vft
[COLOR_ropes__ConcatNode__left_child_61d
]))(var_pivot
, var_root
) /* left_child= on <var_pivot:ConcatNode>*/;
1911 if (var_root_parent
== NULL
) {
1912 var8
= 1; /* is null */
1914 var8
= 0; /* arg is null but recv is not */
1917 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__Rope__parent_node_61d
]))(self
, var_pivot
) /* parent_node= on <self:BufferRope>*/;
1919 ((void (*)(val
*, val
*))(var_pivot
->class->vft
[COLOR_ropes__RopeNode__parent_61d
]))(var_pivot
, var9
) /* parent= on <var_pivot:ConcatNode>*/;
1923 var10
= ((val
* (*)(val
*))(var_root_parent
->class->vft
[COLOR_ropes__ConcatNode__left_child
]))(var_root_parent
) /* left_child on <var_root_parent:nullable ConcatNode(ConcatNode)>*/;
1924 if (var10
== NULL
) {
1925 var11
= 0; /* <var_root:ConcatNode> cannot be null */
1927 var11
= ((short int (*)(val
*, val
*))(var10
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var10
, var_root
) /* == on <var10:nullable RopeNode>*/;
1930 ((void (*)(val
*, val
*))(var_root_parent
->class->vft
[COLOR_ropes__ConcatNode__left_child_61d
]))(var_root_parent
, var_pivot
) /* left_child= on <var_root_parent:nullable ConcatNode(ConcatNode)>*/;
1932 ((void (*)(val
*, val
*))(var_root_parent
->class->vft
[COLOR_ropes__ConcatNode__right_child_61d
]))(var_root_parent
, var_pivot
) /* right_child= on <var_root_parent:nullable ConcatNode(ConcatNode)>*/;
1934 ((void (*)(val
*))(var_root
->class->vft
[COLOR_ropes__ConcatNode__update_data
]))(var_root
) /* update_data on <var_root:ConcatNode>*/;
1935 ((void (*)(val
*))(var_pivot
->class->vft
[COLOR_ropes__ConcatNode__update_data
]))(var_pivot
) /* update_data on <var_pivot:ConcatNode>*/;
1936 ((void (*)(val
*))(var_root_parent
->class->vft
[COLOR_ropes__ConcatNode__update_data
]))(var_root_parent
) /* update_data on <var_root_parent:nullable ConcatNode(ConcatNode)>*/;
1939 /* method ropes#BufferRope#rotate_left for (self: Object, ConcatNode) */
1940 void VIRTUAL_ropes__BufferRope__rotate_left(val
* self
, val
* p0
) {
1941 ropes__BufferRope__rotate_left(self
, p0
);
1944 /* method ropes#BufferRope#balance_from_node for (self: BufferRope, nullable ConcatNode) */
1945 void ropes__BufferRope__balance_from_node(val
* self
, val
* p0
) {
1946 val
* var_parent_node
/* var parent_node: nullable ConcatNode */;
1947 val
* var
/* : null */;
1948 short int var1
/* : Bool */;
1949 long var2
/* : Int */;
1950 long var_node_balance
/* var node_balance: Int */;
1951 short int var3
/* : Bool */;
1952 long var4
/* : Int */;
1953 long var5
/* : Int */;
1954 long var7
/* : Int */;
1955 short int var8
/* : Bool */;
1956 short int var10
/* : Bool */;
1959 short int var11
/* : Bool */;
1960 short int var_
/* var : Bool */;
1961 long var12
/* : Int */;
1962 short int var13
/* : Bool */;
1963 short int var15
/* : Bool */;
1966 short int var18
/* : Bool */;
1967 val
* var19
/* : nullable ConcatNode */;
1968 var_parent_node
= p0
;
1971 if (var_parent_node
== NULL
) {
1972 var1
= 0; /* is null */
1974 var1
= 1; /* arg is null and recv is not */
1977 ((void (*)(val
*))(var_parent_node
->class->vft
[COLOR_ropes__ConcatNode__update_data
]))(var_parent_node
) /* update_data on <var_parent_node:nullable ConcatNode(ConcatNode)>*/;
1978 var2
= ((long (*)(val
*))(var_parent_node
->class->vft
[COLOR_ropes__RopeNode__balance_factor
]))(var_parent_node
) /* balance_factor on <var_parent_node:nullable ConcatNode(ConcatNode)>*/;
1979 var_node_balance
= var2
;
1981 { /* Inline kernel#Int#unary - (var4) */
1987 { /* Inline kernel#Int#< (var_node_balance,var5) */
1988 /* Covariant cast for argument 0 (i) <var5:Int> isa OTHER */
1989 /* <var5:Int> isa OTHER */
1990 var10
= 1; /* easy <var5:Int> isa OTHER*/
1992 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 257);
1995 var11
= var_node_balance
< var5
;
2005 { /* Inline kernel#Int#> (var_node_balance,var12) */
2006 /* Covariant cast for argument 0 (i) <var12:Int> isa OTHER */
2007 /* <var12:Int> isa OTHER */
2008 var15
= 1; /* easy <var12:Int> isa OTHER*/
2010 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259);
2013 var18
= var_node_balance
> var12
;
2016 RET_LABEL14
:(void)0;
2021 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__BufferRope__balance_node
]))(self
, var_parent_node
) /* balance_node on <self:BufferRope>*/;
2024 var19
= ((val
* (*)(val
*))(var_parent_node
->class->vft
[COLOR_ropes__RopeNode__parent
]))(var_parent_node
) /* parent on <var_parent_node:nullable ConcatNode(ConcatNode)>*/;
2025 var_parent_node
= var19
;
2026 CONTINUE_label
: (void)0;
2028 BREAK_label
: (void)0;
2031 /* method ropes#BufferRope#balance_from_node for (self: Object, nullable ConcatNode) */
2032 void VIRTUAL_ropes__BufferRope__balance_from_node(val
* self
, val
* p0
) {
2033 ropes__BufferRope__balance_from_node(self
, p0
);
2036 /* method ropes#BufferRope#balance_node for (self: BufferRope, ConcatNode) */
2037 void ropes__BufferRope__balance_node(val
* self
, val
* p0
) {
2038 val
* var_node
/* var node: ConcatNode */;
2039 long var
/* : Int */;
2040 long var_balance_factor
/* var balance_factor: Int */;
2041 long var1
/* : Int */;
2042 long var2
/* : Int */;
2043 long var4
/* : Int */;
2044 short int var5
/* : Bool */;
2045 short int var7
/* : Bool */;
2048 short int var8
/* : Bool */;
2049 val
* var9
/* : nullable RopeNode */;
2050 long var10
/* : Int */;
2051 long var_right_balance
/* var right_balance: Int */;
2052 long var11
/* : Int */;
2053 short int var12
/* : Bool */;
2054 short int var14
/* : Bool */;
2057 short int var17
/* : Bool */;
2058 val
* var18
/* : nullable RopeNode */;
2059 short int var19
/* : Bool */;
2062 val
* var22
/* : nullable RopeNode */;
2063 long var23
/* : Int */;
2064 long var_left_balance
/* var left_balance: Int */;
2065 long var24
/* : Int */;
2066 short int var25
/* : Bool */;
2067 short int var27
/* : Bool */;
2070 short int var30
/* : Bool */;
2071 val
* var31
/* : nullable RopeNode */;
2072 short int var32
/* : Bool */;
2076 var
= ((long (*)(val
*))(var_node
->class->vft
[COLOR_ropes__RopeNode__balance_factor
]))(var_node
) /* balance_factor on <var_node:ConcatNode>*/;
2077 var_balance_factor
= var
;
2079 { /* Inline kernel#Int#unary - (var1) */
2085 { /* Inline kernel#Int#< (var_balance_factor,var2) */
2086 /* Covariant cast for argument 0 (i) <var2:Int> isa OTHER */
2087 /* <var2:Int> isa OTHER */
2088 var7
= 1; /* easy <var2:Int> isa OTHER*/
2090 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 257);
2093 var8
= var_balance_factor
< var2
;
2099 var9
= ((val
* (*)(val
*))(var_node
->class->vft
[COLOR_ropes__ConcatNode__right_child
]))(var_node
) /* right_child on <var_node:ConcatNode>*/;
2101 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/ropes.nit", 429);
2104 var10
= ((long (*)(val
*))(var9
->class->vft
[COLOR_ropes__RopeNode__balance_factor
]))(var9
) /* balance_factor on <var9:nullable RopeNode>*/;
2106 var_right_balance
= var10
;
2108 { /* Inline kernel#Int#< (var_right_balance,var11) */
2109 /* Covariant cast for argument 0 (i) <var11:Int> isa OTHER */
2110 /* <var11:Int> isa OTHER */
2111 var14
= 1; /* easy <var11:Int> isa OTHER*/
2113 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 257);
2116 var17
= var_right_balance
< var11
;
2119 RET_LABEL13
:(void)0;
2122 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__BufferRope__rotate_left
]))(self
, var_node
) /* rotate_left on <self:BufferRope>*/;
2124 var18
= ((val
* (*)(val
*))(var_node
->class->vft
[COLOR_ropes__ConcatNode__right_child
]))(var_node
) /* right_child on <var_node:ConcatNode>*/;
2125 /* <var18:nullable RopeNode> isa ConcatNode */
2126 cltype20
= type_ropes__ConcatNode
.color
;
2127 idtype21
= type_ropes__ConcatNode
.id
;
2131 if(cltype20
>= var18
->type
->table_size
) {
2134 var19
= var18
->type
->type_table
[cltype20
] == idtype21
;
2138 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/ropes.nit", 433);
2141 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__BufferRope__rotate_right
]))(self
, var18
) /* rotate_right on <self:BufferRope>*/;
2142 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__BufferRope__rotate_left
]))(self
, var_node
) /* rotate_left on <self:BufferRope>*/;
2145 var22
= ((val
* (*)(val
*))(var_node
->class->vft
[COLOR_ropes__ConcatNode__left_child
]))(var_node
) /* left_child on <var_node:ConcatNode>*/;
2146 if (var22
== NULL
) {
2147 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/ropes.nit", 437);
2150 var23
= ((long (*)(val
*))(var22
->class->vft
[COLOR_ropes__RopeNode__balance_factor
]))(var22
) /* balance_factor on <var22:nullable RopeNode>*/;
2152 var_left_balance
= var23
;
2154 { /* Inline kernel#Int#> (var_left_balance,var24) */
2155 /* Covariant cast for argument 0 (i) <var24:Int> isa OTHER */
2156 /* <var24:Int> isa OTHER */
2157 var27
= 1; /* easy <var24:Int> isa OTHER*/
2159 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259);
2162 var30
= var_left_balance
> var24
;
2165 RET_LABEL26
:(void)0;
2168 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__BufferRope__rotate_right
]))(self
, var_node
) /* rotate_right on <self:BufferRope>*/;
2170 var31
= ((val
* (*)(val
*))(var_node
->class->vft
[COLOR_ropes__ConcatNode__left_child
]))(var_node
) /* left_child on <var_node:ConcatNode>*/;
2171 /* <var31:nullable RopeNode> isa ConcatNode */
2172 cltype33
= type_ropes__ConcatNode
.color
;
2173 idtype34
= type_ropes__ConcatNode
.id
;
2177 if(cltype33
>= var31
->type
->table_size
) {
2180 var32
= var31
->type
->type_table
[cltype33
] == idtype34
;
2184 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/ropes.nit", 441);
2187 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__BufferRope__rotate_left
]))(self
, var31
) /* rotate_left on <self:BufferRope>*/;
2188 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__BufferRope__rotate_right
]))(self
, var_node
) /* rotate_right on <self:BufferRope>*/;
2193 /* method ropes#BufferRope#balance_node for (self: Object, ConcatNode) */
2194 void VIRTUAL_ropes__BufferRope__balance_node(val
* self
, val
* p0
) {
2195 ropes__BufferRope__balance_node(self
, p0
);
2198 /* method ropes#BufferRope#append for (self: BufferRope, Collection[Char]): BufferRope */
2199 val
* ropes__BufferRope__append(val
* self
, val
* p0
) {
2200 val
* var
/* : BufferRope */;
2201 val
* var_str
/* var str: Collection[Char] */;
2202 short int var1
/* : Bool */;
2205 val
* var2
/* : RopeNode */;
2206 val
* var_last_node
/* var last_node: RopeNode */;
2207 short int var3
/* : Bool */;
2208 short int var4
/* : Bool */;
2211 short int var_
/* var : Bool */;
2212 val
* var7
/* : nullable RopeNode */;
2213 val
* var8
/* : null */;
2214 short int var9
/* : Bool */;
2215 val
* var10
/* : nullable RopeNode */;
2216 short int var11
/* : Bool */;
2219 val
* var14
/* : LeafNode */;
2220 val
* var15
/* : String */;
2221 short int var16
/* : Bool */;
2224 val
* var19
/* : nullable ConcatNode */;
2225 val
* var_last_node_parent
/* var last_node_parent: nullable ConcatNode */;
2226 val
* var20
/* : ConcatNode */;
2227 val
* var_new_concat
/* var new_concat: ConcatNode */;
2228 val
* var21
/* : LeafNode */;
2229 val
* var22
/* : String */;
2230 static val
* varonce
;
2231 val
* var23
/* : String */;
2232 char* var24
/* : NativeString */;
2233 long var25
/* : Int */;
2234 val
* var26
/* : String */;
2235 val
* var27
/* : Buffer */;
2236 long var28
/* : Int */;
2237 val
* var_buf
/* var buf: Buffer */;
2238 val
* var29
/* : Iterator[nullable Object] */;
2239 short int var30
/* : Bool */;
2240 val
* var31
/* : nullable Object */;
2241 char var_i
/* var i: Char */;
2242 char var32
/* : Char */;
2243 val
* var33
/* : nullable Object */;
2244 val
* var35
/* : BufferRope */;
2245 short int var36
/* : Bool */;
2246 short int var37
/* : Bool */;
2247 short int var38
/* : Bool */;
2249 /* <var_str:Collection[Char]> isa AbstractString */
2250 cltype
= type_string__AbstractString
.color
;
2251 idtype
= type_string__AbstractString
.id
;
2252 if(cltype
>= var_str
->type
->table_size
) {
2255 var1
= var_str
->type
->type_table
[cltype
] == idtype
;
2258 var2
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__Rope__parent_node
]))(self
) /* parent_node on <self:BufferRope>*/;
2259 var_last_node
= var2
;
2261 /* <var_last_node:RopeNode> isa ConcatNode */
2262 cltype5
= type_ropes__ConcatNode
.color
;
2263 idtype6
= type_ropes__ConcatNode
.id
;
2264 if(cltype5
>= var_last_node
->type
->table_size
) {
2267 var4
= var_last_node
->type
->type_table
[cltype5
] == idtype6
;
2271 var7
= ((val
* (*)(val
*))(var_last_node
->class->vft
[COLOR_ropes__ConcatNode__right_child
]))(var_last_node
) /* right_child on <var_last_node:RopeNode(ConcatNode)>*/;
2274 var9
= 0; /* is null */
2276 var9
= 1; /* arg is null and recv is not */
2283 var10
= ((val
* (*)(val
*))(var_last_node
->class->vft
[COLOR_ropes__ConcatNode__right_child
]))(var_last_node
) /* right_child on <var_last_node:RopeNode(ConcatNode)>*/;
2284 if (var10
== NULL
) {
2285 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/ropes.nit", 458);
2288 var_last_node
= var10
;
2289 CONTINUE_label
: (void)0;
2291 BREAK_label
: (void)0;
2292 /* <var_last_node:RopeNode> isa ConcatNode */
2293 cltype12
= type_ropes__ConcatNode
.color
;
2294 idtype13
= type_ropes__ConcatNode
.id
;
2295 if(cltype12
>= var_last_node
->type
->table_size
) {
2298 var11
= var_last_node
->type
->type_table
[cltype12
] == idtype13
;
2301 var14
= NEW_ropes__LeafNode(&type_ropes__LeafNode
);
2302 var15
= ((val
* (*)(val
*))(var_str
->class->vft
[COLOR_string__Object__to_s
]))(var_str
) /* to_s on <var_str:Collection[Char](AbstractString)>*/;
2303 ((void (*)(val
*, val
*))(var14
->class->vft
[COLOR_ropes__LeafNode__init
]))(var14
, var15
) /* init on <var14:LeafNode>*/;
2304 CHECK_NEW_ropes__LeafNode(var14
);
2305 ((void (*)(val
*, val
*))(var_last_node
->class->vft
[COLOR_ropes__ConcatNode__right_child_61d
]))(var_last_node
, var14
) /* right_child= on <var_last_node:RopeNode(ConcatNode)>*/;
2307 /* <var_last_node:RopeNode> isa LeafNode */
2308 cltype17
= type_ropes__LeafNode
.color
;
2309 idtype18
= type_ropes__LeafNode
.id
;
2310 if(cltype17
>= var_last_node
->type
->table_size
) {
2313 var16
= var_last_node
->type
->type_table
[cltype17
] == idtype18
;
2316 var19
= ((val
* (*)(val
*))(var_last_node
->class->vft
[COLOR_ropes__RopeNode__parent
]))(var_last_node
) /* parent on <var_last_node:RopeNode(LeafNode)>*/;
2317 var_last_node_parent
= var19
;
2318 var20
= NEW_ropes__ConcatNode(&type_ropes__ConcatNode
);
2319 ((void (*)(val
*))(var20
->class->vft
[COLOR_ropes__ConcatNode__init
]))(var20
) /* init on <var20:ConcatNode>*/;
2320 CHECK_NEW_ropes__ConcatNode(var20
);
2321 var_new_concat
= var20
;
2322 if (var_last_node_parent
== NULL
) {
2323 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/ropes.nit", 466);
2326 ((void (*)(val
*, val
*))(var_last_node_parent
->class->vft
[COLOR_ropes__ConcatNode__right_child_61d
]))(var_last_node_parent
, var_new_concat
) /* right_child= on <var_last_node_parent:nullable ConcatNode>*/;
2328 ((void (*)(val
*, val
*))(var_new_concat
->class->vft
[COLOR_ropes__ConcatNode__left_child_61d
]))(var_new_concat
, var_last_node
) /* left_child= on <var_new_concat:ConcatNode>*/;
2329 var21
= NEW_ropes__LeafNode(&type_ropes__LeafNode
);
2330 var22
= ((val
* (*)(val
*))(var_str
->class->vft
[COLOR_string__Object__to_s
]))(var_str
) /* to_s on <var_str:Collection[Char](AbstractString)>*/;
2331 ((void (*)(val
*, val
*))(var21
->class->vft
[COLOR_ropes__LeafNode__init
]))(var21
, var22
) /* init on <var21:LeafNode>*/;
2332 CHECK_NEW_ropes__LeafNode(var21
);
2333 ((void (*)(val
*, val
*))(var_new_concat
->class->vft
[COLOR_ropes__ConcatNode__right_child_61d
]))(var_new_concat
, var21
) /* right_child= on <var_new_concat:ConcatNode>*/;
2334 var_last_node
= var_new_concat
;
2339 var24
= "Fatal Error, please report to the developers for more insight.";
2341 var26
= string__NativeString__to_s_with_length(var24
, var25
);
2345 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_file__Object__print
]))(self
, var23
) /* print on <self:BufferRope>*/;
2346 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Aborted", "lib/standard/ropes.nit", 472);
2350 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__BufferRope__balance_from_node
]))(self
, var_last_node
) /* balance_from_node on <self:BufferRope>*/;
2352 var27
= NEW_string__Buffer(&type_string__Buffer
);
2353 var28
= ((long (*)(val
*))(var_str
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var_str
) /* length on <var_str:Collection[Char]>*/;
2354 ((void (*)(val
*, long))(var27
->class->vft
[COLOR_string__Buffer__with_capacity
]))(var27
, var28
) /* with_capacity on <var27:Buffer>*/;
2355 CHECK_NEW_string__Buffer(var27
);
2357 var29
= ((val
* (*)(val
*))(var_str
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_str
) /* iterator on <var_str:Collection[Char]>*/;
2359 var30
= ((short int (*)(val
*))(var29
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var29
) /* is_ok on <var29:Iterator[nullable Object]>*/;
2361 var31
= ((val
* (*)(val
*))(var29
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var29
) /* item on <var29:Iterator[nullable Object]>*/;
2362 var32
= ((struct instance_kernel__Char
*)var31
)->value
; /* autounbox from nullable Object to Char */;
2364 var33
= BOX_kernel__Char(var_i
); /* autobox from Char to nullable Object */
2365 ((void (*)(val
*, val
*))(var_buf
->class->vft
[COLOR_abstract_collection__SimpleCollection__add
]))(var_buf
, var33
) /* add on <var_buf:Buffer>*/;
2366 CONTINUE_label34
: (void)0;
2367 ((void (*)(val
*))(var29
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var29
) /* next on <var29:Iterator[nullable Object]>*/;
2369 BREAK_label34
: (void)0;
2370 var35
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__BufferRope__append
]))(self
, var_buf
) /* append on <self:BufferRope>*/;
2373 var36
= ((short int (*)(val
*))(self
->class->vft
[COLOR_ropes__BufferRope__is_dirty
]))(self
) /* is_dirty on <self:BufferRope>*/;
2377 ((void (*)(val
*, short int))(self
->class->vft
[COLOR_ropes__BufferRope__is_dirty_61d
]))(self
, var38
) /* is_dirty= on <self:BufferRope>*/;
2385 /* method ropes#BufferRope#append for (self: Object, Collection[Char]): BufferRope */
2386 val
* VIRTUAL_ropes__BufferRope__append(val
* self
, val
* p0
) {
2387 val
* var
/* : BufferRope */;
2388 val
* var1
/* : BufferRope */;
2389 var1
= ropes__BufferRope__append(self
, p0
);
2394 /* method ropes#BufferRope#append_multi for (self: BufferRope, Array[Collection[Char]]): BufferRope */
2395 val
* ropes__BufferRope__append_multi(val
* self
, val
* p0
) {
2396 val
* var
/* : BufferRope */;
2397 val
* var_strs
/* var strs: Array[Collection[Char]] */;
2398 val
* var1
/* : Iterator[nullable Object] */;
2399 short int var2
/* : Bool */;
2400 val
* var3
/* : nullable Object */;
2401 val
* var_i
/* var i: Collection[Char] */;
2402 val
* var4
/* : BufferRope */;
2404 var1
= ((val
* (*)(val
*))(var_strs
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_strs
) /* iterator on <var_strs:Array[Collection[Char]]>*/;
2406 var2
= ((short int (*)(val
*))(var1
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var1
) /* is_ok on <var1:Iterator[nullable Object]>*/;
2408 var3
= ((val
* (*)(val
*))(var1
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var1
) /* item on <var1:Iterator[nullable Object]>*/;
2410 var4
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__BufferRope__append
]))(self
, var_i
) /* append on <self:BufferRope>*/;
2412 CONTINUE_label
: (void)0;
2413 ((void (*)(val
*))(var1
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var1
) /* next on <var1:Iterator[nullable Object]>*/;
2415 BREAK_label
: (void)0;
2421 /* method ropes#BufferRope#append_multi for (self: Object, Array[Collection[Char]]): BufferRope */
2422 val
* VIRTUAL_ropes__BufferRope__append_multi(val
* self
, val
* p0
) {
2423 val
* var
/* : BufferRope */;
2424 val
* var1
/* : BufferRope */;
2425 var1
= ropes__BufferRope__append_multi(self
, p0
);
2430 /* method ropes#BufferRope#prepend for (self: BufferRope, Collection[Char]): BufferRope */
2431 val
* ropes__BufferRope__prepend(val
* self
, val
* p0
) {
2432 val
* var
/* : BufferRope */;
2433 val
* var_str
/* var str: Collection[Char] */;
2434 short int var1
/* : Bool */;
2437 val
* var2
/* : RopeNode */;
2438 val
* var_curr_node
/* var curr_node: RopeNode */;
2439 short int var3
/* : Bool */;
2440 short int var4
/* : Bool */;
2443 short int var_
/* var : Bool */;
2444 val
* var7
/* : nullable RopeNode */;
2445 val
* var8
/* : null */;
2446 short int var9
/* : Bool */;
2447 val
* var10
/* : nullable RopeNode */;
2448 short int var11
/* : Bool */;
2451 val
* var14
/* : LeafNode */;
2452 val
* var15
/* : String */;
2453 short int var16
/* : Bool */;
2456 val
* var19
/* : nullable ConcatNode */;
2457 val
* var_parent
/* var parent: nullable ConcatNode */;
2458 val
* var20
/* : ConcatNode */;
2459 val
* var_new_concat
/* var new_concat: ConcatNode */;
2460 val
* var21
/* : LeafNode */;
2461 val
* var22
/* : String */;
2462 val
* var_new_leaf
/* var new_leaf: LeafNode */;
2463 static val
* varonce
;
2464 val
* var23
/* : String */;
2465 char* var24
/* : NativeString */;
2466 long var25
/* : Int */;
2467 val
* var26
/* : String */;
2468 val
* var27
/* : Buffer */;
2469 long var28
/* : Int */;
2470 val
* var_buf
/* var buf: Buffer */;
2471 val
* var29
/* : Iterator[nullable Object] */;
2472 short int var30
/* : Bool */;
2473 val
* var31
/* : nullable Object */;
2474 char var_i
/* var i: Char */;
2475 char var32
/* : Char */;
2476 val
* var33
/* : nullable Object */;
2477 val
* var35
/* : String */;
2478 val
* var36
/* : BufferRope */;
2479 short int var37
/* : Bool */;
2480 short int var38
/* : Bool */;
2481 short int var39
/* : Bool */;
2483 /* <var_str:Collection[Char]> isa AbstractString */
2484 cltype
= type_string__AbstractString
.color
;
2485 idtype
= type_string__AbstractString
.id
;
2486 if(cltype
>= var_str
->type
->table_size
) {
2489 var1
= var_str
->type
->type_table
[cltype
] == idtype
;
2492 var2
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__Rope__parent_node
]))(self
) /* parent_node on <self:BufferRope>*/;
2493 var_curr_node
= var2
;
2495 /* <var_curr_node:RopeNode> isa ConcatNode */
2496 cltype5
= type_ropes__ConcatNode
.color
;
2497 idtype6
= type_ropes__ConcatNode
.id
;
2498 if(cltype5
>= var_curr_node
->type
->table_size
) {
2501 var4
= var_curr_node
->type
->type_table
[cltype5
] == idtype6
;
2505 var7
= ((val
* (*)(val
*))(var_curr_node
->class->vft
[COLOR_ropes__ConcatNode__left_child
]))(var_curr_node
) /* left_child on <var_curr_node:RopeNode(ConcatNode)>*/;
2508 var9
= 0; /* is null */
2510 var9
= 1; /* arg is null and recv is not */
2517 var10
= ((val
* (*)(val
*))(var_curr_node
->class->vft
[COLOR_ropes__ConcatNode__left_child
]))(var_curr_node
) /* left_child on <var_curr_node:RopeNode(ConcatNode)>*/;
2518 if (var10
== NULL
) {
2519 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/ropes.nit", 505);
2522 var_curr_node
= var10
;
2523 CONTINUE_label
: (void)0;
2525 BREAK_label
: (void)0;
2526 /* <var_curr_node:RopeNode> isa ConcatNode */
2527 cltype12
= type_ropes__ConcatNode
.color
;
2528 idtype13
= type_ropes__ConcatNode
.id
;
2529 if(cltype12
>= var_curr_node
->type
->table_size
) {
2532 var11
= var_curr_node
->type
->type_table
[cltype12
] == idtype13
;
2535 var14
= NEW_ropes__LeafNode(&type_ropes__LeafNode
);
2536 var15
= ((val
* (*)(val
*))(var_str
->class->vft
[COLOR_string__Object__to_s
]))(var_str
) /* to_s on <var_str:Collection[Char](AbstractString)>*/;
2537 ((void (*)(val
*, val
*))(var14
->class->vft
[COLOR_ropes__LeafNode__init
]))(var14
, var15
) /* init on <var14:LeafNode>*/;
2538 CHECK_NEW_ropes__LeafNode(var14
);
2539 ((void (*)(val
*, val
*))(var_curr_node
->class->vft
[COLOR_ropes__ConcatNode__left_child_61d
]))(var_curr_node
, var14
) /* left_child= on <var_curr_node:RopeNode(ConcatNode)>*/;
2541 /* <var_curr_node:RopeNode> isa LeafNode */
2542 cltype17
= type_ropes__LeafNode
.color
;
2543 idtype18
= type_ropes__LeafNode
.id
;
2544 if(cltype17
>= var_curr_node
->type
->table_size
) {
2547 var16
= var_curr_node
->type
->type_table
[cltype17
] == idtype18
;
2550 var19
= ((val
* (*)(val
*))(var_curr_node
->class->vft
[COLOR_ropes__RopeNode__parent
]))(var_curr_node
) /* parent on <var_curr_node:RopeNode(LeafNode)>*/;
2552 var20
= NEW_ropes__ConcatNode(&type_ropes__ConcatNode
);
2553 ((void (*)(val
*))(var20
->class->vft
[COLOR_ropes__ConcatNode__init
]))(var20
) /* init on <var20:ConcatNode>*/;
2554 CHECK_NEW_ropes__ConcatNode(var20
);
2555 var_new_concat
= var20
;
2556 var21
= NEW_ropes__LeafNode(&type_ropes__LeafNode
);
2557 var22
= ((val
* (*)(val
*))(var_str
->class->vft
[COLOR_string__Object__to_s
]))(var_str
) /* to_s on <var_str:Collection[Char](AbstractString)>*/;
2558 ((void (*)(val
*, val
*))(var21
->class->vft
[COLOR_ropes__LeafNode__init
]))(var21
, var22
) /* init on <var21:LeafNode>*/;
2559 CHECK_NEW_ropes__LeafNode(var21
);
2560 var_new_leaf
= var21
;
2561 ((void (*)(val
*, val
*))(var_new_concat
->class->vft
[COLOR_ropes__ConcatNode__left_child_61d
]))(var_new_concat
, var_new_leaf
) /* left_child= on <var_new_concat:ConcatNode>*/;
2562 ((void (*)(val
*, val
*))(var_new_concat
->class->vft
[COLOR_ropes__ConcatNode__right_child_61d
]))(var_new_concat
, var_curr_node
) /* right_child= on <var_new_concat:ConcatNode>*/;
2563 if (var_parent
== NULL
) {
2564 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/ropes.nit", 516);
2567 ((void (*)(val
*, val
*))(var_parent
->class->vft
[COLOR_ropes__ConcatNode__left_child_61d
]))(var_parent
, var_new_concat
) /* left_child= on <var_parent:nullable ConcatNode>*/;
2569 var_curr_node
= var_new_concat
;
2574 var24
= "Fatal Error";
2576 var26
= string__NativeString__to_s_with_length(var24
, var25
);
2580 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_file__Object__print
]))(self
, var23
) /* print on <self:BufferRope>*/;
2581 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Aborted", "lib/standard/ropes.nit", 520);
2585 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__BufferRope__balance_from_node
]))(self
, var_curr_node
) /* balance_from_node on <self:BufferRope>*/;
2587 var27
= NEW_string__Buffer(&type_string__Buffer
);
2588 var28
= ((long (*)(val
*))(var_str
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var_str
) /* length on <var_str:Collection[Char]>*/;
2589 ((void (*)(val
*, long))(var27
->class->vft
[COLOR_string__Buffer__with_capacity
]))(var27
, var28
) /* with_capacity on <var27:Buffer>*/;
2590 CHECK_NEW_string__Buffer(var27
);
2592 var29
= ((val
* (*)(val
*))(var_str
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_str
) /* iterator on <var_str:Collection[Char]>*/;
2594 var30
= ((short int (*)(val
*))(var29
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var29
) /* is_ok on <var29:Iterator[nullable Object]>*/;
2596 var31
= ((val
* (*)(val
*))(var29
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var29
) /* item on <var29:Iterator[nullable Object]>*/;
2597 var32
= ((struct instance_kernel__Char
*)var31
)->value
; /* autounbox from nullable Object to Char */;
2599 var33
= BOX_kernel__Char(var_i
); /* autobox from Char to nullable Object */
2600 ((void (*)(val
*, val
*))(var_buf
->class->vft
[COLOR_abstract_collection__SimpleCollection__add
]))(var_buf
, var33
) /* add on <var_buf:Buffer>*/;
2601 CONTINUE_label34
: (void)0;
2602 ((void (*)(val
*))(var29
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var29
) /* next on <var29:Iterator[nullable Object]>*/;
2604 BREAK_label34
: (void)0;
2605 var35
= ((val
* (*)(val
*))(var_buf
->class->vft
[COLOR_string__Object__to_s
]))(var_buf
) /* to_s on <var_buf:Buffer>*/;
2606 var36
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__BufferRope__prepend
]))(self
, var35
) /* prepend on <self:BufferRope>*/;
2609 var37
= ((short int (*)(val
*))(self
->class->vft
[COLOR_ropes__BufferRope__is_dirty
]))(self
) /* is_dirty on <self:BufferRope>*/;
2613 ((void (*)(val
*, short int))(self
->class->vft
[COLOR_ropes__BufferRope__is_dirty_61d
]))(self
, var39
) /* is_dirty= on <self:BufferRope>*/;
2621 /* method ropes#BufferRope#prepend for (self: Object, Collection[Char]): BufferRope */
2622 val
* VIRTUAL_ropes__BufferRope__prepend(val
* self
, val
* p0
) {
2623 val
* var
/* : BufferRope */;
2624 val
* var1
/* : BufferRope */;
2625 var1
= ropes__BufferRope__prepend(self
, p0
);
2630 /* method ropes#BufferRope#prepend_multi for (self: BufferRope, Array[Collection[Char]]): BufferRope */
2631 val
* ropes__BufferRope__prepend_multi(val
* self
, val
* p0
) {
2632 val
* var
/* : BufferRope */;
2633 val
* var_strs
/* var strs: Array[Collection[Char]] */;
2634 val
* var1
/* : Iterator[nullable Object] */;
2635 short int var2
/* : Bool */;
2636 val
* var3
/* : nullable Object */;
2637 val
* var_i
/* var i: Collection[Char] */;
2638 val
* var4
/* : BufferRope */;
2640 var1
= ((val
* (*)(val
*))(var_strs
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_strs
) /* iterator on <var_strs:Array[Collection[Char]]>*/;
2642 var2
= ((short int (*)(val
*))(var1
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var1
) /* is_ok on <var1:Iterator[nullable Object]>*/;
2644 var3
= ((val
* (*)(val
*))(var1
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var1
) /* item on <var1:Iterator[nullable Object]>*/;
2646 var4
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__BufferRope__prepend
]))(self
, var_i
) /* prepend on <self:BufferRope>*/;
2648 CONTINUE_label
: (void)0;
2649 ((void (*)(val
*))(var1
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var1
) /* next on <var1:Iterator[nullable Object]>*/;
2651 BREAK_label
: (void)0;
2657 /* method ropes#BufferRope#prepend_multi for (self: Object, Array[Collection[Char]]): BufferRope */
2658 val
* VIRTUAL_ropes__BufferRope__prepend_multi(val
* self
, val
* p0
) {
2659 val
* var
/* : BufferRope */;
2660 val
* var1
/* : BufferRope */;
2661 var1
= ropes__BufferRope__prepend_multi(self
, p0
);
2666 /* method ropes#BufferRope#concat for (self: BufferRope, Rope): Rope */
2667 val
* ropes__BufferRope__concat(val
* self
, val
* p0
) {
2668 val
* var
/* : Rope */;
2669 val
* var_str
/* var str: Rope */;
2670 val
* var1
/* : DFSRopeLeafIterator */;
2671 val
* var_other_iter
/* var other_iter: DFSRopeLeafIterator */;
2672 val
* var2
/* : List[String] */;
2673 val
* var_modif_list
/* var modif_list: List[String] */;
2674 short int var3
/* : Bool */;
2675 val
* var4
/* : nullable Object */;
2676 val
* var5
/* : String */;
2677 long var6
/* : Int */;
2678 long var7
/* : Int */;
2679 short int var8
/* : Bool */;
2680 short int var10
/* : Bool */;
2683 short int var11
/* : Bool */;
2684 val
* var12
/* : nullable Object */;
2685 val
* var13
/* : BufferRope */;
2686 short int var15
/* : Bool */;
2687 short int var16
/* : Bool */;
2688 short int var17
/* : Bool */;
2690 var1
= NEW_ropes__DFSRopeLeafIterator(&type_ropes__DFSRopeLeafIterator
);
2691 ((void (*)(val
*, val
*))(var1
->class->vft
[COLOR_ropes__DFSRopeLeafIterator__init
]))(var1
, var_str
) /* init on <var1:DFSRopeLeafIterator>*/;
2692 CHECK_NEW_ropes__DFSRopeLeafIterator(var1
);
2693 var_other_iter
= var1
;
2694 var2
= NEW_list__List(&type_list__Liststring__String
);
2695 ((void (*)(val
*))(var2
->class->vft
[COLOR_list__List__init
]))(var2
) /* init on <var2:List[String]>*/;
2696 CHECK_NEW_list__List(var2
);
2697 var_modif_list
= var2
;
2699 var3
= ((short int (*)(val
*))(var_other_iter
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var_other_iter
) /* is_ok on <var_other_iter:DFSRopeLeafIterator>*/;
2701 var4
= ((val
* (*)(val
*))(var_other_iter
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var_other_iter
) /* item on <var_other_iter:DFSRopeLeafIterator>*/;
2702 var5
= ((val
* (*)(val
*))(var4
->class->vft
[COLOR_ropes__LeafNode__value
]))(var4
) /* value on <var4:nullable Object(LeafNode)>*/;
2703 ((void (*)(val
*, val
*))(var_modif_list
->class->vft
[COLOR_abstract_collection__Sequence__push
]))(var_modif_list
, var5
) /* push on <var_modif_list:List[String]>*/;
2704 ((void (*)(val
*))(var_other_iter
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var_other_iter
) /* next on <var_other_iter:DFSRopeLeafIterator>*/;
2705 CONTINUE_label
: (void)0;
2707 BREAK_label
: (void)0;
2709 var6
= ((long (*)(val
*))(var_modif_list
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var_modif_list
) /* length on <var_modif_list:List[String]>*/;
2711 { /* Inline kernel#Int#> (var6,var7) */
2712 /* Covariant cast for argument 0 (i) <var7:Int> isa OTHER */
2713 /* <var7:Int> isa OTHER */
2714 var10
= 1; /* easy <var7:Int> isa OTHER*/
2716 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259);
2719 var11
= var6
> var7
;
2725 var12
= ((val
* (*)(val
*))(var_modif_list
->class->vft
[COLOR_abstract_collection__Sequence__shift
]))(var_modif_list
) /* shift on <var_modif_list:List[String]>*/;
2726 var13
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__BufferRope__append
]))(self
, var12
) /* append on <self:BufferRope>*/;
2728 CONTINUE_label14
: (void)0;
2730 BREAK_label14
: (void)0;
2731 var15
= ((short int (*)(val
*))(self
->class->vft
[COLOR_ropes__BufferRope__is_dirty
]))(self
) /* is_dirty on <self:BufferRope>*/;
2735 ((void (*)(val
*, short int))(self
->class->vft
[COLOR_ropes__BufferRope__is_dirty_61d
]))(self
, var17
) /* is_dirty= on <self:BufferRope>*/;
2743 /* method ropes#BufferRope#concat for (self: Object, Rope): Rope */
2744 val
* VIRTUAL_ropes__BufferRope__concat(val
* self
, val
* p0
) {
2745 val
* var
/* : Rope */;
2746 val
* var1
/* : Rope */;
2747 var1
= ropes__BufferRope__concat(self
, p0
);
2752 /* method ropes#BufferRope#freeze for (self: BufferRope): ImmutableRope */
2753 val
* ropes__BufferRope__freeze(val
* self
) {
2754 val
* var
/* : ImmutableRope */;
2755 val
* var1
/* : BufferRope */;
2756 val
* var_buffer_rope
/* var buffer_rope: BufferRope */;
2757 val
* var2
/* : ImmutableRope */;
2758 val
* var_new_rope
/* var new_rope: ImmutableRope */;
2759 val
* var3
/* : DFSRopeLeafIterator */;
2760 val
* var_iter
/* var iter: DFSRopeLeafIterator */;
2761 short int var4
/* : Bool */;
2762 val
* var5
/* : nullable Object */;
2763 val
* var6
/* : String */;
2764 val
* var7
/* : BufferRope */;
2765 val
* var8
/* : RopeNode */;
2766 short int var9
/* : Bool */;
2767 short int var10
/* : Bool */;
2768 val
* var11
/* : nullable String */;
2769 var1
= NEW_ropes__BufferRope(&type_ropes__BufferRope
);
2770 ((void (*)(val
*))(var1
->class->vft
[COLOR_ropes__BufferRope__init
]))(var1
) /* init on <var1:BufferRope>*/;
2771 CHECK_NEW_ropes__BufferRope(var1
);
2772 var_buffer_rope
= var1
;
2773 var2
= NEW_ropes__ImmutableRope(&type_ropes__ImmutableRope
);
2774 ((void (*)(val
*))(var2
->class->vft
[COLOR_ropes__ImmutableRope__init
]))(var2
) /* init on <var2:ImmutableRope>*/;
2775 CHECK_NEW_ropes__ImmutableRope(var2
);
2776 var_new_rope
= var2
;
2777 var3
= NEW_ropes__DFSRopeLeafIterator(&type_ropes__DFSRopeLeafIterator
);
2778 ((void (*)(val
*, val
*))(var3
->class->vft
[COLOR_ropes__DFSRopeLeafIterator__init
]))(var3
, self
) /* init on <var3:DFSRopeLeafIterator>*/;
2779 CHECK_NEW_ropes__DFSRopeLeafIterator(var3
);
2782 var4
= ((short int (*)(val
*))(var_iter
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var_iter
) /* is_ok on <var_iter:DFSRopeLeafIterator>*/;
2784 var5
= ((val
* (*)(val
*))(var_iter
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var_iter
) /* item on <var_iter:DFSRopeLeafIterator>*/;
2785 var6
= ((val
* (*)(val
*))(var5
->class->vft
[COLOR_ropes__LeafNode__value
]))(var5
) /* value on <var5:nullable Object(LeafNode)>*/;
2786 var7
= ((val
* (*)(val
*, val
*))(var_buffer_rope
->class->vft
[COLOR_ropes__BufferRope__append
]))(var_buffer_rope
, var6
) /* append on <var_buffer_rope:BufferRope>*/;
2788 ((void (*)(val
*))(var_iter
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var_iter
) /* next on <var_iter:DFSRopeLeafIterator>*/;
2789 CONTINUE_label
: (void)0;
2791 BREAK_label
: (void)0;
2792 var8
= ((val
* (*)(val
*))(var_buffer_rope
->class->vft
[COLOR_ropes__Rope__parent_node
]))(var_buffer_rope
) /* parent_node on <var_buffer_rope:BufferRope>*/;
2793 ((void (*)(val
*, val
*))(var_new_rope
->class->vft
[COLOR_ropes__Rope__parent_node_61d
]))(var_new_rope
, var8
) /* parent_node= on <var_new_rope:ImmutableRope>*/;
2794 var9
= ((short int (*)(val
*))(self
->class->vft
[COLOR_ropes__BufferRope__is_dirty
]))(self
) /* is_dirty on <self:BufferRope>*/;
2797 var11
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__Rope__str_representation
]))(self
) /* str_representation on <self:BufferRope>*/;
2798 ((void (*)(val
*, val
*))(var_new_rope
->class->vft
[COLOR_ropes__Rope__str_representation_61d
]))(var_new_rope
, var11
) /* str_representation= on <var_new_rope:ImmutableRope>*/;
2806 /* method ropes#BufferRope#freeze for (self: Object): ImmutableRope */
2807 val
* VIRTUAL_ropes__BufferRope__freeze(val
* self
) {
2808 val
* var
/* : ImmutableRope */;
2809 val
* var1
/* : ImmutableRope */;
2810 var1
= ropes__BufferRope__freeze(self
);
2815 /* method ropes#BufferRope#to_immutable for (self: BufferRope): ImmutableRope */
2816 val
* ropes__BufferRope__to_immutable(val
* self
) {
2817 val
* var
/* : ImmutableRope */;
2818 val
* var1
/* : ImmutableRope */;
2819 val
* var_immutable_self
/* var immutable_self: ImmutableRope */;
2820 val
* var2
/* : RopeNode */;
2821 var1
= NEW_ropes__ImmutableRope(&type_ropes__ImmutableRope
);
2822 ((void (*)(val
*))(var1
->class->vft
[COLOR_ropes__ImmutableRope__init
]))(var1
) /* init on <var1:ImmutableRope>*/;
2823 CHECK_NEW_ropes__ImmutableRope(var1
);
2824 var_immutable_self
= var1
;
2825 var2
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__Rope__parent_node
]))(self
) /* parent_node on <self:BufferRope>*/;
2826 ((void (*)(val
*, val
*))(var_immutable_self
->class->vft
[COLOR_ropes__Rope__parent_node_61d
]))(var_immutable_self
, var2
) /* parent_node= on <var_immutable_self:ImmutableRope>*/;
2827 var
= var_immutable_self
;
2832 /* method ropes#BufferRope#to_immutable for (self: Object): ImmutableRope */
2833 val
* VIRTUAL_ropes__BufferRope__to_immutable(val
* self
) {
2834 val
* var
/* : ImmutableRope */;
2835 val
* var1
/* : ImmutableRope */;
2836 var1
= ropes__BufferRope__to_immutable(self
);
2841 /* method ropes#BufferRope#subrope for (self: BufferRope, Int, Int): BufferRope */
2842 val
* ropes__BufferRope__subrope(val
* self
, long p0
, long p1
) {
2843 val
* var
/* : BufferRope */;
2844 long var_index_from
/* var index_from: Int */;
2845 long var_count
/* var count: Int */;
2846 val
* var1
/* : Rope */;
2847 short int var2
/* : Bool */;
2850 var_index_from
= p0
;
2852 var1
= ((val
* (*)(val
*, long, long))(self
->class->vft
[COLOR_ropes__BufferRope__subrope
]))(self
, p0
, p1
) /* subrope on <self:BufferRope>*/;
2853 /* <var1:Rope> isa BufferRope */
2854 cltype
= type_ropes__BufferRope
.color
;
2855 idtype
= type_ropes__BufferRope
.id
;
2856 if(cltype
>= var1
->type
->table_size
) {
2859 var2
= var1
->type
->type_table
[cltype
] == idtype
;
2862 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/ropes.nit", 603);
2870 /* method ropes#BufferRope#subrope for (self: Object, Int, Int): Rope */
2871 val
* VIRTUAL_ropes__BufferRope__subrope(val
* self
, long p0
, long p1
) {
2872 val
* var
/* : Rope */;
2873 val
* var1
/* : BufferRope */;
2874 var1
= ropes__BufferRope__subrope(self
, p0
, p1
);
2879 /* method ropes#BufferRope#* for (self: BufferRope, Int): BufferRope */
2880 val
* ropes__BufferRope___42d(val
* self
, long p0
) {
2881 val
* var
/* : BufferRope */;
2882 long var_repeats
/* var repeats: Int */;
2883 val
* var1
/* : Rope */;
2884 short int var2
/* : Bool */;
2888 var1
= ((val
* (*)(val
*, long))(self
->class->vft
[COLOR_ropes__BufferRope___42d
]))(self
, p0
) /* * on <self:BufferRope>*/;
2889 /* <var1:Rope> isa BufferRope */
2890 cltype
= type_ropes__BufferRope
.color
;
2891 idtype
= type_ropes__BufferRope
.id
;
2892 if(cltype
>= var1
->type
->table_size
) {
2895 var2
= var1
->type
->type_table
[cltype
] == idtype
;
2898 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/ropes.nit", 608);
2906 /* method ropes#BufferRope#* for (self: Object, Int): Rope */
2907 val
* VIRTUAL_ropes__BufferRope___42d(val
* self
, long p0
) {
2908 val
* var
/* : Rope */;
2909 val
* var1
/* : BufferRope */;
2910 var1
= ropes__BufferRope___42d(self
, p0
);
2915 /* method ropes#BufferRope#+ for (self: BufferRope, Rope): BufferRope */
2916 val
* ropes__BufferRope___43d(val
* self
, val
* p0
) {
2917 val
* var
/* : BufferRope */;
2918 val
* var_other
/* var other: Rope */;
2919 val
* var1
/* : Rope */;
2920 short int var2
/* : Bool */;
2924 var1
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__BufferRope___43d
]))(self
, p0
) /* + on <self:BufferRope>*/;
2925 /* <var1:Rope> isa BufferRope */
2926 cltype
= type_ropes__BufferRope
.color
;
2927 idtype
= type_ropes__BufferRope
.id
;
2928 if(cltype
>= var1
->type
->table_size
) {
2931 var2
= var1
->type
->type_table
[cltype
] == idtype
;
2934 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/ropes.nit", 613);
2942 /* method ropes#BufferRope#+ for (self: Object, Rope): Rope */
2943 val
* VIRTUAL_ropes__BufferRope___43d(val
* self
, val
* p0
) {
2944 val
* var
/* : Rope */;
2945 val
* var1
/* : BufferRope */;
2946 var1
= ropes__BufferRope___43d(self
, p0
);
2951 /* method ropes#BufferRope#multi_concat for (self: BufferRope, Array[Rope]): BufferRope */
2952 val
* ropes__BufferRope__multi_concat(val
* self
, val
* p0
) {
2953 val
* var
/* : BufferRope */;
2954 val
* var_ropes
/* var ropes: Array[Rope] */;
2955 val
* var1
/* : Rope */;
2956 short int var2
/* : Bool */;
2960 var1
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__BufferRope__multi_concat
]))(self
, p0
) /* multi_concat on <self:BufferRope>*/;
2961 /* <var1:Rope> isa BufferRope */
2962 cltype
= type_ropes__BufferRope
.color
;
2963 idtype
= type_ropes__BufferRope
.id
;
2964 if(cltype
>= var1
->type
->table_size
) {
2967 var2
= var1
->type
->type_table
[cltype
] == idtype
;
2970 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/ropes.nit", 618);
2978 /* method ropes#BufferRope#multi_concat for (self: Object, Array[Rope]): Rope */
2979 val
* VIRTUAL_ropes__BufferRope__multi_concat(val
* self
, val
* p0
) {
2980 val
* var
/* : Rope */;
2981 val
* var1
/* : BufferRope */;
2982 var1
= ropes__BufferRope__multi_concat(self
, p0
);
2987 /* method ropes#BufferRope#to_s for (self: BufferRope): String */
2988 val
* ropes__BufferRope__to_s(val
* self
) {
2989 val
* var
/* : String */;
2990 short int var1
/* : Bool */;
2991 val
* var2
/* : nullable String */;
2992 val
* var3
/* : null */;
2993 short int var4
/* : Bool */;
2994 short int var_
/* var : Bool */;
2995 short int var5
/* : Bool */;
2996 val
* var6
/* : String */;
2997 short int var7
/* : Bool */;
2998 val
* var8
/* : nullable String */;
2999 var2
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__Rope__str_representation
]))(self
) /* str_representation on <self:BufferRope>*/;
3002 var4
= 1; /* is null */
3004 var4
= 0; /* arg is null but recv is not */
3010 var5
= ((short int (*)(val
*))(self
->class->vft
[COLOR_ropes__BufferRope__is_dirty
]))(self
) /* is_dirty on <self:BufferRope>*/;
3014 var6
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__Rope__flatten
]))(self
) /* flatten on <self:BufferRope>*/;
3015 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__Rope__str_representation_61d
]))(self
, var6
) /* str_representation= on <self:BufferRope>*/;
3017 ((void (*)(val
*, short int))(self
->class->vft
[COLOR_ropes__BufferRope__is_dirty_61d
]))(self
, var7
) /* is_dirty= on <self:BufferRope>*/;
3020 var8
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__Rope__str_representation
]))(self
) /* str_representation on <self:BufferRope>*/;
3022 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/ropes.nit", 629);
3030 /* method ropes#BufferRope#to_s for (self: Object): String */
3031 val
* VIRTUAL_ropes__BufferRope__to_s(val
* self
) {
3032 val
* var
/* : String */;
3033 val
* var1
/* : String */;
3034 var1
= ropes__BufferRope__to_s(self
);
3039 /* method ropes#ImmutableRope#init for (self: ImmutableRope) */
3040 void ropes__ImmutableRope__init(val
* self
) {
3041 ((void (*)(val
*))(self
->class->vft
[COLOR_ropes__Rope__init
]))(self
) /* init on <self:ImmutableRope>*/;
3044 /* method ropes#ImmutableRope#init for (self: Object) */
3045 void VIRTUAL_ropes__ImmutableRope__init(val
* self
) {
3046 ropes__ImmutableRope__init(self
);
3049 /* method ropes#ImmutableRope#with_string for (self: ImmutableRope, AbstractString) */
3050 void ropes__ImmutableRope__with_string(val
* self
, val
* p0
) {
3051 val
* var_str
/* var str: AbstractString */;
3053 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__Rope__with_string
]))(self
, p0
) /* with_string on <self:ImmutableRope>*/;
3056 /* method ropes#ImmutableRope#with_string for (self: Object, AbstractString) */
3057 void VIRTUAL_ropes__ImmutableRope__with_string(val
* self
, val
* p0
) {
3058 ropes__ImmutableRope__with_string(self
, p0
);
3061 /* method ropes#ImmutableRope#subrope for (self: ImmutableRope, Int, Int): ImmutableRope */
3062 val
* ropes__ImmutableRope__subrope(val
* self
, long p0
, long p1
) {
3063 val
* var
/* : ImmutableRope */;
3064 long var_index_from
/* var index_from: Int */;
3065 long var_count
/* var count: Int */;
3066 val
* var1
/* : Rope */;
3067 short int var2
/* : Bool */;
3070 val
* var3
/* : ImmutableRope */;
3071 var_index_from
= p0
;
3073 var1
= ((val
* (*)(val
*, long, long))(self
->class->vft
[COLOR_ropes__ImmutableRope__subrope
]))(self
, p0
, p1
) /* subrope on <self:ImmutableRope>*/;
3074 /* <var1:Rope> isa BufferRope */
3075 cltype
= type_ropes__BufferRope
.color
;
3076 idtype
= type_ropes__BufferRope
.id
;
3077 if(cltype
>= var1
->type
->table_size
) {
3080 var2
= var1
->type
->type_table
[cltype
] == idtype
;
3083 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/ropes.nit", 654);
3086 var3
= ((val
* (*)(val
*))(var1
->class->vft
[COLOR_ropes__BufferRope__to_immutable
]))(var1
) /* to_immutable on <var1:Rope(BufferRope)>*/;
3092 /* method ropes#ImmutableRope#subrope for (self: Object, Int, Int): Rope */
3093 val
* VIRTUAL_ropes__ImmutableRope__subrope(val
* self
, long p0
, long p1
) {
3094 val
* var
/* : Rope */;
3095 val
* var1
/* : ImmutableRope */;
3096 var1
= ropes__ImmutableRope__subrope(self
, p0
, p1
);
3101 /* method ropes#ImmutableRope#* for (self: ImmutableRope, Int): ImmutableRope */
3102 val
* ropes__ImmutableRope___42d(val
* self
, long p0
) {
3103 val
* var
/* : ImmutableRope */;
3104 long var_repeats
/* var repeats: Int */;
3105 val
* var1
/* : Rope */;
3106 short int var2
/* : Bool */;
3109 val
* var3
/* : ImmutableRope */;
3111 var1
= ((val
* (*)(val
*, long))(self
->class->vft
[COLOR_ropes__ImmutableRope___42d
]))(self
, p0
) /* * on <self:ImmutableRope>*/;
3112 /* <var1:Rope> isa BufferRope */
3113 cltype
= type_ropes__BufferRope
.color
;
3114 idtype
= type_ropes__BufferRope
.id
;
3115 if(cltype
>= var1
->type
->table_size
) {
3118 var2
= var1
->type
->type_table
[cltype
] == idtype
;
3121 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/ropes.nit", 659);
3124 var3
= ((val
* (*)(val
*))(var1
->class->vft
[COLOR_ropes__BufferRope__to_immutable
]))(var1
) /* to_immutable on <var1:Rope(BufferRope)>*/;
3130 /* method ropes#ImmutableRope#* for (self: Object, Int): Rope */
3131 val
* VIRTUAL_ropes__ImmutableRope___42d(val
* self
, long p0
) {
3132 val
* var
/* : Rope */;
3133 val
* var1
/* : ImmutableRope */;
3134 var1
= ropes__ImmutableRope___42d(self
, p0
);
3139 /* method ropes#ImmutableRope#+ for (self: ImmutableRope, Rope): ImmutableRope */
3140 val
* ropes__ImmutableRope___43d(val
* self
, val
* p0
) {
3141 val
* var
/* : ImmutableRope */;
3142 val
* var_other
/* var other: Rope */;
3143 val
* var1
/* : Rope */;
3144 short int var2
/* : Bool */;
3147 val
* var3
/* : ImmutableRope */;
3149 var1
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__ImmutableRope___43d
]))(self
, p0
) /* + on <self:ImmutableRope>*/;
3150 /* <var1:Rope> isa BufferRope */
3151 cltype
= type_ropes__BufferRope
.color
;
3152 idtype
= type_ropes__BufferRope
.id
;
3153 if(cltype
>= var1
->type
->table_size
) {
3156 var2
= var1
->type
->type_table
[cltype
] == idtype
;
3159 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/ropes.nit", 664);
3162 var3
= ((val
* (*)(val
*))(var1
->class->vft
[COLOR_ropes__BufferRope__to_immutable
]))(var1
) /* to_immutable on <var1:Rope(BufferRope)>*/;
3168 /* method ropes#ImmutableRope#+ for (self: Object, Rope): Rope */
3169 val
* VIRTUAL_ropes__ImmutableRope___43d(val
* self
, val
* p0
) {
3170 val
* var
/* : Rope */;
3171 val
* var1
/* : ImmutableRope */;
3172 var1
= ropes__ImmutableRope___43d(self
, p0
);
3177 /* method ropes#ImmutableRope#multi_concat for (self: ImmutableRope, Array[Rope]): ImmutableRope */
3178 val
* ropes__ImmutableRope__multi_concat(val
* self
, val
* p0
) {
3179 val
* var
/* : ImmutableRope */;
3180 val
* var_ropes
/* var ropes: Array[Rope] */;
3181 val
* var1
/* : Rope */;
3182 short int var2
/* : Bool */;
3185 val
* var3
/* : ImmutableRope */;
3187 var1
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__ImmutableRope__multi_concat
]))(self
, p0
) /* multi_concat on <self:ImmutableRope>*/;
3188 /* <var1:Rope> isa BufferRope */
3189 cltype
= type_ropes__BufferRope
.color
;
3190 idtype
= type_ropes__BufferRope
.id
;
3191 if(cltype
>= var1
->type
->table_size
) {
3194 var2
= var1
->type
->type_table
[cltype
] == idtype
;
3197 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/ropes.nit", 669);
3200 var3
= ((val
* (*)(val
*))(var1
->class->vft
[COLOR_ropes__BufferRope__to_immutable
]))(var1
) /* to_immutable on <var1:Rope(BufferRope)>*/;
3206 /* method ropes#ImmutableRope#multi_concat for (self: Object, Array[Rope]): Rope */
3207 val
* VIRTUAL_ropes__ImmutableRope__multi_concat(val
* self
, val
* p0
) {
3208 val
* var
/* : Rope */;
3209 val
* var1
/* : ImmutableRope */;
3210 var1
= ropes__ImmutableRope__multi_concat(self
, p0
);
3215 /* method ropes#CharRopeView#target for (self: CharRopeView): Rope */
3216 val
* ropes__CharRopeView__target(val
* self
) {
3217 val
* var
/* : Rope */;
3218 val
* var1
/* : Rope */;
3219 var1
= self
->attrs
[COLOR_ropes__CharRopeView___64dtarget
].val
; /* @target on <self:CharRopeView> */
3221 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @target", "lib/standard/ropes.nit", 681);
3228 /* method ropes#CharRopeView#target for (self: Object): Rope */
3229 val
* VIRTUAL_ropes__CharRopeView__target(val
* self
) {
3230 val
* var
/* : Rope */;
3231 val
* var1
/* : Rope */;
3232 var1
= ropes__CharRopeView__target(self
);
3237 /* method ropes#CharRopeView#target= for (self: CharRopeView, Rope) */
3238 void ropes__CharRopeView__target_61d(val
* self
, val
* p0
) {
3239 self
->attrs
[COLOR_ropes__CharRopeView___64dtarget
].val
= p0
; /* @target on <self:CharRopeView> */
3242 /* method ropes#CharRopeView#target= for (self: Object, Rope) */
3243 void VIRTUAL_ropes__CharRopeView__target_61d(val
* self
, val
* p0
) {
3244 ropes__CharRopeView__target_61d(self
, p0
);
3247 /* method ropes#CharRopeView#init for (self: CharRopeView, Rope) */
3248 void ropes__CharRopeView__init(val
* self
, val
* p0
) {
3249 val
* var_tgt
/* var tgt: Rope */;
3251 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__CharRopeView__target_61d
]))(self
, var_tgt
) /* target= on <self:CharRopeView>*/;
3254 /* method ropes#CharRopeView#init for (self: Object, Rope) */
3255 void VIRTUAL_ropes__CharRopeView__init(val
* self
, val
* p0
) {
3256 ropes__CharRopeView__init(self
, p0
);
3259 /* method ropes#CharRopeView#[] for (self: CharRopeView, Int): Char */
3260 char ropes__CharRopeView___91d_93d(val
* self
, long p0
) {
3261 char var
/* : Char */;
3262 long var_position
/* var position: Int */;
3263 val
* var1
/* : Rope */;
3264 val
* var2
/* : TupleLeafNodePos */;
3265 val
* var_tuple
/* var tuple: TupleLeafNodePos */;
3266 val
* var3
/* : LeafNode */;
3267 val
* var4
/* : String */;
3268 long var5
/* : Int */;
3269 val
* var6
/* : nullable Object */;
3270 char var7
/* : Char */;
3272 var1
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__CharRopeView__target
]))(self
) /* target on <self:CharRopeView>*/;
3273 var2
= ((val
* (*)(val
*, long))(var1
->class->vft
[COLOR_ropes__Rope__get_node_for_pos
]))(var1
, var_position
) /* get_node_for_pos on <var1:Rope>*/;
3275 var3
= ((val
* (*)(val
*))(var_tuple
->class->vft
[COLOR_ropes__TupleLeafNodePos__curr_node
]))(var_tuple
) /* curr_node on <var_tuple:TupleLeafNodePos>*/;
3276 var4
= ((val
* (*)(val
*))(var3
->class->vft
[COLOR_ropes__LeafNode__value
]))(var3
) /* value on <var3:LeafNode>*/;
3277 var5
= ((long (*)(val
*))(var_tuple
->class->vft
[COLOR_ropes__TupleLeafNodePos__corrected_pos
]))(var_tuple
) /* corrected_pos on <var_tuple:TupleLeafNodePos>*/;
3278 var6
= ((val
* (*)(val
*, long))(var4
->class->vft
[COLOR_abstract_collection__SequenceRead___91d_93d
]))(var4
, var5
) /* [] on <var4:String>*/;
3279 var7
= ((struct instance_kernel__Char
*)var6
)->value
; /* autounbox from nullable Object to Char */;
3285 /* method ropes#CharRopeView#[] for (self: Object, Int): nullable Object */
3286 val
* VIRTUAL_ropes__CharRopeView___91d_93d(val
* self
, long p0
) {
3287 val
* var
/* : nullable Object */;
3288 char var1
/* : Char */;
3289 val
* var2
/* : nullable Object */;
3290 var1
= ropes__CharRopeView___91d_93d(self
, p0
);
3291 var2
= BOX_kernel__Char(var1
); /* autobox from Char to nullable Object */
3296 /* method ropes#CharRopeView#first for (self: CharRopeView): Char */
3297 char ropes__CharRopeView__first(val
* self
) {
3298 char var
/* : Char */;
3299 long var1
/* : Int */;
3300 val
* var2
/* : nullable Object */;
3301 char var3
/* : Char */;
3303 var2
= ((val
* (*)(val
*, long))(self
->class->vft
[COLOR_abstract_collection__SequenceRead___91d_93d
]))(self
, var1
) /* [] on <self:CharRopeView>*/;
3304 var3
= ((struct instance_kernel__Char
*)var2
)->value
; /* autounbox from nullable Object to Char */;
3310 /* method ropes#CharRopeView#first for (self: Object): nullable Object */
3311 val
* VIRTUAL_ropes__CharRopeView__first(val
* self
) {
3312 val
* var
/* : nullable Object */;
3313 char var1
/* : Char */;
3314 val
* var2
/* : nullable Object */;
3315 var1
= ropes__CharRopeView__first(self
);
3316 var2
= BOX_kernel__Char(var1
); /* autobox from Char to nullable Object */
3321 /* method ropes#CharRopeView#index_of for (self: CharRopeView, Char): Int */
3322 long ropes__CharRopeView__index_of(val
* self
, char p0
) {
3323 long var
/* : Int */;
3324 short int var1
/* : Bool */;
3327 char var_char
/* var char: Char */;
3328 val
* var2
/* : RopeCharIterator */;
3329 val
* var3
/* : Rope */;
3330 val
* var_intern_iter
/* var intern_iter: RopeCharIterator */;
3331 short int var4
/* : Bool */;
3332 val
* var5
/* : nullable Object */;
3333 short int var6
/* : Bool */;
3334 short int var8
/* : Bool */;
3335 char var9
/* : Char */;
3336 long var10
/* : Int */;
3337 long var11
/* : Int */;
3338 long var12
/* : Int */;
3339 long var14
/* : Int */;
3340 /* Covariant cast for argument 0 (char) <p0:Char> isa SequenceRead#0 */
3341 /* <p0:Char> isa SequenceRead#0 */
3342 var1
= 1; /* easy <p0:Char> isa SequenceRead#0*/
3344 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/ropes.nit", 697);
3348 var2
= NEW_ropes__RopeCharIterator(&type_ropes__RopeCharIterator
);
3349 var3
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__CharRopeView__target
]))(self
) /* target on <self:CharRopeView>*/;
3350 ((void (*)(val
*, val
*))(var2
->class->vft
[COLOR_ropes__RopeCharIterator__init
]))(var2
, var3
) /* init on <var2:RopeCharIterator>*/;
3351 CHECK_NEW_ropes__RopeCharIterator(var2
);
3352 var_intern_iter
= var2
;
3354 var4
= ((short int (*)(val
*))(var_intern_iter
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var_intern_iter
) /* is_ok on <var_intern_iter:RopeCharIterator>*/;
3356 var5
= ((val
* (*)(val
*))(var_intern_iter
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var_intern_iter
) /* item on <var_intern_iter:RopeCharIterator>*/;
3357 { /* Inline kernel#Char#== (var5,var_char) */
3358 var8
= (var5
!= NULL
) && (var5
->class == &class_kernel__Char
);
3360 var9
= ((struct instance_kernel__Char
*)var5
)->value
; /* autounbox from nullable Object to Char */;
3361 var8
= (var9
== var_char
);
3368 var10
= ((long (*)(val
*))(var_intern_iter
->class->vft
[COLOR_abstract_collection__IndexedIterator__index
]))(var_intern_iter
) /* index on <var_intern_iter:RopeCharIterator>*/;
3373 ((void (*)(val
*))(var_intern_iter
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var_intern_iter
) /* next on <var_intern_iter:RopeCharIterator>*/;
3374 CONTINUE_label
: (void)0;
3376 BREAK_label
: (void)0;
3378 { /* Inline kernel#Int#unary - (var11) */
3382 RET_LABEL13
:(void)0;
3389 /* method ropes#CharRopeView#index_of for (self: Object, nullable Object): Int */
3390 long VIRTUAL_ropes__CharRopeView__index_of(val
* self
, val
* p0
) {
3391 long var
/* : Int */;
3392 long var1
/* : Int */;
3393 char var2
/* : Char */;
3394 var2
= ((struct instance_kernel__Char
*)p0
)->value
; /* autounbox from nullable Object to Char */;
3395 var1
= ropes__CharRopeView__index_of(self
, var2
);
3400 /* method ropes#CharRopeView#iterator for (self: CharRopeView): Iterator[Char] */
3401 val
* ropes__CharRopeView__iterator(val
* self
) {
3402 val
* var
/* : Iterator[Char] */;
3403 val
* var1
/* : RopeCharIterator */;
3404 val
* var2
/* : Rope */;
3405 var1
= NEW_ropes__RopeCharIterator(&type_ropes__RopeCharIterator
);
3406 var2
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__CharRopeView__target
]))(self
) /* target on <self:CharRopeView>*/;
3407 ((void (*)(val
*, val
*))(var1
->class->vft
[COLOR_ropes__RopeCharIterator__init
]))(var1
, var2
) /* init on <var1:RopeCharIterator>*/;
3408 CHECK_NEW_ropes__RopeCharIterator(var1
);
3414 /* method ropes#CharRopeView#iterator for (self: Object): Iterator[nullable Object] */
3415 val
* VIRTUAL_ropes__CharRopeView__iterator(val
* self
) {
3416 val
* var
/* : Iterator[nullable Object] */;
3417 val
* var1
/* : Iterator[Char] */;
3418 var1
= ropes__CharRopeView__iterator(self
);
3423 /* method ropes#CharRopeView#last for (self: CharRopeView): Char */
3424 char ropes__CharRopeView__last(val
* self
) {
3425 char var
/* : Char */;
3426 long var1
/* : Int */;
3427 long var2
/* : Int */;
3428 long var3
/* : Int */;
3429 long var5
/* : Int */;
3430 val
* var6
/* : nullable Object */;
3431 char var7
/* : Char */;
3432 var1
= ((long (*)(val
*))(self
->class->vft
[COLOR_abstract_collection__Collection__length
]))(self
) /* length on <self:CharRopeView>*/;
3434 { /* Inline kernel#Int#- (var1,var2) */
3440 var6
= ((val
* (*)(val
*, long))(self
->class->vft
[COLOR_abstract_collection__SequenceRead___91d_93d
]))(self
, var3
) /* [] on <self:CharRopeView>*/;
3441 var7
= ((struct instance_kernel__Char
*)var6
)->value
; /* autounbox from nullable Object to Char */;
3447 /* method ropes#CharRopeView#last for (self: Object): nullable Object */
3448 val
* VIRTUAL_ropes__CharRopeView__last(val
* self
) {
3449 val
* var
/* : nullable Object */;
3450 char var1
/* : Char */;
3451 val
* var2
/* : nullable Object */;
3452 var1
= ropes__CharRopeView__last(self
);
3453 var2
= BOX_kernel__Char(var1
); /* autobox from Char to nullable Object */
3458 /* method ropes#CharRopeView#length for (self: CharRopeView): Int */
3459 long ropes__CharRopeView__length(val
* self
) {
3460 long var
/* : Int */;
3461 val
* var1
/* : Rope */;
3462 long var2
/* : Int */;
3463 var1
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__CharRopeView__target
]))(self
) /* target on <self:CharRopeView>*/;
3464 var2
= ((long (*)(val
*))(var1
->class->vft
[COLOR_ropes__Rope__length
]))(var1
) /* length on <var1:Rope>*/;
3470 /* method ropes#CharRopeView#length for (self: Object): Int */
3471 long VIRTUAL_ropes__CharRopeView__length(val
* self
) {
3472 long var
/* : Int */;
3473 long var1
/* : Int */;
3474 var1
= ropes__CharRopeView__length(self
);
3479 /* method ropes#CharRopeView#count for (self: CharRopeView, Char): Int */
3480 long ropes__CharRopeView__count(val
* self
, char p0
) {
3481 long var
/* : Int */;
3482 short int var1
/* : Bool */;
3485 char var_item
/* var item: Char */;
3486 long var2
/* : Int */;
3487 long var_count
/* var count: Int */;
3488 val
* var3
/* : Iterator[nullable Object] */;
3489 val
* var_iter
/* var iter: Iterator[Char] */;
3490 val
* var4
/* : Iterator[nullable Object] */;
3491 short int var5
/* : Bool */;
3492 val
* var6
/* : nullable Object */;
3493 char var_i
/* var i: Char */;
3494 char var7
/* : Char */;
3495 short int var8
/* : Bool */;
3496 short int var10
/* : Bool */;
3497 long var11
/* : Int */;
3498 long var12
/* : Int */;
3499 long var14
/* : Int */;
3500 /* Covariant cast for argument 0 (item) <p0:Char> isa Collection#0 */
3501 /* <p0:Char> isa Collection#0 */
3502 var1
= 1; /* easy <p0:Char> isa Collection#0*/
3504 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/ropes.nit", 715);
3510 var3
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(self
) /* iterator on <self:CharRopeView>*/;
3512 var4
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(self
) /* iterator on <self:CharRopeView>*/;
3514 var5
= ((short int (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var4
) /* is_ok on <var4:Iterator[nullable Object]>*/;
3516 var6
= ((val
* (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var4
) /* item on <var4:Iterator[nullable Object]>*/;
3517 var7
= ((struct instance_kernel__Char
*)var6
)->value
; /* autounbox from nullable Object to Char */;
3519 { /* Inline kernel#Char#== (var_i,var_item) */
3520 var10
= var_i
== var_item
;
3527 { /* Inline kernel#Int#+ (var_count,var11) */
3528 var14
= var_count
+ var11
;
3531 RET_LABEL13
:(void)0;
3536 CONTINUE_label
: (void)0;
3537 ((void (*)(val
*))(var4
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var4
) /* next on <var4:Iterator[nullable Object]>*/;
3539 BREAK_label
: (void)0;
3545 /* method ropes#CharRopeView#count for (self: Object, nullable Object): Int */
3546 long VIRTUAL_ropes__CharRopeView__count(val
* self
, val
* p0
) {
3547 long var
/* : Int */;
3548 long var1
/* : Int */;
3549 char var2
/* : Char */;
3550 var2
= ((struct instance_kernel__Char
*)p0
)->value
; /* autounbox from nullable Object to Char */;
3551 var1
= ropes__CharRopeView__count(self
, var2
);
3556 /* method ropes#CharRopeView#has_only for (self: CharRopeView, Char): Bool */
3557 short int ropes__CharRopeView__has_only(val
* self
, char p0
) {
3558 short int var
/* : Bool */;
3559 short int var1
/* : Bool */;
3562 char var_item
/* var item: Char */;
3563 val
* var2
/* : Iterator[nullable Object] */;
3564 short int var3
/* : Bool */;
3565 val
* var4
/* : nullable Object */;
3566 char var_i
/* var i: Char */;
3567 char var5
/* : Char */;
3568 short int var6
/* : Bool */;
3569 short int var8
/* : Bool */;
3570 short int var9
/* : Bool */;
3571 short int var10
/* : Bool */;
3572 short int var11
/* : Bool */;
3573 /* Covariant cast for argument 0 (item) <p0:Char> isa Collection#0 */
3574 /* <p0:Char> isa Collection#0 */
3575 var1
= 1; /* easy <p0:Char> isa Collection#0*/
3577 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/ropes.nit", 727);
3581 var2
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(self
) /* iterator on <self:CharRopeView>*/;
3583 var3
= ((short int (*)(val
*))(var2
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var2
) /* is_ok on <var2:Iterator[nullable Object]>*/;
3585 var4
= ((val
* (*)(val
*))(var2
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var2
) /* item on <var2:Iterator[nullable Object]>*/;
3586 var5
= ((struct instance_kernel__Char
*)var4
)->value
; /* autounbox from nullable Object to Char */;
3588 { /* Inline kernel#Char#!= (var_i,var_item) */
3589 var8
= var_i
== var_item
;
3601 CONTINUE_label
: (void)0;
3602 ((void (*)(val
*))(var2
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var2
) /* next on <var2:Iterator[nullable Object]>*/;
3604 BREAK_label
: (void)0;
3611 /* method ropes#CharRopeView#has_only for (self: Object, nullable Object): Bool */
3612 short int VIRTUAL_ropes__CharRopeView__has_only(val
* self
, val
* p0
) {
3613 short int var
/* : Bool */;
3614 short int var1
/* : Bool */;
3615 char var2
/* : Char */;
3616 var2
= ((struct instance_kernel__Char
*)p0
)->value
; /* autounbox from nullable Object to Char */;
3617 var1
= ropes__CharRopeView__has_only(self
, var2
);
3622 /* method ropes#CharRopeView#is_empty for (self: CharRopeView): Bool */
3623 short int ropes__CharRopeView__is_empty(val
* self
) {
3624 short int var
/* : Bool */;
3625 long var1
/* : Int */;
3626 long var2
/* : Int */;
3627 short int var3
/* : Bool */;
3628 short int var5
/* : Bool */;
3629 var1
= ((long (*)(val
*))(self
->class->vft
[COLOR_abstract_collection__Collection__length
]))(self
) /* length on <self:CharRopeView>*/;
3631 { /* Inline kernel#Int#== (var1,var2) */
3632 var5
= var1
== var2
;
3642 /* method ropes#CharRopeView#is_empty for (self: Object): Bool */
3643 short int VIRTUAL_ropes__CharRopeView__is_empty(val
* self
) {
3644 short int var
/* : Bool */;
3645 short int var1
/* : Bool */;
3646 var1
= ropes__CharRopeView__is_empty(self
);
3651 /* method ropes#CharRopeView#to_a for (self: CharRopeView): Array[Char] */
3652 val
* ropes__CharRopeView__to_a(val
* self
) {
3653 val
* var
/* : Array[Char] */;
3654 val
* var1
/* : String */;
3655 val
* var2
/* : Array[nullable Object] */;
3656 var1
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_string__Object__to_s
]))(self
) /* to_s on <self:CharRopeView>*/;
3657 var2
= ((val
* (*)(val
*))(var1
->class->vft
[COLOR_array__Collection__to_a
]))(var1
) /* to_a on <var1:String>*/;
3663 /* method ropes#CharRopeView#to_a for (self: Object): Array[nullable Object] */
3664 val
* VIRTUAL_ropes__CharRopeView__to_a(val
* self
) {
3665 val
* var
/* : Array[nullable Object] */;
3666 val
* var1
/* : Array[Char] */;
3667 var1
= ropes__CharRopeView__to_a(self
);
3672 /* method ropes#CharRopeView#to_s for (self: CharRopeView): String */
3673 val
* ropes__CharRopeView__to_s(val
* self
) {
3674 val
* var
/* : String */;
3675 val
* var1
/* : Rope */;
3676 val
* var2
/* : String */;
3677 var1
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__CharRopeView__target
]))(self
) /* target on <self:CharRopeView>*/;
3678 var2
= ((val
* (*)(val
*))(var1
->class->vft
[COLOR_string__Object__to_s
]))(var1
) /* to_s on <var1:Rope>*/;
3684 /* method ropes#CharRopeView#to_s for (self: Object): String */
3685 val
* VIRTUAL_ropes__CharRopeView__to_s(val
* self
) {
3686 val
* var
/* : String */;
3687 val
* var1
/* : String */;
3688 var1
= ropes__CharRopeView__to_s(self
);
3693 /* method ropes#CharRopeView#== for (self: CharRopeView, nullable Object): Bool */
3694 short int ropes__CharRopeView___61d_61d(val
* self
, val
* p0
) {
3695 short int var
/* : Bool */;
3696 val
* var_other
/* var other: nullable Object */;
3697 short int var1
/* : Bool */;
3700 short int var2
/* : Bool */;
3701 short int var3
/* : Bool */;
3702 long var4
/* : Int */;
3703 short int var5
/* : Bool */;
3704 short int var7
/* : Bool */;
3705 long var8
/* : Int */;
3706 short int var9
/* : Bool */;
3707 short int var10
/* : Bool */;
3708 val
* var11
/* : Iterator[nullable Object] */;
3709 val
* var_iter
/* var iter: IndexedIterator[Char] */;
3710 val
* var12
/* : Iterator[nullable Object] */;
3711 short int var13
/* : Bool */;
3712 val
* var14
/* : nullable Object */;
3713 char var_i
/* var i: Char */;
3714 char var15
/* : Char */;
3715 val
* var16
/* : nullable Object */;
3716 short int var17
/* : Bool */;
3717 short int var19
/* : Bool */;
3718 char var20
/* : Char */;
3719 short int var21
/* : Bool */;
3720 short int var22
/* : Bool */;
3721 short int var23
/* : Bool */;
3723 /* <var_other:nullable Object> isa SequenceRead[Char] */
3724 cltype
= type_abstract_collection__SequenceReadkernel__Char
.color
;
3725 idtype
= type_abstract_collection__SequenceReadkernel__Char
.id
;
3726 if(var_other
== NULL
) {
3729 if(cltype
>= var_other
->type
->table_size
) {
3732 var1
= var_other
->type
->type_table
[cltype
] == idtype
;
3742 var4
= ((long (*)(val
*))(self
->class->vft
[COLOR_abstract_collection__Collection__length
]))(self
) /* length on <self:CharRopeView>*/;
3743 { /* Inline kernel#Int#!= (var4,var_other) */
3744 var7
= (var_other
!= NULL
) && (var_other
->class == &class_kernel__Int
);
3746 var8
= ((struct instance_kernel__Int
*)var_other
)->value
; /* autounbox from nullable Object to Int */;
3747 var7
= (var8
== var4
);
3760 var11
= ((val
* (*)(val
*))(var_other
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_other
) /* iterator on <var_other:nullable Object(SequenceRead[Char])>*/;
3762 var12
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(self
) /* iterator on <self:CharRopeView>*/;
3764 var13
= ((short int (*)(val
*))(var12
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var12
) /* is_ok on <var12:Iterator[nullable Object]>*/;
3766 var14
= ((val
* (*)(val
*))(var12
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var12
) /* item on <var12:Iterator[nullable Object]>*/;
3767 var15
= ((struct instance_kernel__Char
*)var14
)->value
; /* autounbox from nullable Object to Char */;
3769 var16
= ((val
* (*)(val
*))(var_iter
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var_iter
) /* item on <var_iter:IndexedIterator[Char]>*/;
3770 { /* Inline kernel#Char#!= (var_i,var16) */
3771 var19
= (var16
!= NULL
) && (var16
->class == &class_kernel__Char
);
3773 var20
= ((struct instance_kernel__Char
*)var16
)->value
; /* autounbox from nullable Object to Char */;
3774 var19
= (var20
== var_i
);
3779 RET_LABEL18
:(void)0;
3787 ((void (*)(val
*))(var_iter
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var_iter
) /* next on <var_iter:IndexedIterator[Char]>*/;
3788 CONTINUE_label
: (void)0;
3789 ((void (*)(val
*))(var12
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var12
) /* next on <var12:Iterator[nullable Object]>*/;
3791 BREAK_label
: (void)0;
3798 /* method ropes#CharRopeView#== for (self: Object, nullable Object): Bool */
3799 short int VIRTUAL_ropes__CharRopeView___61d_61d(val
* self
, val
* p0
) {
3800 short int var
/* : Bool */;
3801 short int var1
/* : Bool */;
3802 var1
= ropes__CharRopeView___61d_61d(self
, p0
);
3807 /* method ropes#TupleVisitNode#init for (self: TupleVisitNode, ConcatNode) */
3808 void ropes__TupleVisitNode__init(val
* self
, val
* p0
) {
3809 val
* var_tgt
/* var tgt: ConcatNode */;
3811 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__TupleVisitNode__node_61d
]))(self
, var_tgt
) /* node= on <self:TupleVisitNode>*/;
3814 /* method ropes#TupleVisitNode#init for (self: Object, ConcatNode) */
3815 void VIRTUAL_ropes__TupleVisitNode__init(val
* self
, val
* p0
) {
3816 ropes__TupleVisitNode__init(self
, p0
);
3819 /* method ropes#TupleVisitNode#node for (self: TupleVisitNode): ConcatNode */
3820 val
* ropes__TupleVisitNode__node(val
* self
) {
3821 val
* var
/* : ConcatNode */;
3822 val
* var1
/* : ConcatNode */;
3823 var1
= self
->attrs
[COLOR_ropes__TupleVisitNode___64dnode
].val
; /* @node on <self:TupleVisitNode> */
3825 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @node", "lib/standard/ropes.nit", 775);
3832 /* method ropes#TupleVisitNode#node for (self: Object): ConcatNode */
3833 val
* VIRTUAL_ropes__TupleVisitNode__node(val
* self
) {
3834 val
* var
/* : ConcatNode */;
3835 val
* var1
/* : ConcatNode */;
3836 var1
= ropes__TupleVisitNode__node(self
);
3841 /* method ropes#TupleVisitNode#node= for (self: TupleVisitNode, ConcatNode) */
3842 void ropes__TupleVisitNode__node_61d(val
* self
, val
* p0
) {
3843 self
->attrs
[COLOR_ropes__TupleVisitNode___64dnode
].val
= p0
; /* @node on <self:TupleVisitNode> */
3846 /* method ropes#TupleVisitNode#node= for (self: Object, ConcatNode) */
3847 void VIRTUAL_ropes__TupleVisitNode__node_61d(val
* self
, val
* p0
) {
3848 ropes__TupleVisitNode__node_61d(self
, p0
);
3851 /* method ropes#TupleVisitNode#left_visited for (self: TupleVisitNode): Bool */
3852 short int ropes__TupleVisitNode__left_visited(val
* self
) {
3853 short int var
/* : Bool */;
3854 short int var1
/* : Bool */;
3855 var1
= self
->attrs
[COLOR_ropes__TupleVisitNode___64dleft_visited
].s
; /* @left_visited on <self:TupleVisitNode> */
3860 /* method ropes#TupleVisitNode#left_visited for (self: Object): Bool */
3861 short int VIRTUAL_ropes__TupleVisitNode__left_visited(val
* self
) {
3862 short int var
/* : Bool */;
3863 short int var1
/* : Bool */;
3864 var1
= ropes__TupleVisitNode__left_visited(self
);
3869 /* method ropes#TupleVisitNode#left_visited= for (self: TupleVisitNode, Bool) */
3870 void ropes__TupleVisitNode__left_visited_61d(val
* self
, short int p0
) {
3871 self
->attrs
[COLOR_ropes__TupleVisitNode___64dleft_visited
].s
= p0
; /* @left_visited on <self:TupleVisitNode> */
3874 /* method ropes#TupleVisitNode#left_visited= for (self: Object, Bool) */
3875 void VIRTUAL_ropes__TupleVisitNode__left_visited_61d(val
* self
, short int p0
) {
3876 ropes__TupleVisitNode__left_visited_61d(self
, p0
);
3879 /* method ropes#TupleVisitNode#right_visited for (self: TupleVisitNode): Bool */
3880 short int ropes__TupleVisitNode__right_visited(val
* self
) {
3881 short int var
/* : Bool */;
3882 short int var1
/* : Bool */;
3883 var1
= self
->attrs
[COLOR_ropes__TupleVisitNode___64dright_visited
].s
; /* @right_visited on <self:TupleVisitNode> */
3888 /* method ropes#TupleVisitNode#right_visited for (self: Object): Bool */
3889 short int VIRTUAL_ropes__TupleVisitNode__right_visited(val
* self
) {
3890 short int var
/* : Bool */;
3891 short int var1
/* : Bool */;
3892 var1
= ropes__TupleVisitNode__right_visited(self
);
3897 /* method ropes#TupleVisitNode#right_visited= for (self: TupleVisitNode, Bool) */
3898 void ropes__TupleVisitNode__right_visited_61d(val
* self
, short int p0
) {
3899 self
->attrs
[COLOR_ropes__TupleVisitNode___64dright_visited
].s
= p0
; /* @right_visited on <self:TupleVisitNode> */
3902 /* method ropes#TupleVisitNode#right_visited= for (self: Object, Bool) */
3903 void VIRTUAL_ropes__TupleVisitNode__right_visited_61d(val
* self
, short int p0
) {
3904 ropes__TupleVisitNode__right_visited_61d(self
, p0
);
3907 /* method ropes#RopeIterator#target for (self: RopeIterator): Rope */
3908 val
* ropes__RopeIterator__target(val
* self
) {
3909 val
* var
/* : Rope */;
3910 val
* var1
/* : Rope */;
3911 var1
= self
->attrs
[COLOR_ropes__RopeIterator___target
].val
; /* _target on <self:RopeIterator> */
3913 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _target", "lib/standard/ropes.nit", 789);
3921 /* method ropes#RopeIterator#target for (self: Object): Rope */
3922 val
* VIRTUAL_ropes__RopeIterator__target(val
* self
) {
3923 val
* var
/* : Rope */;
3924 val
* var1
/* : Rope */;
3925 var1
= ropes__RopeIterator__target(self
);
3930 /* method ropes#RopeIterator#pos for (self: RopeIterator): Int */
3931 long ropes__RopeIterator__pos(val
* self
) {
3932 long var
/* : Int */;
3933 long var1
/* : Int */;
3934 var1
= self
->attrs
[COLOR_ropes__RopeIterator___64dpos
].l
; /* @pos on <self:RopeIterator> */
3939 /* method ropes#RopeIterator#pos for (self: Object): Int */
3940 long VIRTUAL_ropes__RopeIterator__pos(val
* self
) {
3941 long var
/* : Int */;
3942 long var1
/* : Int */;
3943 var1
= ropes__RopeIterator__pos(self
);
3948 /* method ropes#RopeIterator#pos= for (self: RopeIterator, Int) */
3949 void ropes__RopeIterator__pos_61d(val
* self
, long p0
) {
3950 self
->attrs
[COLOR_ropes__RopeIterator___64dpos
].l
= p0
; /* @pos on <self:RopeIterator> */
3953 /* method ropes#RopeIterator#pos= for (self: Object, Int) */
3954 void VIRTUAL_ropes__RopeIterator__pos_61d(val
* self
, long p0
) {
3955 ropes__RopeIterator__pos_61d(self
, p0
);
3958 /* method ropes#RopeIterator#init for (self: RopeIterator, Rope) */
3959 void ropes__RopeIterator__init(val
* self
, val
* p0
) {
3960 val
* var_tgt
/* var tgt: Rope */;
3962 self
->attrs
[COLOR_ropes__RopeIterator___target
].val
= var_tgt
; /* _target on <self:RopeIterator> */
3965 /* method ropes#RopeIterator#init for (self: Object, Rope) */
3966 void VIRTUAL_ropes__RopeIterator__init(val
* self
, val
* p0
) {
3967 ropes__RopeIterator__init(self
, p0
);
3970 /* method ropes#RopeIterator#with_index for (self: RopeIterator, Rope, Int) */
3971 void ropes__RopeIterator__with_index(val
* self
, val
* p0
, long p1
) {
3972 val
* var_tgt
/* var tgt: Rope */;
3973 long var_index
/* var index: Int */;
3976 self
->attrs
[COLOR_ropes__RopeIterator___target
].val
= var_tgt
; /* _target on <self:RopeIterator> */
3979 /* method ropes#RopeIterator#with_index for (self: Object, Rope, Int) */
3980 void VIRTUAL_ropes__RopeIterator__with_index(val
* self
, val
* p0
, long p1
) {
3981 ropes__RopeIterator__with_index(self
, p0
, p1
);
3984 /* method ropes#RopeCharIterator#sub_str_iter for (self: RopeCharIterator): DFSRopeLeafIterator */
3985 val
* ropes__RopeCharIterator__sub_str_iter(val
* self
) {
3986 val
* var
/* : DFSRopeLeafIterator */;
3987 val
* var1
/* : DFSRopeLeafIterator */;
3988 var1
= self
->attrs
[COLOR_ropes__RopeCharIterator___64dsub_str_iter
].val
; /* @sub_str_iter on <self:RopeCharIterator> */
3990 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @sub_str_iter", "lib/standard/ropes.nit", 810);
3997 /* method ropes#RopeCharIterator#sub_str_iter for (self: Object): DFSRopeLeafIterator */
3998 val
* VIRTUAL_ropes__RopeCharIterator__sub_str_iter(val
* self
) {
3999 val
* var
/* : DFSRopeLeafIterator */;
4000 val
* var1
/* : DFSRopeLeafIterator */;
4001 var1
= ropes__RopeCharIterator__sub_str_iter(self
);
4006 /* method ropes#RopeCharIterator#sub_str_iter= for (self: RopeCharIterator, DFSRopeLeafIterator) */
4007 void ropes__RopeCharIterator__sub_str_iter_61d(val
* self
, val
* p0
) {
4008 self
->attrs
[COLOR_ropes__RopeCharIterator___64dsub_str_iter
].val
= p0
; /* @sub_str_iter on <self:RopeCharIterator> */
4011 /* method ropes#RopeCharIterator#sub_str_iter= for (self: Object, DFSRopeLeafIterator) */
4012 void VIRTUAL_ropes__RopeCharIterator__sub_str_iter_61d(val
* self
, val
* p0
) {
4013 ropes__RopeCharIterator__sub_str_iter_61d(self
, p0
);
4016 /* method ropes#RopeCharIterator#abs_pos for (self: RopeCharIterator): Int */
4017 long ropes__RopeCharIterator__abs_pos(val
* self
) {
4018 long var
/* : Int */;
4019 long var1
/* : Int */;
4020 var1
= self
->attrs
[COLOR_ropes__RopeCharIterator___64dabs_pos
].l
; /* @abs_pos on <self:RopeCharIterator> */
4025 /* method ropes#RopeCharIterator#abs_pos for (self: Object): Int */
4026 long VIRTUAL_ropes__RopeCharIterator__abs_pos(val
* self
) {
4027 long var
/* : Int */;
4028 long var1
/* : Int */;
4029 var1
= ropes__RopeCharIterator__abs_pos(self
);
4034 /* method ropes#RopeCharIterator#abs_pos= for (self: RopeCharIterator, Int) */
4035 void ropes__RopeCharIterator__abs_pos_61d(val
* self
, long p0
) {
4036 self
->attrs
[COLOR_ropes__RopeCharIterator___64dabs_pos
].l
= p0
; /* @abs_pos on <self:RopeCharIterator> */
4039 /* method ropes#RopeCharIterator#abs_pos= for (self: Object, Int) */
4040 void VIRTUAL_ropes__RopeCharIterator__abs_pos_61d(val
* self
, long p0
) {
4041 ropes__RopeCharIterator__abs_pos_61d(self
, p0
);
4044 /* method ropes#RopeCharIterator#sub_pos for (self: RopeCharIterator): Int */
4045 long ropes__RopeCharIterator__sub_pos(val
* self
) {
4046 long var
/* : Int */;
4047 long var1
/* : Int */;
4048 var1
= self
->attrs
[COLOR_ropes__RopeCharIterator___64dsub_pos
].l
; /* @sub_pos on <self:RopeCharIterator> */
4053 /* method ropes#RopeCharIterator#sub_pos for (self: Object): Int */
4054 long VIRTUAL_ropes__RopeCharIterator__sub_pos(val
* self
) {
4055 long var
/* : Int */;
4056 long var1
/* : Int */;
4057 var1
= ropes__RopeCharIterator__sub_pos(self
);
4062 /* method ropes#RopeCharIterator#sub_pos= for (self: RopeCharIterator, Int) */
4063 void ropes__RopeCharIterator__sub_pos_61d(val
* self
, long p0
) {
4064 self
->attrs
[COLOR_ropes__RopeCharIterator___64dsub_pos
].l
= p0
; /* @sub_pos on <self:RopeCharIterator> */
4067 /* method ropes#RopeCharIterator#sub_pos= for (self: Object, Int) */
4068 void VIRTUAL_ropes__RopeCharIterator__sub_pos_61d(val
* self
, long p0
) {
4069 ropes__RopeCharIterator__sub_pos_61d(self
, p0
);
4072 /* method ropes#RopeCharIterator#curr_substring for (self: RopeCharIterator): nullable String */
4073 val
* ropes__RopeCharIterator__curr_substring(val
* self
) {
4074 val
* var
/* : nullable String */;
4075 val
* var1
/* : nullable String */;
4076 var1
= self
->attrs
[COLOR_ropes__RopeCharIterator___64dcurr_substring
].val
; /* @curr_substring on <self:RopeCharIterator> */
4081 /* method ropes#RopeCharIterator#curr_substring for (self: Object): nullable String */
4082 val
* VIRTUAL_ropes__RopeCharIterator__curr_substring(val
* self
) {
4083 val
* var
/* : nullable String */;
4084 val
* var1
/* : nullable String */;
4085 var1
= ropes__RopeCharIterator__curr_substring(self
);
4090 /* method ropes#RopeCharIterator#curr_substring= for (self: RopeCharIterator, nullable String) */
4091 void ropes__RopeCharIterator__curr_substring_61d(val
* self
, val
* p0
) {
4092 self
->attrs
[COLOR_ropes__RopeCharIterator___64dcurr_substring
].val
= p0
; /* @curr_substring on <self:RopeCharIterator> */
4095 /* method ropes#RopeCharIterator#curr_substring= for (self: Object, nullable String) */
4096 void VIRTUAL_ropes__RopeCharIterator__curr_substring_61d(val
* self
, val
* p0
) {
4097 ropes__RopeCharIterator__curr_substring_61d(self
, p0
);
4100 /* method ropes#RopeCharIterator#init for (self: RopeCharIterator, Rope) */
4101 void ropes__RopeCharIterator__init(val
* self
, val
* p0
) {
4102 val
* var_tgt
/* var tgt: Rope */;
4103 val
* var
/* : DFSRopeLeafIterator */;
4104 val
* var1
/* : DFSRopeLeafIterator */;
4105 short int var2
/* : Bool */;
4106 val
* var3
/* : DFSRopeLeafIterator */;
4107 val
* var4
/* : nullable Object */;
4108 val
* var5
/* : String */;
4110 var
= NEW_ropes__DFSRopeLeafIterator(&type_ropes__DFSRopeLeafIterator
);
4111 ((void (*)(val
*, val
*))(var
->class->vft
[COLOR_ropes__DFSRopeLeafIterator__init
]))(var
, var_tgt
) /* init on <var:DFSRopeLeafIterator>*/;
4112 CHECK_NEW_ropes__DFSRopeLeafIterator(var
);
4113 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__RopeCharIterator__sub_str_iter_61d
]))(self
, var
) /* sub_str_iter= on <self:RopeCharIterator>*/;
4114 var1
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__RopeCharIterator__sub_str_iter
]))(self
) /* sub_str_iter on <self:RopeCharIterator>*/;
4115 var2
= ((short int (*)(val
*))(var1
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var1
) /* is_ok on <var1:DFSRopeLeafIterator>*/;
4117 var3
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__RopeCharIterator__sub_str_iter
]))(self
) /* sub_str_iter on <self:RopeCharIterator>*/;
4118 var4
= ((val
* (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var3
) /* item on <var3:DFSRopeLeafIterator>*/;
4119 var5
= ((val
* (*)(val
*))(var4
->class->vft
[COLOR_ropes__LeafNode__value
]))(var4
) /* value on <var4:nullable Object(LeafNode)>*/;
4120 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__RopeCharIterator__curr_substring_61d
]))(self
, var5
) /* curr_substring= on <self:RopeCharIterator>*/;
4125 /* method ropes#RopeCharIterator#init for (self: Object, Rope) */
4126 void VIRTUAL_ropes__RopeCharIterator__init(val
* self
, val
* p0
) {
4127 ropes__RopeCharIterator__init(self
, p0
);
4130 /* method ropes#RopeCharIterator#item for (self: RopeCharIterator): Char */
4131 char ropes__RopeCharIterator__item(val
* self
) {
4132 char var
/* : Char */;
4133 val
* var1
/* : nullable String */;
4134 long var2
/* : Int */;
4135 val
* var3
/* : nullable Object */;
4136 char var4
/* : Char */;
4137 var1
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__RopeCharIterator__curr_substring
]))(self
) /* curr_substring on <self:RopeCharIterator>*/;
4138 var2
= ((long (*)(val
*))(self
->class->vft
[COLOR_ropes__RopeCharIterator__sub_pos
]))(self
) /* sub_pos on <self:RopeCharIterator>*/;
4140 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/ropes.nit", 828);
4143 var3
= ((val
* (*)(val
*, long))(var1
->class->vft
[COLOR_abstract_collection__SequenceRead___91d_93d
]))(var1
, var2
) /* [] on <var1:nullable String>*/;
4145 var4
= ((struct instance_kernel__Char
*)var3
)->value
; /* autounbox from nullable Object to Char */;
4151 /* method ropes#RopeCharIterator#item for (self: Object): nullable Object */
4152 val
* VIRTUAL_ropes__RopeCharIterator__item(val
* self
) {
4153 val
* var
/* : nullable Object */;
4154 char var1
/* : Char */;
4155 val
* var2
/* : nullable Object */;
4156 var1
= ropes__RopeCharIterator__item(self
);
4157 var2
= BOX_kernel__Char(var1
); /* autobox from Char to nullable Object */
4162 /* method ropes#RopeCharIterator#is_ok for (self: RopeCharIterator): Bool */
4163 short int ropes__RopeCharIterator__is_ok(val
* self
) {
4164 short int var
/* : Bool */;
4165 val
* var1
/* : DFSRopeLeafIterator */;
4166 short int var2
/* : Bool */;
4167 short int var3
/* : Bool */;
4168 short int var4
/* : Bool */;
4169 short int var5
/* : Bool */;
4170 val
* var6
/* : DFSRopeLeafIterator */;
4171 short int var7
/* : Bool */;
4172 short int var8
/* : Bool */;
4173 short int var_
/* var : Bool */;
4174 val
* var9
/* : nullable String */;
4175 val
* var10
/* : null */;
4176 short int var11
/* : Bool */;
4177 short int var_12
/* var : Bool */;
4178 long var13
/* : Int */;
4179 val
* var14
/* : nullable String */;
4180 long var15
/* : Int */;
4181 short int var16
/* : Bool */;
4182 short int var18
/* : Bool */;
4185 short int var19
/* : Bool */;
4186 short int var20
/* : Bool */;
4187 short int var21
/* : Bool */;
4188 var1
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__RopeCharIterator__sub_str_iter
]))(self
) /* sub_str_iter on <self:RopeCharIterator>*/;
4189 var2
= ((short int (*)(val
*))(var1
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var1
) /* is_ok on <var1:DFSRopeLeafIterator>*/;
4196 var6
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__RopeCharIterator__sub_str_iter
]))(self
) /* sub_str_iter on <self:RopeCharIterator>*/;
4197 var7
= ((short int (*)(val
*))(var6
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var6
) /* is_ok on <var6:DFSRopeLeafIterator>*/;
4201 var9
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__RopeCharIterator__curr_substring
]))(self
) /* curr_substring on <self:RopeCharIterator>*/;
4204 var11
= 0; /* is null */
4206 var11
= 1; /* arg is null and recv is not */
4214 var13
= ((long (*)(val
*))(self
->class->vft
[COLOR_ropes__RopeCharIterator__sub_pos
]))(self
) /* sub_pos on <self:RopeCharIterator>*/;
4215 var14
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__RopeCharIterator__curr_substring
]))(self
) /* curr_substring on <self:RopeCharIterator>*/;
4216 if (var14
== NULL
) {
4217 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/ropes.nit", 833);
4220 var15
= ((long (*)(val
*))(var14
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var14
) /* length on <var14:nullable String>*/;
4222 { /* Inline kernel#Int#< (var13,var15) */
4223 /* Covariant cast for argument 0 (i) <var15:Int> isa OTHER */
4224 /* <var15:Int> isa OTHER */
4225 var18
= 1; /* easy <var15:Int> isa OTHER*/
4227 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 257);
4230 var19
= var13
< var15
;
4233 RET_LABEL17
:(void)0;
4251 /* method ropes#RopeCharIterator#is_ok for (self: Object): Bool */
4252 short int VIRTUAL_ropes__RopeCharIterator__is_ok(val
* self
) {
4253 short int var
/* : Bool */;
4254 short int var1
/* : Bool */;
4255 var1
= ropes__RopeCharIterator__is_ok(self
);
4260 /* method ropes#RopeCharIterator#next for (self: RopeCharIterator) */
4261 void ropes__RopeCharIterator__next(val
* self
) {
4262 short int var
/* : Bool */;
4263 long var1
/* : Int */;
4264 val
* var2
/* : nullable String */;
4265 long var3
/* : Int */;
4266 long var4
/* : Int */;
4267 long var5
/* : Int */;
4268 long var7
/* : Int */;
4269 short int var8
/* : Bool */;
4270 short int var10
/* : Bool */;
4273 short int var11
/* : Bool */;
4274 val
* var_
/* var : RopeCharIterator */;
4275 long var12
/* : Int */;
4276 long var13
/* : Int */;
4277 long var14
/* : Int */;
4278 long var16
/* : Int */;
4279 val
* var17
/* : DFSRopeLeafIterator */;
4280 val
* var18
/* : DFSRopeLeafIterator */;
4281 short int var19
/* : Bool */;
4282 val
* var20
/* : DFSRopeLeafIterator */;
4283 val
* var21
/* : nullable Object */;
4284 val
* var22
/* : String */;
4285 long var23
/* : Int */;
4286 val
* var24
/* : nullable String */;
4287 long var25
/* : Int */;
4288 val
* var_26
/* var : RopeCharIterator */;
4289 long var27
/* : Int */;
4290 long var28
/* : Int */;
4291 long var29
/* : Int */;
4292 long var31
/* : Int */;
4293 var
= ((short int (*)(val
*))(self
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(self
) /* is_ok on <self:RopeCharIterator>*/;
4295 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Assert failed", "lib/standard/ropes.nit", 839);
4298 var1
= ((long (*)(val
*))(self
->class->vft
[COLOR_ropes__RopeCharIterator__sub_pos
]))(self
) /* sub_pos on <self:RopeCharIterator>*/;
4299 var2
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__RopeCharIterator__curr_substring
]))(self
) /* curr_substring on <self:RopeCharIterator>*/;
4301 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/ropes.nit", 840);
4304 var3
= ((long (*)(val
*))(var2
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var2
) /* length on <var2:nullable String>*/;
4307 { /* Inline kernel#Int#- (var3,var4) */
4313 { /* Inline kernel#Int#< (var1,var5) */
4314 /* Covariant cast for argument 0 (i) <var5:Int> isa OTHER */
4315 /* <var5:Int> isa OTHER */
4316 var10
= 1; /* easy <var5:Int> isa OTHER*/
4318 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 257);
4321 var11
= var1
< var5
;
4328 var12
= ((long (*)(val
*))(var_
->class->vft
[COLOR_ropes__RopeCharIterator__sub_pos
]))(var_
) /* sub_pos on <var_:RopeCharIterator>*/;
4330 { /* Inline kernel#Int#+ (var12,var13) */
4331 var16
= var12
+ var13
;
4334 RET_LABEL15
:(void)0;
4336 ((void (*)(val
*, long))(var_
->class->vft
[COLOR_ropes__RopeCharIterator__sub_pos_61d
]))(var_
, var14
) /* sub_pos= on <var_:RopeCharIterator>*/;
4338 var17
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__RopeCharIterator__sub_str_iter
]))(self
) /* sub_str_iter on <self:RopeCharIterator>*/;
4339 ((void (*)(val
*))(var17
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var17
) /* next on <var17:DFSRopeLeafIterator>*/;
4340 var18
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__RopeCharIterator__sub_str_iter
]))(self
) /* sub_str_iter on <self:RopeCharIterator>*/;
4341 var19
= ((short int (*)(val
*))(var18
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var18
) /* is_ok on <var18:DFSRopeLeafIterator>*/;
4343 var20
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__RopeCharIterator__sub_str_iter
]))(self
) /* sub_str_iter on <self:RopeCharIterator>*/;
4344 var21
= ((val
* (*)(val
*))(var20
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var20
) /* item on <var20:DFSRopeLeafIterator>*/;
4345 var22
= ((val
* (*)(val
*))(var21
->class->vft
[COLOR_ropes__LeafNode__value
]))(var21
) /* value on <var21:nullable Object(LeafNode)>*/;
4346 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__RopeCharIterator__curr_substring_61d
]))(self
, var22
) /* curr_substring= on <self:RopeCharIterator>*/;
4348 ((void (*)(val
*, long))(self
->class->vft
[COLOR_ropes__RopeCharIterator__sub_pos_61d
]))(self
, var23
) /* sub_pos= on <self:RopeCharIterator>*/;
4350 var24
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__RopeCharIterator__curr_substring
]))(self
) /* curr_substring on <self:RopeCharIterator>*/;
4351 if (var24
== NULL
) {
4352 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/ropes.nit", 848);
4355 var25
= ((long (*)(val
*))(var24
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var24
) /* length on <var24:nullable String>*/;
4357 ((void (*)(val
*, long))(self
->class->vft
[COLOR_ropes__RopeCharIterator__sub_pos_61d
]))(self
, var25
) /* sub_pos= on <self:RopeCharIterator>*/;
4361 var27
= ((long (*)(val
*))(var_26
->class->vft
[COLOR_ropes__RopeCharIterator__abs_pos
]))(var_26
) /* abs_pos on <var_26:RopeCharIterator>*/;
4363 { /* Inline kernel#Int#+ (var27,var28) */
4364 var31
= var27
+ var28
;
4367 RET_LABEL30
:(void)0;
4369 ((void (*)(val
*, long))(var_26
->class->vft
[COLOR_ropes__RopeCharIterator__abs_pos_61d
]))(var_26
, var29
) /* abs_pos= on <var_26:RopeCharIterator>*/;
4372 /* method ropes#RopeCharIterator#next for (self: Object) */
4373 void VIRTUAL_ropes__RopeCharIterator__next(val
* self
) {
4374 ropes__RopeCharIterator__next(self
);
4377 /* method ropes#RopeCharIterator#index for (self: RopeCharIterator): Int */
4378 long ropes__RopeCharIterator__index(val
* self
) {
4379 long var
/* : Int */;
4380 long var1
/* : Int */;
4381 var1
= ((long (*)(val
*))(self
->class->vft
[COLOR_ropes__RopeCharIterator__abs_pos
]))(self
) /* abs_pos on <self:RopeCharIterator>*/;
4387 /* method ropes#RopeCharIterator#index for (self: Object): Int */
4388 long VIRTUAL_ropes__RopeCharIterator__index(val
* self
) {
4389 long var
/* : Int */;
4390 long var1
/* : Int */;
4391 var1
= ropes__RopeCharIterator__index(self
);
4396 /* method ropes#DFSRopeLeafIterator#visit_stack for (self: DFSRopeLeafIterator): List[TupleVisitNode] */
4397 val
* ropes__DFSRopeLeafIterator__visit_stack(val
* self
) {
4398 val
* var
/* : List[TupleVisitNode] */;
4399 val
* var1
/* : List[TupleVisitNode] */;
4400 var1
= self
->attrs
[COLOR_ropes__DFSRopeLeafIterator___64dvisit_stack
].val
; /* @visit_stack on <self:DFSRopeLeafIterator> */
4402 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @visit_stack", "lib/standard/ropes.nit", 865);
4409 /* method ropes#DFSRopeLeafIterator#visit_stack for (self: Object): List[TupleVisitNode] */
4410 val
* VIRTUAL_ropes__DFSRopeLeafIterator__visit_stack(val
* self
) {
4411 val
* var
/* : List[TupleVisitNode] */;
4412 val
* var1
/* : List[TupleVisitNode] */;
4413 var1
= ropes__DFSRopeLeafIterator__visit_stack(self
);
4418 /* method ropes#DFSRopeLeafIterator#visit_stack= for (self: DFSRopeLeafIterator, List[TupleVisitNode]) */
4419 void ropes__DFSRopeLeafIterator__visit_stack_61d(val
* self
, val
* p0
) {
4420 self
->attrs
[COLOR_ropes__DFSRopeLeafIterator___64dvisit_stack
].val
= p0
; /* @visit_stack on <self:DFSRopeLeafIterator> */
4423 /* method ropes#DFSRopeLeafIterator#visit_stack= for (self: Object, List[TupleVisitNode]) */
4424 void VIRTUAL_ropes__DFSRopeLeafIterator__visit_stack_61d(val
* self
, val
* p0
) {
4425 ropes__DFSRopeLeafIterator__visit_stack_61d(self
, p0
);
4428 /* method ropes#DFSRopeLeafIterator#curr_leaf for (self: DFSRopeLeafIterator): nullable LeafNode */
4429 val
* ropes__DFSRopeLeafIterator__curr_leaf(val
* self
) {
4430 val
* var
/* : nullable LeafNode */;
4431 val
* var1
/* : nullable LeafNode */;
4432 var1
= self
->attrs
[COLOR_ropes__DFSRopeLeafIterator___64dcurr_leaf
].val
; /* @curr_leaf on <self:DFSRopeLeafIterator> */
4437 /* method ropes#DFSRopeLeafIterator#curr_leaf for (self: Object): nullable LeafNode */
4438 val
* VIRTUAL_ropes__DFSRopeLeafIterator__curr_leaf(val
* self
) {
4439 val
* var
/* : nullable LeafNode */;
4440 val
* var1
/* : nullable LeafNode */;
4441 var1
= ropes__DFSRopeLeafIterator__curr_leaf(self
);
4446 /* method ropes#DFSRopeLeafIterator#curr_leaf= for (self: DFSRopeLeafIterator, nullable LeafNode) */
4447 void ropes__DFSRopeLeafIterator__curr_leaf_61d(val
* self
, val
* p0
) {
4448 self
->attrs
[COLOR_ropes__DFSRopeLeafIterator___64dcurr_leaf
].val
= p0
; /* @curr_leaf on <self:DFSRopeLeafIterator> */
4451 /* method ropes#DFSRopeLeafIterator#curr_leaf= for (self: Object, nullable LeafNode) */
4452 void VIRTUAL_ropes__DFSRopeLeafIterator__curr_leaf_61d(val
* self
, val
* p0
) {
4453 ropes__DFSRopeLeafIterator__curr_leaf_61d(self
, p0
);
4456 /* method ropes#DFSRopeLeafIterator#init for (self: DFSRopeLeafIterator, Rope) */
4457 void ropes__DFSRopeLeafIterator__init(val
* self
, val
* p0
) {
4458 val
* var_tgt
/* var tgt: Rope */;
4459 val
* var
/* : Rope */;
4460 val
* var1
/* : RopeNode */;
4461 val
* var_first_node
/* var first_node: RopeNode */;
4462 short int var2
/* : Bool */;
4465 val
* var3
/* : List[TupleVisitNode] */;
4466 val
* var4
/* : TupleVisitNode */;
4467 short int var5
/* : Bool */;
4471 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__RopeIterator__init
]))(self
, p0
) /* init on <self:DFSRopeLeafIterator>*/;
4472 var
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__RopeIterator__target
]))(self
) /* target on <self:DFSRopeLeafIterator>*/;
4473 var1
= ((val
* (*)(val
*))(var
->class->vft
[COLOR_ropes__Rope__parent_node
]))(var
) /* parent_node on <var:Rope>*/;
4474 var_first_node
= var1
;
4475 /* <var_first_node:RopeNode> isa ConcatNode */
4476 cltype
= type_ropes__ConcatNode
.color
;
4477 idtype
= type_ropes__ConcatNode
.id
;
4478 if(cltype
>= var_first_node
->type
->table_size
) {
4481 var2
= var_first_node
->type
->type_table
[cltype
] == idtype
;
4484 var3
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__DFSRopeLeafIterator__visit_stack
]))(self
) /* visit_stack on <self:DFSRopeLeafIterator>*/;
4485 var4
= NEW_ropes__TupleVisitNode(&type_ropes__TupleVisitNode
);
4486 ((void (*)(val
*, val
*))(var4
->class->vft
[COLOR_ropes__TupleVisitNode__init
]))(var4
, var_first_node
) /* init on <var4:TupleVisitNode>*/;
4487 CHECK_NEW_ropes__TupleVisitNode(var4
);
4488 ((void (*)(val
*, val
*))(var3
->class->vft
[COLOR_abstract_collection__Sequence__push
]))(var3
, var4
) /* push on <var3:List[TupleVisitNode]>*/;
4490 /* <var_first_node:RopeNode> isa LeafNode */
4491 cltype6
= type_ropes__LeafNode
.color
;
4492 idtype7
= type_ropes__LeafNode
.id
;
4493 if(cltype6
>= var_first_node
->type
->table_size
) {
4496 var5
= var_first_node
->type
->type_table
[cltype6
] == idtype7
;
4499 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__DFSRopeLeafIterator__curr_leaf_61d
]))(self
, var_first_node
) /* curr_leaf= on <self:DFSRopeLeafIterator>*/;
4504 ((void (*)(val
*))(self
->class->vft
[COLOR_ropes__DFSRopeLeafIterator__next_body
]))(self
) /* next_body on <self:DFSRopeLeafIterator>*/;
4507 /* method ropes#DFSRopeLeafIterator#init for (self: Object, Rope) */
4508 void VIRTUAL_ropes__DFSRopeLeafIterator__init(val
* self
, val
* p0
) {
4509 ropes__DFSRopeLeafIterator__init(self
, p0
);
4512 /* method ropes#DFSRopeLeafIterator#with_index for (self: DFSRopeLeafIterator, Rope, Int) */
4513 void ropes__DFSRopeLeafIterator__with_index(val
* self
, val
* p0
, long p1
) {
4514 val
* var_tgt
/* var tgt: Rope */;
4515 long var_index
/* var index: Int */;
4516 val
* var
/* : Rope */;
4517 val
* var1
/* : TupleLeafNodePos */;
4518 val
* var_returned_tuple
/* var returned_tuple: TupleLeafNodePos */;
4519 val
* var2
/* : LeafNode */;
4520 val
* var3
/* : List[TupleVisitNode] */;
4521 long var4
/* : Int */;
4522 long var5
/* : Int */;
4523 long var7
/* : Int */;
4526 ((void (*)(val
*, val
*, long))(self
->class->vft
[COLOR_ropes__RopeIterator__with_index
]))(self
, p0
, p1
) /* with_index on <self:DFSRopeLeafIterator>*/;
4527 var
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__RopeIterator__target
]))(self
) /* target on <self:DFSRopeLeafIterator>*/;
4528 var1
= ((val
* (*)(val
*, long))(var
->class->vft
[COLOR_ropes__Rope__get_node_for_pos
]))(var
, var_index
) /* get_node_for_pos on <var:Rope>*/;
4529 var_returned_tuple
= var1
;
4530 var2
= ((val
* (*)(val
*))(var_returned_tuple
->class->vft
[COLOR_ropes__TupleLeafNodePos__curr_node
]))(var_returned_tuple
) /* curr_node on <var_returned_tuple:TupleLeafNodePos>*/;
4531 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__DFSRopeLeafIterator__curr_leaf_61d
]))(self
, var2
) /* curr_leaf= on <self:DFSRopeLeafIterator>*/;
4532 var3
= ((val
* (*)(val
*))(var_returned_tuple
->class->vft
[COLOR_ropes__TupleLeafNodePos__visit_stack
]))(var_returned_tuple
) /* visit_stack on <var_returned_tuple:TupleLeafNodePos>*/;
4533 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__DFSRopeLeafIterator__visit_stack_61d
]))(self
, var3
) /* visit_stack= on <self:DFSRopeLeafIterator>*/;
4534 var4
= ((long (*)(val
*))(var_returned_tuple
->class->vft
[COLOR_ropes__TupleLeafNodePos__corrected_pos
]))(var_returned_tuple
) /* corrected_pos on <var_returned_tuple:TupleLeafNodePos>*/;
4535 { /* Inline kernel#Int#- (var_index,var4) */
4536 var7
= var_index
- var4
;
4541 ((void (*)(val
*, long))(self
->class->vft
[COLOR_ropes__RopeIterator__pos_61d
]))(self
, var5
) /* pos= on <self:DFSRopeLeafIterator>*/;
4544 /* method ropes#DFSRopeLeafIterator#with_index for (self: Object, Rope, Int) */
4545 void VIRTUAL_ropes__DFSRopeLeafIterator__with_index(val
* self
, val
* p0
, long p1
) {
4546 ropes__DFSRopeLeafIterator__with_index(self
, p0
, p1
);
4549 /* method ropes#DFSRopeLeafIterator#is_ok for (self: DFSRopeLeafIterator): Bool */
4550 short int ropes__DFSRopeLeafIterator__is_ok(val
* self
) {
4551 short int var
/* : Bool */;
4552 val
* var1
/* : nullable LeafNode */;
4553 val
* var2
/* : null */;
4554 short int var3
/* : Bool */;
4555 var1
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__DFSRopeLeafIterator__curr_leaf
]))(self
) /* curr_leaf on <self:DFSRopeLeafIterator>*/;
4558 var3
= 0; /* is null */
4560 var3
= 1; /* arg is null and recv is not */
4567 /* method ropes#DFSRopeLeafIterator#is_ok for (self: Object): Bool */
4568 short int VIRTUAL_ropes__DFSRopeLeafIterator__is_ok(val
* self
) {
4569 short int var
/* : Bool */;
4570 short int var1
/* : Bool */;
4571 var1
= ropes__DFSRopeLeafIterator__is_ok(self
);
4576 /* method ropes#DFSRopeLeafIterator#next for (self: DFSRopeLeafIterator) */
4577 void ropes__DFSRopeLeafIterator__next(val
* self
) {
4578 short int var
/* : Bool */;
4579 val
* var_
/* var : DFSRopeLeafIterator */;
4580 long var1
/* : Int */;
4581 val
* var2
/* : nullable LeafNode */;
4582 val
* var3
/* : String */;
4583 long var4
/* : Int */;
4584 long var5
/* : Int */;
4585 long var7
/* : Int */;
4586 var
= ((short int (*)(val
*))(self
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(self
) /* is_ok on <self:DFSRopeLeafIterator>*/;
4588 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Assert failed", "lib/standard/ropes.nit", 902);
4592 var1
= ((long (*)(val
*))(var_
->class->vft
[COLOR_ropes__RopeIterator__pos
]))(var_
) /* pos on <var_:DFSRopeLeafIterator>*/;
4593 var2
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__DFSRopeLeafIterator__curr_leaf
]))(self
) /* curr_leaf on <self:DFSRopeLeafIterator>*/;
4595 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/ropes.nit", 903);
4598 var3
= ((val
* (*)(val
*))(var2
->class->vft
[COLOR_ropes__LeafNode__value
]))(var2
) /* value on <var2:nullable LeafNode>*/;
4600 var4
= ((long (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var3
) /* length on <var3:String>*/;
4601 { /* Inline kernel#Int#+ (var1,var4) */
4607 ((void (*)(val
*, long))(var_
->class->vft
[COLOR_ropes__RopeIterator__pos_61d
]))(var_
, var5
) /* pos= on <var_:DFSRopeLeafIterator>*/;
4608 ((void (*)(val
*))(self
->class->vft
[COLOR_ropes__DFSRopeLeafIterator__next_body
]))(self
) /* next_body on <self:DFSRopeLeafIterator>*/;
4611 /* method ropes#DFSRopeLeafIterator#next for (self: Object) */
4612 void VIRTUAL_ropes__DFSRopeLeafIterator__next(val
* self
) {
4613 ropes__DFSRopeLeafIterator__next(self
);
4616 /* method ropes#DFSRopeLeafIterator#next_body for (self: DFSRopeLeafIterator) */
4617 void ropes__DFSRopeLeafIterator__next_body(val
* self
) {
4618 val
* var
/* : List[TupleVisitNode] */;
4619 short int var1
/* : Bool */;
4620 short int var2
/* : Bool */;
4621 val
* var3
/* : List[TupleVisitNode] */;
4622 val
* var4
/* : nullable Object */;
4623 val
* var_curr_concat_tuple
/* var curr_concat_tuple: TupleVisitNode */;
4624 short int var5
/* : Bool */;
4625 short int var6
/* : Bool */;
4626 short int var7
/* : Bool */;
4627 val
* var8
/* : ConcatNode */;
4628 val
* var9
/* : nullable RopeNode */;
4629 val
* var_next_node
/* var next_node: nullable RopeNode */;
4630 val
* var10
/* : null */;
4631 short int var11
/* : Bool */;
4632 short int var12
/* : Bool */;
4635 val
* var13
/* : List[TupleVisitNode] */;
4636 val
* var14
/* : TupleVisitNode */;
4637 short int var15
/* : Bool */;
4640 short int var18
/* : Bool */;
4641 short int var19
/* : Bool */;
4642 short int var20
/* : Bool */;
4643 val
* var21
/* : ConcatNode */;
4644 val
* var22
/* : nullable RopeNode */;
4645 val
* var23
/* : null */;
4646 short int var24
/* : Bool */;
4647 short int var25
/* : Bool */;
4650 val
* var28
/* : List[TupleVisitNode] */;
4651 val
* var29
/* : TupleVisitNode */;
4652 short int var30
/* : Bool */;
4655 val
* var33
/* : List[TupleVisitNode] */;
4656 val
* var34
/* : nullable Object */;
4657 val
* var35
/* : null */;
4659 var
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__DFSRopeLeafIterator__visit_stack
]))(self
) /* visit_stack on <self:DFSRopeLeafIterator>*/;
4660 var1
= ((short int (*)(val
*))(var
->class->vft
[COLOR_abstract_collection__Collection__is_empty
]))(var
) /* is_empty on <var:List[TupleVisitNode]>*/;
4663 var3
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__DFSRopeLeafIterator__visit_stack
]))(self
) /* visit_stack on <self:DFSRopeLeafIterator>*/;
4664 var4
= ((val
* (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__SequenceRead__last
]))(var3
) /* last on <var3:List[TupleVisitNode]>*/;
4665 var_curr_concat_tuple
= var4
;
4666 var5
= ((short int (*)(val
*))(var_curr_concat_tuple
->class->vft
[COLOR_ropes__TupleVisitNode__left_visited
]))(var_curr_concat_tuple
) /* left_visited on <var_curr_concat_tuple:TupleVisitNode>*/;
4670 ((void (*)(val
*, short int))(var_curr_concat_tuple
->class->vft
[COLOR_ropes__TupleVisitNode__left_visited_61d
]))(var_curr_concat_tuple
, var7
) /* left_visited= on <var_curr_concat_tuple:TupleVisitNode>*/;
4671 var8
= ((val
* (*)(val
*))(var_curr_concat_tuple
->class->vft
[COLOR_ropes__TupleVisitNode__node
]))(var_curr_concat_tuple
) /* node on <var_curr_concat_tuple:TupleVisitNode>*/;
4672 var9
= ((val
* (*)(val
*))(var8
->class->vft
[COLOR_ropes__ConcatNode__left_child
]))(var8
) /* left_child on <var8:ConcatNode>*/;
4673 var_next_node
= var9
;
4675 if (var_next_node
== NULL
) {
4676 var11
= 1; /* is null */
4678 var11
= 0; /* arg is null but recv is not */
4681 goto CONTINUE_label
;
4684 /* <var_next_node:nullable RopeNode(RopeNode)> isa ConcatNode */
4685 cltype
= type_ropes__ConcatNode
.color
;
4686 idtype
= type_ropes__ConcatNode
.id
;
4687 if(cltype
>= var_next_node
->type
->table_size
) {
4690 var12
= var_next_node
->type
->type_table
[cltype
] == idtype
;
4693 var13
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__DFSRopeLeafIterator__visit_stack
]))(self
) /* visit_stack on <self:DFSRopeLeafIterator>*/;
4694 var14
= NEW_ropes__TupleVisitNode(&type_ropes__TupleVisitNode
);
4695 ((void (*)(val
*, val
*))(var14
->class->vft
[COLOR_ropes__TupleVisitNode__init
]))(var14
, var_next_node
) /* init on <var14:TupleVisitNode>*/;
4696 CHECK_NEW_ropes__TupleVisitNode(var14
);
4697 ((void (*)(val
*, val
*))(var13
->class->vft
[COLOR_abstract_collection__Sequence__push
]))(var13
, var14
) /* push on <var13:List[TupleVisitNode]>*/;
4699 /* <var_next_node:nullable RopeNode(RopeNode)> isa LeafNode */
4700 cltype16
= type_ropes__LeafNode
.color
;
4701 idtype17
= type_ropes__LeafNode
.id
;
4702 if(cltype16
>= var_next_node
->type
->table_size
) {
4705 var15
= var_next_node
->type
->type_table
[cltype16
] == idtype17
;
4708 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__DFSRopeLeafIterator__curr_leaf_61d
]))(self
, var_next_node
) /* curr_leaf= on <self:DFSRopeLeafIterator>*/;
4714 var18
= ((short int (*)(val
*))(var_curr_concat_tuple
->class->vft
[COLOR_ropes__TupleVisitNode__right_visited
]))(var_curr_concat_tuple
) /* right_visited on <var_curr_concat_tuple:TupleVisitNode>*/;
4718 ((void (*)(val
*, short int))(var_curr_concat_tuple
->class->vft
[COLOR_ropes__TupleVisitNode__right_visited_61d
]))(var_curr_concat_tuple
, var20
) /* right_visited= on <var_curr_concat_tuple:TupleVisitNode>*/;
4719 var21
= ((val
* (*)(val
*))(var_curr_concat_tuple
->class->vft
[COLOR_ropes__TupleVisitNode__node
]))(var_curr_concat_tuple
) /* node on <var_curr_concat_tuple:TupleVisitNode>*/;
4720 var22
= ((val
* (*)(val
*))(var21
->class->vft
[COLOR_ropes__ConcatNode__right_child
]))(var21
) /* right_child on <var21:ConcatNode>*/;
4721 var_next_node
= var22
;
4723 if (var_next_node
== NULL
) {
4724 var24
= 1; /* is null */
4726 var24
= 0; /* arg is null but recv is not */
4729 goto CONTINUE_label
;
4732 /* <var_next_node:nullable RopeNode(RopeNode)> isa ConcatNode */
4733 cltype26
= type_ropes__ConcatNode
.color
;
4734 idtype27
= type_ropes__ConcatNode
.id
;
4735 if(cltype26
>= var_next_node
->type
->table_size
) {
4738 var25
= var_next_node
->type
->type_table
[cltype26
] == idtype27
;
4741 var28
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__DFSRopeLeafIterator__visit_stack
]))(self
) /* visit_stack on <self:DFSRopeLeafIterator>*/;
4742 var29
= NEW_ropes__TupleVisitNode(&type_ropes__TupleVisitNode
);
4743 ((void (*)(val
*, val
*))(var29
->class->vft
[COLOR_ropes__TupleVisitNode__init
]))(var29
, var_next_node
) /* init on <var29:TupleVisitNode>*/;
4744 CHECK_NEW_ropes__TupleVisitNode(var29
);
4745 ((void (*)(val
*, val
*))(var28
->class->vft
[COLOR_abstract_collection__Sequence__push
]))(var28
, var29
) /* push on <var28:List[TupleVisitNode]>*/;
4747 /* <var_next_node:nullable RopeNode(RopeNode)> isa LeafNode */
4748 cltype31
= type_ropes__LeafNode
.color
;
4749 idtype32
= type_ropes__LeafNode
.id
;
4750 if(cltype31
>= var_next_node
->type
->table_size
) {
4753 var30
= var_next_node
->type
->type_table
[cltype31
] == idtype32
;
4756 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__DFSRopeLeafIterator__curr_leaf_61d
]))(self
, var_next_node
) /* curr_leaf= on <self:DFSRopeLeafIterator>*/;
4762 var33
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__DFSRopeLeafIterator__visit_stack
]))(self
) /* visit_stack on <self:DFSRopeLeafIterator>*/;
4763 var34
= ((val
* (*)(val
*))(var33
->class->vft
[COLOR_abstract_collection__Sequence__pop
]))(var33
) /* pop on <var33:List[TupleVisitNode]>*/;
4767 CONTINUE_label
: (void)0;
4769 BREAK_label
: (void)0;
4771 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__DFSRopeLeafIterator__curr_leaf_61d
]))(self
, var35
) /* curr_leaf= on <self:DFSRopeLeafIterator>*/;
4774 /* method ropes#DFSRopeLeafIterator#next_body for (self: Object) */
4775 void VIRTUAL_ropes__DFSRopeLeafIterator__next_body(val
* self
) {
4776 ropes__DFSRopeLeafIterator__next_body(self
);
4779 /* method ropes#DFSRopeLeafIterator#item for (self: DFSRopeLeafIterator): LeafNode */
4780 val
* ropes__DFSRopeLeafIterator__item(val
* self
) {
4781 val
* var
/* : LeafNode */;
4782 short int var1
/* : Bool */;
4783 val
* var2
/* : nullable LeafNode */;
4784 var1
= ((short int (*)(val
*))(self
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(self
) /* is_ok on <self:DFSRopeLeafIterator>*/;
4786 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Assert failed", "lib/standard/ropes.nit", 951);
4789 var2
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__DFSRopeLeafIterator__curr_leaf
]))(self
) /* curr_leaf on <self:DFSRopeLeafIterator>*/;
4791 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/ropes.nit", 952);
4799 /* method ropes#DFSRopeLeafIterator#item for (self: Object): nullable Object */
4800 val
* VIRTUAL_ropes__DFSRopeLeafIterator__item(val
* self
) {
4801 val
* var
/* : nullable Object */;
4802 val
* var1
/* : LeafNode */;
4803 var1
= ropes__DFSRopeLeafIterator__item(self
);
4808 /* method ropes#RopeNode#parent for (self: RopeNode): nullable ConcatNode */
4809 val
* ropes__RopeNode__parent(val
* self
) {
4810 val
* var
/* : nullable ConcatNode */;
4811 val
* var1
/* : nullable ConcatNode */;
4812 var1
= self
->attrs
[COLOR_ropes__RopeNode___64dparent
].val
; /* @parent on <self:RopeNode> */
4817 /* method ropes#RopeNode#parent for (self: Object): nullable ConcatNode */
4818 val
* VIRTUAL_ropes__RopeNode__parent(val
* self
) {
4819 val
* var
/* : nullable ConcatNode */;
4820 val
* var1
/* : nullable ConcatNode */;
4821 var1
= ropes__RopeNode__parent(self
);
4826 /* method ropes#RopeNode#parent= for (self: RopeNode, nullable ConcatNode) */
4827 void ropes__RopeNode__parent_61d(val
* self
, val
* p0
) {
4828 self
->attrs
[COLOR_ropes__RopeNode___64dparent
].val
= p0
; /* @parent on <self:RopeNode> */
4831 /* method ropes#RopeNode#parent= for (self: Object, nullable ConcatNode) */
4832 void VIRTUAL_ropes__RopeNode__parent_61d(val
* self
, val
* p0
) {
4833 ropes__RopeNode__parent_61d(self
, p0
);
4836 /* method ropes#RopeNode#height for (self: RopeNode): Int */
4837 long ropes__RopeNode__height(val
* self
) {
4838 long var
/* : Int */;
4839 long var1
/* : Int */;
4840 var1
= self
->attrs
[COLOR_ropes__RopeNode___64dheight
].l
; /* @height on <self:RopeNode> */
4845 /* method ropes#RopeNode#height for (self: Object): Int */
4846 long VIRTUAL_ropes__RopeNode__height(val
* self
) {
4847 long var
/* : Int */;
4848 long var1
/* : Int */;
4849 var1
= ropes__RopeNode__height(self
);
4854 /* method ropes#RopeNode#height= for (self: RopeNode, Int) */
4855 void ropes__RopeNode__height_61d(val
* self
, long p0
) {
4856 self
->attrs
[COLOR_ropes__RopeNode___64dheight
].l
= p0
; /* @height on <self:RopeNode> */
4859 /* method ropes#RopeNode#height= for (self: Object, Int) */
4860 void VIRTUAL_ropes__RopeNode__height_61d(val
* self
, long p0
) {
4861 ropes__RopeNode__height_61d(self
, p0
);
4864 /* method ropes#RopeNode#balance_factor for (self: RopeNode): Int */
4865 long ropes__RopeNode__balance_factor(val
* self
) {
4866 long var
/* : Int */;
4867 long var1
/* : Int */;
4868 var1
= ((long (*)(val
*))(self
->class->vft
[COLOR_ropes__RopeNode__height
]))(self
) /* height on <self:RopeNode>*/;
4874 /* method ropes#RopeNode#balance_factor for (self: Object): Int */
4875 long VIRTUAL_ropes__RopeNode__balance_factor(val
* self
) {
4876 long var
/* : Int */;
4877 long var1
/* : Int */;
4878 var1
= ropes__RopeNode__balance_factor(self
);
4883 /* method ropes#RopeNode#length for (self: RopeNode): Int */
4884 long ropes__RopeNode__length(val
* self
) {
4885 long var
/* : Int */;
4886 long var1
/* : Int */;
4887 var1
= self
->attrs
[COLOR_ropes__RopeNode___length
].l
; /* _length on <self:RopeNode> */
4893 /* method ropes#RopeNode#length for (self: Object): Int */
4894 long VIRTUAL_ropes__RopeNode__length(val
* self
) {
4895 long var
/* : Int */;
4896 long var1
/* : Int */;
4897 var1
= ropes__RopeNode__length(self
);
4902 /* method ropes#RopeNode#length= for (self: RopeNode, Int) */
4903 void ropes__RopeNode__length_61d(val
* self
, long p0
) {
4904 long var_len
/* var len: Int */;
4906 self
->attrs
[COLOR_ropes__RopeNode___length
].l
= var_len
; /* _length on <self:RopeNode> */
4909 /* method ropes#RopeNode#length= for (self: Object, Int) */
4910 void VIRTUAL_ropes__RopeNode__length_61d(val
* self
, long p0
) {
4911 ropes__RopeNode__length_61d(self
, p0
);
4914 /* method ropes#RopeNode#init for (self: RopeNode) */
4915 void ropes__RopeNode__init(val
* self
) {
4918 /* method ropes#RopeNode#init for (self: Object) */
4919 void VIRTUAL_ropes__RopeNode__init(val
* self
) {
4920 ropes__RopeNode__init(self
);
4923 /* method ropes#ConcatNode#left_child for (self: ConcatNode): nullable RopeNode */
4924 val
* ropes__ConcatNode__left_child(val
* self
) {
4925 val
* var
/* : nullable RopeNode */;
4926 val
* var1
/* : nullable RopeNode */;
4927 val
* var2
/* : null */;
4928 short int var3
/* : Bool */;
4929 val
* var4
/* : nullable RopeNode */;
4930 val
* var5
/* : null */;
4931 var1
= self
->attrs
[COLOR_ropes__ConcatNode___left_child
].val
; /* _left_child on <self:ConcatNode> */
4934 var3
= 0; /* is null */
4936 var3
= 1; /* arg is null and recv is not */
4939 var4
= self
->attrs
[COLOR_ropes__ConcatNode___left_child
].val
; /* _left_child on <self:ConcatNode> */
4950 /* method ropes#ConcatNode#left_child for (self: Object): nullable RopeNode */
4951 val
* VIRTUAL_ropes__ConcatNode__left_child(val
* self
) {
4952 val
* var
/* : nullable RopeNode */;
4953 val
* var1
/* : nullable RopeNode */;
4954 var1
= ropes__ConcatNode__left_child(self
);
4959 /* method ropes#ConcatNode#right_child for (self: ConcatNode): nullable RopeNode */
4960 val
* ropes__ConcatNode__right_child(val
* self
) {
4961 val
* var
/* : nullable RopeNode */;
4962 val
* var1
/* : nullable RopeNode */;
4963 val
* var2
/* : null */;
4964 short int var3
/* : Bool */;
4965 val
* var4
/* : nullable RopeNode */;
4966 val
* var5
/* : null */;
4967 var1
= self
->attrs
[COLOR_ropes__ConcatNode___right_child
].val
; /* _right_child on <self:ConcatNode> */
4970 var3
= 0; /* is null */
4972 var3
= 1; /* arg is null and recv is not */
4975 var4
= self
->attrs
[COLOR_ropes__ConcatNode___right_child
].val
; /* _right_child on <self:ConcatNode> */
4986 /* method ropes#ConcatNode#right_child for (self: Object): nullable RopeNode */
4987 val
* VIRTUAL_ropes__ConcatNode__right_child(val
* self
) {
4988 val
* var
/* : nullable RopeNode */;
4989 val
* var1
/* : nullable RopeNode */;
4990 var1
= ropes__ConcatNode__right_child(self
);
4995 /* method ropes#ConcatNode#left_child= for (self: ConcatNode, nullable RopeNode) */
4996 void ropes__ConcatNode__left_child_61d(val
* self
, val
* p0
) {
4997 val
* var_new_node
/* var new_node: nullable RopeNode */;
4999 self
->attrs
[COLOR_ropes__ConcatNode___left_child
].val
= var_new_node
; /* _left_child on <self:ConcatNode> */
5000 if (var_new_node
== NULL
) {
5001 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/ropes.nit", 1010);
5004 ((void (*)(val
*, val
*))(var_new_node
->class->vft
[COLOR_ropes__RopeNode__parent_61d
]))(var_new_node
, self
) /* parent= on <var_new_node:nullable RopeNode>*/;
5006 ((void (*)(val
*))(self
->class->vft
[COLOR_ropes__ConcatNode__update_data
]))(self
) /* update_data on <self:ConcatNode>*/;
5009 /* method ropes#ConcatNode#left_child= for (self: Object, nullable RopeNode) */
5010 void VIRTUAL_ropes__ConcatNode__left_child_61d(val
* self
, val
* p0
) {
5011 ropes__ConcatNode__left_child_61d(self
, p0
);
5014 /* method ropes#ConcatNode#right_child= for (self: ConcatNode, nullable RopeNode) */
5015 void ropes__ConcatNode__right_child_61d(val
* self
, val
* p0
) {
5016 val
* var_new_node
/* var new_node: nullable RopeNode */;
5018 self
->attrs
[COLOR_ropes__ConcatNode___right_child
].val
= var_new_node
; /* _right_child on <self:ConcatNode> */
5019 if (var_new_node
== NULL
) {
5020 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/ropes.nit", 1017);
5023 ((void (*)(val
*, val
*))(var_new_node
->class->vft
[COLOR_ropes__RopeNode__parent_61d
]))(var_new_node
, self
) /* parent= on <var_new_node:nullable RopeNode>*/;
5025 ((void (*)(val
*))(self
->class->vft
[COLOR_ropes__ConcatNode__update_data
]))(self
) /* update_data on <self:ConcatNode>*/;
5028 /* method ropes#ConcatNode#right_child= for (self: Object, nullable RopeNode) */
5029 void VIRTUAL_ropes__ConcatNode__right_child_61d(val
* self
, val
* p0
) {
5030 ropes__ConcatNode__right_child_61d(self
, p0
);
5033 /* method ropes#ConcatNode#update_data for (self: ConcatNode) */
5034 void ropes__ConcatNode__update_data(val
* self
) {
5035 long var
/* : Int */;
5036 long var1
/* : Int */;
5037 val
* var2
/* : nullable RopeNode */;
5038 val
* var3
/* : null */;
5039 short int var4
/* : Bool */;
5040 val
* var_
/* var : ConcatNode */;
5041 long var5
/* : Int */;
5042 val
* var6
/* : nullable RopeNode */;
5043 long var7
/* : Int */;
5044 long var8
/* : Int */;
5045 long var10
/* : Int */;
5046 val
* var11
/* : nullable RopeNode */;
5047 long var12
/* : Int */;
5048 long var13
/* : Int */;
5049 long var14
/* : Int */;
5050 long var16
/* : Int */;
5051 long var17
/* : Int */;
5052 short int var18
/* : Bool */;
5053 short int var20
/* : Bool */;
5056 short int var21
/* : Bool */;
5057 val
* var22
/* : nullable RopeNode */;
5058 long var23
/* : Int */;
5059 long var24
/* : Int */;
5060 long var25
/* : Int */;
5061 long var27
/* : Int */;
5062 val
* var28
/* : nullable RopeNode */;
5063 val
* var29
/* : null */;
5064 short int var30
/* : Bool */;
5065 val
* var_31
/* var : ConcatNode */;
5066 long var32
/* : Int */;
5067 val
* var33
/* : nullable RopeNode */;
5068 long var34
/* : Int */;
5069 long var35
/* : Int */;
5070 long var37
/* : Int */;
5071 val
* var38
/* : nullable RopeNode */;
5072 long var39
/* : Int */;
5073 long var40
/* : Int */;
5074 long var41
/* : Int */;
5075 long var43
/* : Int */;
5076 long var44
/* : Int */;
5077 short int var45
/* : Bool */;
5078 short int var47
/* : Bool */;
5081 short int var50
/* : Bool */;
5082 val
* var51
/* : nullable RopeNode */;
5083 long var52
/* : Int */;
5084 long var53
/* : Int */;
5085 long var54
/* : Int */;
5086 long var56
/* : Int */;
5088 ((void (*)(val
*, long))(self
->class->vft
[COLOR_ropes__RopeNode__length_61d
]))(self
, var
) /* length= on <self:ConcatNode>*/;
5090 ((void (*)(val
*, long))(self
->class->vft
[COLOR_ropes__RopeNode__height_61d
]))(self
, var1
) /* height= on <self:ConcatNode>*/;
5091 var2
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__ConcatNode__left_child
]))(self
) /* left_child on <self:ConcatNode>*/;
5094 var4
= 0; /* is null */
5096 var4
= 1; /* arg is null and recv is not */
5100 var5
= ((long (*)(val
*))(var_
->class->vft
[COLOR_ropes__RopeNode__length
]))(var_
) /* length on <var_:ConcatNode>*/;
5101 var6
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__ConcatNode__left_child
]))(self
) /* left_child on <self:ConcatNode>*/;
5103 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/ropes.nit", 1029);
5106 var7
= ((long (*)(val
*))(var6
->class->vft
[COLOR_ropes__RopeNode__length
]))(var6
) /* length on <var6:nullable RopeNode>*/;
5108 { /* Inline kernel#Int#+ (var5,var7) */
5109 var10
= var5
+ var7
;
5114 ((void (*)(val
*, long))(var_
->class->vft
[COLOR_ropes__RopeNode__length_61d
]))(var_
, var8
) /* length= on <var_:ConcatNode>*/;
5115 var11
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__ConcatNode__left_child
]))(self
) /* left_child on <self:ConcatNode>*/;
5116 if (var11
== NULL
) {
5117 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/ropes.nit", 1030);
5120 var12
= ((long (*)(val
*))(var11
->class->vft
[COLOR_ropes__RopeNode__height
]))(var11
) /* height on <var11:nullable RopeNode>*/;
5123 { /* Inline kernel#Int#+ (var12,var13) */
5124 var16
= var12
+ var13
;
5127 RET_LABEL15
:(void)0;
5129 var17
= ((long (*)(val
*))(self
->class->vft
[COLOR_ropes__RopeNode__height
]))(self
) /* height on <self:ConcatNode>*/;
5130 { /* Inline kernel#Int#> (var14,var17) */
5131 /* Covariant cast for argument 0 (i) <var17:Int> isa OTHER */
5132 /* <var17:Int> isa OTHER */
5133 var20
= 1; /* easy <var17:Int> isa OTHER*/
5135 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259);
5138 var21
= var14
> var17
;
5141 RET_LABEL19
:(void)0;
5144 var22
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__ConcatNode__left_child
]))(self
) /* left_child on <self:ConcatNode>*/;
5145 if (var22
== NULL
) {
5146 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/ropes.nit", 1030);
5149 var23
= ((long (*)(val
*))(var22
->class->vft
[COLOR_ropes__RopeNode__height
]))(var22
) /* height on <var22:nullable RopeNode>*/;
5152 { /* Inline kernel#Int#+ (var23,var24) */
5153 var27
= var23
+ var24
;
5156 RET_LABEL26
:(void)0;
5158 ((void (*)(val
*, long))(self
->class->vft
[COLOR_ropes__RopeNode__height_61d
]))(self
, var25
) /* height= on <self:ConcatNode>*/;
5163 var28
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__ConcatNode__right_child
]))(self
) /* right_child on <self:ConcatNode>*/;
5165 if (var28
== NULL
) {
5166 var30
= 0; /* is null */
5168 var30
= 1; /* arg is null and recv is not */
5172 var32
= ((long (*)(val
*))(var_31
->class->vft
[COLOR_ropes__RopeNode__length
]))(var_31
) /* length on <var_31:ConcatNode>*/;
5173 var33
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__ConcatNode__right_child
]))(self
) /* right_child on <self:ConcatNode>*/;
5174 if (var33
== NULL
) {
5175 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/ropes.nit", 1033);
5178 var34
= ((long (*)(val
*))(var33
->class->vft
[COLOR_ropes__RopeNode__length
]))(var33
) /* length on <var33:nullable RopeNode>*/;
5180 { /* Inline kernel#Int#+ (var32,var34) */
5181 var37
= var32
+ var34
;
5184 RET_LABEL36
:(void)0;
5186 ((void (*)(val
*, long))(var_31
->class->vft
[COLOR_ropes__RopeNode__length_61d
]))(var_31
, var35
) /* length= on <var_31:ConcatNode>*/;
5187 var38
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__ConcatNode__right_child
]))(self
) /* right_child on <self:ConcatNode>*/;
5188 if (var38
== NULL
) {
5189 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/ropes.nit", 1034);
5192 var39
= ((long (*)(val
*))(var38
->class->vft
[COLOR_ropes__RopeNode__height
]))(var38
) /* height on <var38:nullable RopeNode>*/;
5195 { /* Inline kernel#Int#+ (var39,var40) */
5196 var43
= var39
+ var40
;
5199 RET_LABEL42
:(void)0;
5201 var44
= ((long (*)(val
*))(self
->class->vft
[COLOR_ropes__RopeNode__height
]))(self
) /* height on <self:ConcatNode>*/;
5202 { /* Inline kernel#Int#> (var41,var44) */
5203 /* Covariant cast for argument 0 (i) <var44:Int> isa OTHER */
5204 /* <var44:Int> isa OTHER */
5205 var47
= 1; /* easy <var44:Int> isa OTHER*/
5207 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259);
5210 var50
= var41
> var44
;
5213 RET_LABEL46
:(void)0;
5216 var51
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__ConcatNode__right_child
]))(self
) /* right_child on <self:ConcatNode>*/;
5217 if (var51
== NULL
) {
5218 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/ropes.nit", 1034);
5221 var52
= ((long (*)(val
*))(var51
->class->vft
[COLOR_ropes__RopeNode__height
]))(var51
) /* height on <var51:nullable RopeNode>*/;
5224 { /* Inline kernel#Int#+ (var52,var53) */
5225 var56
= var52
+ var53
;
5228 RET_LABEL55
:(void)0;
5230 ((void (*)(val
*, long))(self
->class->vft
[COLOR_ropes__RopeNode__height_61d
]))(self
, var54
) /* height= on <self:ConcatNode>*/;
5237 /* method ropes#ConcatNode#update_data for (self: Object) */
5238 void VIRTUAL_ropes__ConcatNode__update_data(val
* self
) {
5239 ropes__ConcatNode__update_data(self
);
5242 /* method ropes#ConcatNode#balance_factor for (self: ConcatNode): Int */
5243 long ropes__ConcatNode__balance_factor(val
* self
) {
5244 long var
/* : Int */;
5245 long var1
/* : Int */;
5246 long var_left_height
/* var left_height: Int */;
5247 long var2
/* : Int */;
5248 long var_right_height
/* var right_height: Int */;
5249 val
* var3
/* : nullable RopeNode */;
5250 val
* var4
/* : null */;
5251 short int var5
/* : Bool */;
5252 val
* var6
/* : nullable RopeNode */;
5253 long var7
/* : Int */;
5254 val
* var8
/* : nullable RopeNode */;
5255 val
* var9
/* : null */;
5256 short int var10
/* : Bool */;
5257 val
* var11
/* : nullable RopeNode */;
5258 long var12
/* : Int */;
5259 long var13
/* : Int */;
5260 long var15
/* : Int */;
5262 var_left_height
= var1
;
5264 var_right_height
= var2
;
5265 var3
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__ConcatNode__left_child
]))(self
) /* left_child on <self:ConcatNode>*/;
5268 var5
= 0; /* is null */
5270 var5
= 1; /* arg is null and recv is not */
5273 var6
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__ConcatNode__left_child
]))(self
) /* left_child on <self:ConcatNode>*/;
5275 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/ropes.nit", 1045);
5278 var7
= ((long (*)(val
*))(var6
->class->vft
[COLOR_ropes__RopeNode__height
]))(var6
) /* height on <var6:nullable RopeNode>*/;
5280 var_left_height
= var7
;
5283 var8
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__ConcatNode__right_child
]))(self
) /* right_child on <self:ConcatNode>*/;
5286 var10
= 0; /* is null */
5288 var10
= 1; /* arg is null and recv is not */
5291 var11
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_ropes__ConcatNode__right_child
]))(self
) /* right_child on <self:ConcatNode>*/;
5292 if (var11
== NULL
) {
5293 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Reciever is null", "lib/standard/ropes.nit", 1046);
5296 var12
= ((long (*)(val
*))(var11
->class->vft
[COLOR_ropes__RopeNode__height
]))(var11
) /* height on <var11:nullable RopeNode>*/;
5298 var_right_height
= var12
;
5301 { /* Inline kernel#Int#- (var_left_height,var_right_height) */
5302 var15
= var_left_height
- var_right_height
;
5305 RET_LABEL14
:(void)0;
5312 /* method ropes#ConcatNode#balance_factor for (self: Object): Int */
5313 long VIRTUAL_ropes__ConcatNode__balance_factor(val
* self
) {
5314 long var
/* : Int */;
5315 long var1
/* : Int */;
5316 var1
= ropes__ConcatNode__balance_factor(self
);
5321 /* method ropes#ConcatNode#init for (self: ConcatNode) */
5322 void ropes__ConcatNode__init(val
* self
) {
5323 ((void (*)(val
*))(self
->class->vft
[COLOR_ropes__RopeNode__init
]))(self
) /* init on <self:ConcatNode>*/;
5326 /* method ropes#ConcatNode#init for (self: Object) */
5327 void VIRTUAL_ropes__ConcatNode__init(val
* self
) {
5328 ropes__ConcatNode__init(self
);
5331 /* method ropes#LeafNode#init for (self: LeafNode, AbstractString) */
5332 void ropes__LeafNode__init(val
* self
, val
* p0
) {
5333 val
* var_val
/* var val: AbstractString */;
5334 val
* var
/* : String */;
5335 long var1
/* : Int */;
5337 ((void (*)(val
*))(self
->class->vft
[COLOR_ropes__RopeNode__init
]))(self
) /* init on <self:LeafNode>*/;
5338 var
= ((val
* (*)(val
*))(var_val
->class->vft
[COLOR_string__Object__to_s
]))(var_val
) /* to_s on <var_val:AbstractString>*/;
5339 self
->attrs
[COLOR_ropes__LeafNode___value
].val
= var
; /* _value on <self:LeafNode> */
5340 var1
= ((long (*)(val
*))(var_val
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var_val
) /* length on <var_val:AbstractString>*/;
5341 ((void (*)(val
*, long))(self
->class->vft
[COLOR_ropes__RopeNode__length_61d
]))(self
, var1
) /* length= on <self:LeafNode>*/;
5344 /* method ropes#LeafNode#init for (self: Object, AbstractString) */
5345 void VIRTUAL_ropes__LeafNode__init(val
* self
, val
* p0
) {
5346 ropes__LeafNode__init(self
, p0
);
5349 /* method ropes#LeafNode#value for (self: LeafNode): String */
5350 val
* ropes__LeafNode__value(val
* self
) {
5351 val
* var
/* : String */;
5352 val
* var1
/* : String */;
5353 var1
= self
->attrs
[COLOR_ropes__LeafNode___value
].val
; /* _value on <self:LeafNode> */
5355 fprintf(stderr
, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _value", "lib/standard/ropes.nit", 1064);
5363 /* method ropes#LeafNode#value for (self: Object): String */
5364 val
* VIRTUAL_ropes__LeafNode__value(val
* self
) {
5365 val
* var
/* : String */;
5366 val
* var1
/* : String */;
5367 var1
= ropes__LeafNode__value(self
);
5372 /* method ropes#LeafNode#value= for (self: LeafNode, String) */
5373 void ropes__LeafNode__value_61d(val
* self
, val
* p0
) {
5374 val
* var_val
/* var val: String */;
5376 self
->attrs
[COLOR_ropes__LeafNode___value
].val
= var_val
; /* _value on <self:LeafNode> */
5379 /* method ropes#LeafNode#value= for (self: Object, String) */
5380 void VIRTUAL_ropes__LeafNode__value_61d(val
* self
, val
* p0
) {
5381 ropes__LeafNode__value_61d(self
, p0
);
5384 /* method ropes#String#== for (self: String, nullable Object): Bool */
5385 short int ropes__String___61d_61d(val
* self
, val
* p0
) {
5386 short int var
/* : Bool */;
5387 val
* var_other
/* var other: nullable Object */;
5388 short int var1
/* : Bool */;
5391 short int var2
/* : Bool */;
5392 short int var3
/* : Bool */;
5394 /* <var_other:nullable Object> isa Rope */
5395 cltype
= type_ropes__Rope
.color
;
5396 idtype
= type_ropes__Rope
.id
;
5397 if(var_other
== NULL
) {
5400 if(cltype
>= var_other
->type
->table_size
) {
5403 var1
= var_other
->type
->type_table
[cltype
] == idtype
;
5407 var2
= ((short int (*)(val
*, val
*))(var_other
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var_other
, self
) /* == on <var_other:nullable Object(Rope)>*/;
5411 var3
= ((short int (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__String___61d_61d
]))(self
, p0
) /* == on <self:String>*/;
5418 /* method ropes#String#== for (self: Object, nullable Object): Bool */
5419 short int VIRTUAL_ropes__String___61d_61d(val
* self
, val
* p0
) {
5420 short int var
/* : Bool */;
5421 short int var1
/* : Bool */;
5422 var1
= ropes__String___61d_61d(self
, p0
);
5427 /* method ropes#Buffer#== for (self: Buffer, nullable Object): Bool */
5428 short int ropes__Buffer___61d_61d(val
* self
, val
* p0
) {
5429 short int var
/* : Bool */;
5430 val
* var_other
/* var other: nullable Object */;
5431 short int var1
/* : Bool */;
5434 short int var2
/* : Bool */;
5435 short int var3
/* : Bool */;
5437 /* <var_other:nullable Object> isa Rope */
5438 cltype
= type_ropes__Rope
.color
;
5439 idtype
= type_ropes__Rope
.id
;
5440 if(var_other
== NULL
) {
5443 if(cltype
>= var_other
->type
->table_size
) {
5446 var1
= var_other
->type
->type_table
[cltype
] == idtype
;
5450 var2
= ((short int (*)(val
*, val
*))(var_other
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var_other
, self
) /* == on <var_other:nullable Object(Rope)>*/;
5454 var3
= ((short int (*)(val
*, val
*))(self
->class->vft
[COLOR_ropes__Buffer___61d_61d
]))(self
, p0
) /* == on <self:Buffer>*/;
5461 /* method ropes#Buffer#== for (self: Object, nullable Object): Bool */
5462 short int VIRTUAL_ropes__Buffer___61d_61d(val
* self
, val
* p0
) {
5463 short int var
/* : Bool */;
5464 short int var1
/* : Bool */;
5465 var1
= ropes__Buffer___61d_61d(self
, p0
);