use nitg to bootstrap; drop bootstrap of nitc
[nit.git] / c_src / opts.sep.1.c
1 #include "opts.sep.0.h"
2 /* method opts#Option#names for (self: Option): Array[String] */
3 val* opts__Option__names(val* self) {
4 val* var /* : Array[String] */;
5 val* var1 /* : Array[String] */;
6 var1 = self->attrs[COLOR_opts__Option___names].val; /* _names on <self:Option> */
7 if (var1 == NULL) {
8 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _names", "lib/opts.nit", 19);
9 exit(1);
10 }
11 var = var1;
12 RET_LABEL:;
13 return var;
14 }
15 /* method opts#Option#names for (self: Object): Array[String] */
16 val* VIRTUAL_opts__Option__names(val* self) {
17 val* var /* : Array[String] */;
18 val* var1 /* : Array[String] */;
19 var1 = opts__Option__names(self);
20 var = var1;
21 RET_LABEL:;
22 return var;
23 }
24 /* method opts#Option#helptext for (self: Option): String */
25 val* opts__Option__helptext(val* self) {
26 val* var /* : String */;
27 val* var1 /* : String */;
28 var1 = self->attrs[COLOR_opts__Option___helptext].val; /* _helptext on <self:Option> */
29 if (var1 == NULL) {
30 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _helptext", "lib/opts.nit", 25);
31 exit(1);
32 }
33 var = var1;
34 RET_LABEL:;
35 return var;
36 }
37 /* method opts#Option#helptext for (self: Object): String */
38 val* VIRTUAL_opts__Option__helptext(val* self) {
39 val* var /* : String */;
40 val* var1 /* : String */;
41 var1 = opts__Option__helptext(self);
42 var = var1;
43 RET_LABEL:;
44 return var;
45 }
46 /* method opts#Option#errors for (self: Option): Array[String] */
47 val* opts__Option__errors(val* self) {
48 val* var /* : Array[String] */;
49 val* var1 /* : Array[String] */;
50 var1 = self->attrs[COLOR_opts__Option___errors].val; /* _errors on <self:Option> */
51 if (var1 == NULL) {
52 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _errors", "lib/opts.nit", 28);
53 exit(1);
54 }
55 var = var1;
56 RET_LABEL:;
57 return var;
58 }
59 /* method opts#Option#errors for (self: Object): Array[String] */
60 val* VIRTUAL_opts__Option__errors(val* self) {
61 val* var /* : Array[String] */;
62 val* var1 /* : Array[String] */;
63 var1 = opts__Option__errors(self);
64 var = var1;
65 RET_LABEL:;
66 return var;
67 }
68 /* method opts#Option#mandatory for (self: Option): Bool */
69 short int opts__Option__mandatory(val* self) {
70 short int var /* : Bool */;
71 short int var1 /* : Bool */;
72 var1 = self->attrs[COLOR_opts__Option___mandatory].s; /* _mandatory on <self:Option> */
73 var = var1;
74 RET_LABEL:;
75 return var;
76 }
77 /* method opts#Option#mandatory for (self: Object): Bool */
78 short int VIRTUAL_opts__Option__mandatory(val* self) {
79 short int var /* : Bool */;
80 short int var1 /* : Bool */;
81 var1 = opts__Option__mandatory(self);
82 var = var1;
83 RET_LABEL:;
84 return var;
85 }
86 /* method opts#Option#mandatory= for (self: Option, Bool) */
87 void opts__Option__mandatory_61d(val* self, short int p0) {
88 self->attrs[COLOR_opts__Option___mandatory].s = p0; /* _mandatory on <self:Option> */
89 RET_LABEL:;
90 }
91 /* method opts#Option#mandatory= for (self: Object, Bool) */
92 void VIRTUAL_opts__Option__mandatory_61d(val* self, short int p0) {
93 opts__Option__mandatory_61d(self, p0);
94 RET_LABEL:;
95 }
96 /* method opts#Option#read for (self: Option): Bool */
97 short int opts__Option__read(val* self) {
98 short int var /* : Bool */;
99 short int var1 /* : Bool */;
100 var1 = self->attrs[COLOR_opts__Option___read].s; /* _read on <self:Option> */
101 var = var1;
102 RET_LABEL:;
103 return var;
104 }
105 /* method opts#Option#read for (self: Object): Bool */
106 short int VIRTUAL_opts__Option__read(val* self) {
107 short int var /* : Bool */;
108 short int var1 /* : Bool */;
109 var1 = opts__Option__read(self);
110 var = var1;
111 RET_LABEL:;
112 return var;
113 }
114 /* method opts#Option#value= for (self: Option, nullable Object) */
115 void opts__Option__value_61d(val* self, val* p0) {
116 short int var /* : Bool */;
117 int cltype;
118 int idtype;
119 const struct type* type_struct;
120 /* Covariant cast for argument 0 (value) <p0:nullable Object> isa nullable VALUE */
121 /* <p0:nullable Object> isa nullable VALUE */
122 type_struct = self->type->resolution_table->types[COLOR_opts__Option_VTVALUE];
123 cltype = type_struct->color;
124 idtype = type_struct->id;
125 if(p0 == NULL) {
126 var = 1;
127 } else {
128 if(cltype >= p0->type->table_size) {
129 var = 0;
130 } else {
131 var = p0->type->type_table[cltype] == idtype;
132 }
133 }
134 if (!var) {
135 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/opts.nit", 37);
136 exit(1);
137 }
138 self->attrs[COLOR_opts__Option___value].val = p0; /* _value on <self:Option> */
139 RET_LABEL:;
140 }
141 /* method opts#Option#value= for (self: Object, nullable Object) */
142 void VIRTUAL_opts__Option__value_61d(val* self, val* p0) {
143 opts__Option__value_61d(self, p0);
144 RET_LABEL:;
145 }
146 /* method opts#Option#value for (self: Option): nullable Object */
147 val* opts__Option__value(val* self) {
148 val* var /* : nullable Object */;
149 val* var1 /* : nullable Object */;
150 short int var2 /* : Bool */;
151 int cltype;
152 int idtype;
153 const struct type* type_struct;
154 short int is_nullable;
155 var1 = self->attrs[COLOR_opts__Option___value].val; /* _value on <self:Option> */
156 /* <var1:nullable Object> isa VALUE */
157 type_struct = self->type->resolution_table->types[COLOR_opts__Option_VTVALUE];
158 cltype = type_struct->color;
159 idtype = type_struct->id;
160 is_nullable = type_struct->is_nullable;
161 if(var1 == NULL) {
162 var2 = is_nullable;
163 } else {
164 if(cltype >= var1->type->table_size) {
165 var2 = 0;
166 } else {
167 var2 = var1->type->type_table[cltype] == idtype;
168 }
169 }
170 if (!var2) {
171 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/opts.nit", 41);
172 exit(1);
173 }
174 var = var1;
175 goto RET_LABEL;
176 RET_LABEL:;
177 return var;
178 }
179 /* method opts#Option#value for (self: Object): nullable Object */
180 val* VIRTUAL_opts__Option__value(val* self) {
181 val* var /* : nullable Object */;
182 val* var1 /* : nullable Object */;
183 var1 = opts__Option__value(self);
184 var = var1;
185 RET_LABEL:;
186 return var;
187 }
188 /* method opts#Option#default_value for (self: Option): nullable Object */
189 val* opts__Option__default_value(val* self) {
190 val* var /* : nullable Object */;
191 val* var1 /* : nullable Object */;
192 var1 = self->attrs[COLOR_opts__Option___default_value].val; /* _default_value on <self:Option> */
193 var = var1;
194 RET_LABEL:;
195 return var;
196 }
197 /* method opts#Option#default_value for (self: Object): nullable Object */
198 val* VIRTUAL_opts__Option__default_value(val* self) {
199 val* var /* : nullable Object */;
200 val* var1 /* : nullable Object */;
201 var1 = opts__Option__default_value(self);
202 var = var1;
203 RET_LABEL:;
204 return var;
205 }
206 /* method opts#Option#default_value= for (self: Option, nullable Object) */
207 void opts__Option__default_value_61d(val* self, val* p0) {
208 short int var /* : Bool */;
209 int cltype;
210 int idtype;
211 const struct type* type_struct;
212 /* Covariant cast for argument 0 (default_value) <p0:nullable Object> isa nullable VALUE */
213 /* <p0:nullable Object> isa nullable VALUE */
214 type_struct = self->type->resolution_table->types[COLOR_opts__Option_VTVALUE];
215 cltype = type_struct->color;
216 idtype = type_struct->id;
217 if(p0 == NULL) {
218 var = 1;
219 } else {
220 if(cltype >= p0->type->table_size) {
221 var = 0;
222 } else {
223 var = p0->type->type_table[cltype] == idtype;
224 }
225 }
226 if (!var) {
227 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/opts.nit", 43);
228 exit(1);
229 }
230 self->attrs[COLOR_opts__Option___default_value].val = p0; /* _default_value on <self:Option> */
231 RET_LABEL:;
232 }
233 /* method opts#Option#default_value= for (self: Object, nullable Object) */
234 void VIRTUAL_opts__Option__default_value_61d(val* self, val* p0) {
235 opts__Option__default_value_61d(self, p0);
236 RET_LABEL:;
237 }
238 /* method opts#Option#init_opt for (self: Option, String, nullable Object, nullable Array[String]) */
239 void opts__Option__init_opt(val* self, val* p0, val* p1, val* p2) {
240 short int var /* : Bool */;
241 int cltype;
242 int idtype;
243 const struct type* type_struct;
244 val* var_help /* var help: String */;
245 val* var_default /* var default: nullable Object */;
246 val* var_names /* var names: nullable Array[String] */;
247 val* var1 /* : null */;
248 short int var2 /* : Bool */;
249 val* var3 /* : Array[String] */;
250 val* var4 /* : Array[nullable Object] */;
251 short int var5 /* : Bool */;
252 short int var6 /* : Bool */;
253 val* var7 /* : Array[String] */;
254 /* Covariant cast for argument 1 (default) <p1:nullable Object> isa nullable VALUE */
255 /* <p1:nullable Object> isa nullable VALUE */
256 type_struct = self->type->resolution_table->types[COLOR_opts__Option_VTVALUE];
257 cltype = type_struct->color;
258 idtype = type_struct->id;
259 if(p1 == NULL) {
260 var = 1;
261 } else {
262 if(cltype >= p1->type->table_size) {
263 var = 0;
264 } else {
265 var = p1->type->type_table[cltype] == idtype;
266 }
267 }
268 if (!var) {
269 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/opts.nit", 46);
270 exit(1);
271 }
272 var_help = p0;
273 var_default = p1;
274 var_names = p2;
275 var1 = NULL;
276 if (var_names == NULL) {
277 var2 = 1; /* is null */
278 } else {
279 var2 = 0; /* arg is null but recv is not */
280 }
281 if (var2){
282 var3 = NEW_array__Array(&type_array__Arraystring__String);
283 ((void (*)(val*))(var3->class->vft[COLOR_array__Array__init]))(var3) /* init on <var3:Array[String]>*/;
284 CHECK_NEW_array__Array(var3);
285 self->attrs[COLOR_opts__Option___names].val = var3; /* _names on <self:Option> */
286 } else {
287 var4 = ((val* (*)(val*))(var_names->class->vft[COLOR_array__Collection__to_a]))(var_names) /* to_a on <var_names:nullable Array[String](Array[String])>*/;
288 self->attrs[COLOR_opts__Option___names].val = var4; /* _names on <self:Option> */
289 }
290 self->attrs[COLOR_opts__Option___helptext].val = var_help; /* _helptext on <self:Option> */
291 var5 = 0;
292 self->attrs[COLOR_opts__Option___mandatory].s = var5; /* _mandatory on <self:Option> */
293 var6 = 0;
294 self->attrs[COLOR_opts__Option___read].s = var6; /* _read on <self:Option> */
295 self->attrs[COLOR_opts__Option___default_value].val = var_default; /* _default_value on <self:Option> */
296 self->attrs[COLOR_opts__Option___value].val = var_default; /* _value on <self:Option> */
297 var7 = NEW_array__Array(&type_array__Arraystring__String);
298 ((void (*)(val*))(var7->class->vft[COLOR_array__Array__init]))(var7) /* init on <var7:Array[String]>*/;
299 CHECK_NEW_array__Array(var7);
300 self->attrs[COLOR_opts__Option___errors].val = var7; /* _errors on <self:Option> */
301 RET_LABEL:;
302 }
303 /* method opts#Option#init_opt for (self: Object, String, nullable Object, nullable Array[String]) */
304 void VIRTUAL_opts__Option__init_opt(val* self, val* p0, val* p1, val* p2) {
305 opts__Option__init_opt(self, p0, p1, p2);
306 RET_LABEL:;
307 }
308 /* method opts#Option#add_aliases for (self: Option, Array[String]) */
309 void opts__Option__add_aliases(val* self, val* p0) {
310 val* var_names /* var names: Array[String] */;
311 val* var /* : Array[String] */;
312 var_names = p0;
313 var = self->attrs[COLOR_opts__Option___names].val; /* _names on <self:Option> */
314 if (var == NULL) {
315 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _names", "lib/opts.nit", 63);
316 exit(1);
317 }
318 ((void (*)(val*, val*))(var->class->vft[COLOR_abstract_collection__SimpleCollection__add_all]))(var, var_names) /* add_all on <var:Array[String]>*/;
319 RET_LABEL:;
320 }
321 /* method opts#Option#add_aliases for (self: Object, Array[String]) */
322 void VIRTUAL_opts__Option__add_aliases(val* self, val* p0) {
323 opts__Option__add_aliases(self, p0);
324 RET_LABEL:;
325 }
326 /* method opts#Option#to_s for (self: Option): String */
327 val* opts__Option__to_s(val* self) {
328 val* var /* : String */;
329 long var1 /* : Int */;
330 val* var2 /* : String */;
331 var1 = 2;
332 var2 = ((val* (*)(val*, long))(self->class->vft[COLOR_opts__Option__pretty]))(self, var1) /* pretty on <self:Option>*/;
333 var = var2;
334 goto RET_LABEL;
335 RET_LABEL:;
336 return var;
337 }
338 /* method opts#Option#to_s for (self: Object): String */
339 val* VIRTUAL_opts__Option__to_s(val* self) {
340 val* var /* : String */;
341 val* var1 /* : String */;
342 var1 = opts__Option__to_s(self);
343 var = var1;
344 RET_LABEL:;
345 return var;
346 }
347 /* method opts#Option#pretty for (self: Option, Int): String */
348 val* opts__Option__pretty(val* self, long p0) {
349 val* var /* : String */;
350 long var_off /* var off: Int */;
351 val* var1 /* : Buffer */;
352 static val* varonce;
353 val* var2 /* : String */;
354 char* var3 /* : NativeString */;
355 long var4 /* : Int */;
356 val* var5 /* : String */;
357 val* var_text /* var text: Buffer */;
358 val* var6 /* : Array[String] */;
359 static val* varonce7;
360 val* var8 /* : String */;
361 char* var9 /* : NativeString */;
362 long var10 /* : Int */;
363 val* var11 /* : String */;
364 val* var12 /* : String */;
365 static val* varonce13;
366 val* var14 /* : String */;
367 char* var15 /* : NativeString */;
368 long var16 /* : Int */;
369 val* var17 /* : String */;
370 long var18 /* : Int */;
371 long var19 /* : Int */;
372 long var21 /* : Int */;
373 long var_rest /* var rest: Int */;
374 long var22 /* : Int */;
375 short int var23 /* : Bool */;
376 short int var25 /* : Bool */;
377 int cltype;
378 int idtype;
379 short int var26 /* : Bool */;
380 static val* varonce27;
381 val* var28 /* : String */;
382 char* var29 /* : NativeString */;
383 long var30 /* : Int */;
384 val* var31 /* : String */;
385 val* var32 /* : String */;
386 val* var33 /* : String */;
387 val* var34 /* : String */;
388 var_off = p0;
389 var1 = NEW_string__Buffer(&type_string__Buffer);
390 if (varonce) {
391 var2 = varonce;
392 } else {
393 var3 = " ";
394 var4 = 2;
395 var5 = string__NativeString__to_s_with_length(var3, var4);
396 var2 = var5;
397 varonce = var2;
398 }
399 ((void (*)(val*, val*))(var1->class->vft[COLOR_string__Buffer__from]))(var1, var2) /* from on <var1:Buffer>*/;
400 CHECK_NEW_string__Buffer(var1);
401 var_text = var1;
402 var6 = self->attrs[COLOR_opts__Option___names].val; /* _names on <self:Option> */
403 if (var6 == NULL) {
404 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _names", "lib/opts.nit", 72);
405 exit(1);
406 }
407 if (varonce7) {
408 var8 = varonce7;
409 } else {
410 var9 = ", ";
411 var10 = 2;
412 var11 = string__NativeString__to_s_with_length(var9, var10);
413 var8 = var11;
414 varonce7 = var8;
415 }
416 var12 = ((val* (*)(val*, val*))(var6->class->vft[COLOR_string__Collection__join]))(var6, var8) /* join on <var6:Array[String]>*/;
417 ((void (*)(val*, val*))(var_text->class->vft[COLOR_abstract_collection__Sequence__append]))(var_text, var12) /* append on <var_text:Buffer>*/;
418 if (varonce13) {
419 var14 = varonce13;
420 } else {
421 var15 = " ";
422 var16 = 2;
423 var17 = string__NativeString__to_s_with_length(var15, var16);
424 var14 = var17;
425 varonce13 = var14;
426 }
427 ((void (*)(val*, val*))(var_text->class->vft[COLOR_abstract_collection__Sequence__append]))(var_text, var14) /* append on <var_text:Buffer>*/;
428 var18 = ((long (*)(val*))(var_text->class->vft[COLOR_abstract_collection__Collection__length]))(var_text) /* length on <var_text:Buffer>*/;
429 { /* Inline kernel#Int#- (var_off,var18) */
430 var21 = var_off - var18;
431 var19 = var21;
432 goto RET_LABEL20;
433 RET_LABEL20:(void)0;
434 }
435 var_rest = var19;
436 var22 = 0;
437 { /* Inline kernel#Int#> (var_rest,var22) */
438 /* Covariant cast for argument 0 (i) <var22:Int> isa OTHER */
439 /* <var22:Int> isa OTHER */
440 var25 = 1; /* easy <var22:Int> isa OTHER*/
441 if (!var25) {
442 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259);
443 exit(1);
444 }
445 var26 = var_rest > var22;
446 var23 = var26;
447 goto RET_LABEL24;
448 RET_LABEL24:(void)0;
449 }
450 if (var23){
451 if (varonce27) {
452 var28 = varonce27;
453 } else {
454 var29 = " ";
455 var30 = 1;
456 var31 = string__NativeString__to_s_with_length(var29, var30);
457 var28 = var31;
458 varonce27 = var28;
459 }
460 var32 = ((val* (*)(val*, long))(var28->class->vft[COLOR_string__String___42d]))(var28, var_rest) /* * on <var28:String>*/;
461 ((void (*)(val*, val*))(var_text->class->vft[COLOR_abstract_collection__Sequence__append]))(var_text, var32) /* append on <var_text:Buffer>*/;
462 } else {
463 }
464 var33 = ((val* (*)(val*))(self->class->vft[COLOR_opts__Option__helptext]))(self) /* helptext on <self:Option>*/;
465 ((void (*)(val*, val*))(var_text->class->vft[COLOR_abstract_collection__Sequence__append]))(var_text, var33) /* append on <var_text:Buffer>*/;
466 var34 = ((val* (*)(val*))(var_text->class->vft[COLOR_string__Object__to_s]))(var_text) /* to_s on <var_text:Buffer>*/;
467 var = var34;
468 goto RET_LABEL;
469 RET_LABEL:;
470 return var;
471 }
472 /* method opts#Option#pretty for (self: Object, Int): String */
473 val* VIRTUAL_opts__Option__pretty(val* self, long p0) {
474 val* var /* : String */;
475 val* var1 /* : String */;
476 var1 = opts__Option__pretty(self, p0);
477 var = var1;
478 RET_LABEL:;
479 return var;
480 }
481 /* method opts#Option#pretty_default for (self: Option): String */
482 val* opts__Option__pretty_default(val* self) {
483 val* var /* : String */;
484 val* var1 /* : nullable Object */;
485 val* var_dv /* var dv: nullable Object */;
486 val* var2 /* : null */;
487 short int var3 /* : Bool */;
488 val* var4 /* : Array[Object] */;
489 long var5 /* : Int */;
490 val* var_ /* var : Array[Object] */;
491 static val* varonce;
492 val* var6 /* : String */;
493 char* var7 /* : NativeString */;
494 long var8 /* : Int */;
495 val* var9 /* : String */;
496 static val* varonce10;
497 val* var11 /* : String */;
498 char* var12 /* : NativeString */;
499 long var13 /* : Int */;
500 val* var14 /* : String */;
501 val* var15 /* : String */;
502 static val* varonce16;
503 val* var17 /* : String */;
504 char* var18 /* : NativeString */;
505 long var19 /* : Int */;
506 val* var20 /* : String */;
507 var1 = ((val* (*)(val*))(self->class->vft[COLOR_opts__Option__default_value]))(self) /* default_value on <self:Option>*/;
508 var_dv = var1;
509 var2 = NULL;
510 if (var_dv == NULL) {
511 var3 = 0; /* is null */
512 } else {
513 var3 = 1; /* arg is null and recv is not */
514 }
515 if (var3){
516 var4 = NEW_array__Array(&type_array__Arraykernel__Object);
517 var5 = 3;
518 ((void (*)(val*, long))(var4->class->vft[COLOR_array__Array__with_capacity]))(var4, var5) /* with_capacity on <var4:Array[Object]>*/;
519 CHECK_NEW_array__Array(var4);
520 var_ = var4;
521 if (varonce) {
522 var6 = varonce;
523 } else {
524 var7 = " (";
525 var8 = 2;
526 var9 = string__NativeString__to_s_with_length(var7, var8);
527 var6 = var9;
528 varonce = var6;
529 }
530 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var6) /* add on <var_:Array[Object]>*/;
531 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var_dv) /* add on <var_:Array[Object]>*/;
532 if (varonce10) {
533 var11 = varonce10;
534 } else {
535 var12 = ")";
536 var13 = 1;
537 var14 = string__NativeString__to_s_with_length(var12, var13);
538 var11 = var14;
539 varonce10 = var11;
540 }
541 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var11) /* add on <var_:Array[Object]>*/;
542 var15 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
543 var = var15;
544 goto RET_LABEL;
545 } else {
546 }
547 if (varonce16) {
548 var17 = varonce16;
549 } else {
550 var18 = "";
551 var19 = 0;
552 var20 = string__NativeString__to_s_with_length(var18, var19);
553 var17 = var20;
554 varonce16 = var17;
555 }
556 var = var17;
557 goto RET_LABEL;
558 RET_LABEL:;
559 return var;
560 }
561 /* method opts#Option#pretty_default for (self: Object): String */
562 val* VIRTUAL_opts__Option__pretty_default(val* self) {
563 val* var /* : String */;
564 val* var1 /* : String */;
565 var1 = opts__Option__pretty_default(self);
566 var = var1;
567 RET_LABEL:;
568 return var;
569 }
570 /* method opts#Option#read_param for (self: Option, Iterator[String]) */
571 void opts__Option__read_param(val* self, val* p0) {
572 val* var_it /* var it: Iterator[String] */;
573 short int var /* : Bool */;
574 var_it = p0;
575 var = 1;
576 self->attrs[COLOR_opts__Option___read].s = var; /* _read on <self:Option> */
577 RET_LABEL:;
578 }
579 /* method opts#Option#read_param for (self: Object, Iterator[String]) */
580 void VIRTUAL_opts__Option__read_param(val* self, val* p0) {
581 opts__Option__read_param(self, p0);
582 RET_LABEL:;
583 }
584 /* method opts#OptionText#init for (self: OptionText, String) */
585 void opts__OptionText__init(val* self, val* p0) {
586 val* var_text /* var text: String */;
587 val* var /* : null */;
588 val* var1 /* : null */;
589 var_text = p0;
590 var = NULL;
591 var1 = NULL;
592 ((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_opts__Option__init_opt]))(self, var_text, var, var1) /* init_opt on <self:OptionText>*/;
593 RET_LABEL:;
594 }
595 /* method opts#OptionText#init for (self: Object, String) */
596 void VIRTUAL_opts__OptionText__init(val* self, val* p0) {
597 opts__OptionText__init(self, p0);
598 RET_LABEL:;
599 }
600 /* method opts#OptionText#pretty for (self: OptionText, Int): String */
601 val* opts__OptionText__pretty(val* self, long p0) {
602 val* var /* : String */;
603 long var_off /* var off: Int */;
604 val* var1 /* : String */;
605 var_off = p0;
606 var1 = ((val* (*)(val*))(self->class->vft[COLOR_string__Object__to_s]))(self) /* to_s on <self:OptionText>*/;
607 var = var1;
608 goto RET_LABEL;
609 RET_LABEL:;
610 return var;
611 }
612 /* method opts#OptionText#pretty for (self: Object, Int): String */
613 val* VIRTUAL_opts__OptionText__pretty(val* self, long p0) {
614 val* var /* : String */;
615 val* var1 /* : String */;
616 var1 = opts__OptionText__pretty(self, p0);
617 var = var1;
618 RET_LABEL:;
619 return var;
620 }
621 /* method opts#OptionText#to_s for (self: OptionText): String */
622 val* opts__OptionText__to_s(val* self) {
623 val* var /* : String */;
624 val* var1 /* : String */;
625 var1 = ((val* (*)(val*))(self->class->vft[COLOR_opts__Option__helptext]))(self) /* helptext on <self:OptionText>*/;
626 var = var1;
627 goto RET_LABEL;
628 RET_LABEL:;
629 return var;
630 }
631 /* method opts#OptionText#to_s for (self: Object): String */
632 val* VIRTUAL_opts__OptionText__to_s(val* self) {
633 val* var /* : String */;
634 val* var1 /* : String */;
635 var1 = opts__OptionText__to_s(self);
636 var = var1;
637 RET_LABEL:;
638 return var;
639 }
640 /* method opts#OptionBool#init for (self: OptionBool, String, Array[String]) */
641 void opts__OptionBool__init(val* self, val* p0, val* p1) {
642 val* var_help /* var help: String */;
643 val* var_names /* var names: Array[String] */;
644 short int var /* : Bool */;
645 val* var1 /* : nullable Object */;
646 var_help = p0;
647 var_names = p1;
648 var = 0;
649 var1 = BOX_kernel__Bool(var); /* autobox from Bool to nullable Object */
650 ((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_opts__Option__init_opt]))(self, var_help, var1, var_names) /* init_opt on <self:OptionBool>*/;
651 RET_LABEL:;
652 }
653 /* method opts#OptionBool#init for (self: Object, String, Array[String]) */
654 void VIRTUAL_opts__OptionBool__init(val* self, val* p0, val* p1) {
655 opts__OptionBool__init(self, p0, p1);
656 RET_LABEL:;
657 }
658 /* method opts#OptionBool#read_param for (self: OptionBool, Iterator[String]) */
659 void opts__OptionBool__read_param(val* self, val* p0) {
660 val* var_it /* var it: Iterator[String] */;
661 short int var /* : Bool */;
662 val* var1 /* : nullable Object */;
663 var_it = p0;
664 ((void (*)(val*, val*))(self->class->vft[COLOR_opts__OptionBool__read_param]))(self, p0) /* read_param on <self:OptionBool>*/;
665 var = 1;
666 var1 = BOX_kernel__Bool(var); /* autobox from Bool to nullable Object */
667 ((void (*)(val*, val*))(self->class->vft[COLOR_opts__Option__value_61d]))(self, var1) /* value= on <self:OptionBool>*/;
668 RET_LABEL:;
669 }
670 /* method opts#OptionBool#read_param for (self: Object, Iterator[String]) */
671 void VIRTUAL_opts__OptionBool__read_param(val* self, val* p0) {
672 opts__OptionBool__read_param(self, p0);
673 RET_LABEL:;
674 }
675 /* method opts#OptionCount#init for (self: OptionCount, String, Array[String]) */
676 void opts__OptionCount__init(val* self, val* p0, val* p1) {
677 val* var_help /* var help: String */;
678 val* var_names /* var names: Array[String] */;
679 long var /* : Int */;
680 val* var1 /* : nullable Object */;
681 var_help = p0;
682 var_names = p1;
683 var = 0;
684 var1 = BOX_kernel__Int(var); /* autobox from Int to nullable Object */
685 ((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_opts__Option__init_opt]))(self, var_help, var1, var_names) /* init_opt on <self:OptionCount>*/;
686 RET_LABEL:;
687 }
688 /* method opts#OptionCount#init for (self: Object, String, Array[String]) */
689 void VIRTUAL_opts__OptionCount__init(val* self, val* p0, val* p1) {
690 opts__OptionCount__init(self, p0, p1);
691 RET_LABEL:;
692 }
693 /* method opts#OptionCount#read_param for (self: OptionCount, Iterator[String]) */
694 void opts__OptionCount__read_param(val* self, val* p0) {
695 val* var_it /* var it: Iterator[String] */;
696 val* var_ /* var : OptionCount */;
697 val* var /* : nullable Object */;
698 long var1 /* : Int */;
699 long var2 /* : Int */;
700 long var4 /* : Int */;
701 long var5 /* : Int */;
702 val* var6 /* : nullable Object */;
703 var_it = p0;
704 ((void (*)(val*, val*))(self->class->vft[COLOR_opts__OptionCount__read_param]))(self, p0) /* read_param on <self:OptionCount>*/;
705 var_ = self;
706 var = ((val* (*)(val*))(var_->class->vft[COLOR_opts__Option__value]))(var_) /* value on <var_:OptionCount>*/;
707 var1 = 1;
708 { /* Inline kernel#Int#+ (var,var1) */
709 var4 = ((struct instance_kernel__Int*)var)->value; /* autounbox from nullable Object to Int */;
710 var5 = var4 + var1;
711 var2 = var5;
712 goto RET_LABEL3;
713 RET_LABEL3:(void)0;
714 }
715 var6 = BOX_kernel__Int(var2); /* autobox from Int to nullable Object */
716 ((void (*)(val*, val*))(var_->class->vft[COLOR_opts__Option__value_61d]))(var_, var6) /* value= on <var_:OptionCount>*/;
717 RET_LABEL:;
718 }
719 /* method opts#OptionCount#read_param for (self: Object, Iterator[String]) */
720 void VIRTUAL_opts__OptionCount__read_param(val* self, val* p0) {
721 opts__OptionCount__read_param(self, p0);
722 RET_LABEL:;
723 }
724 /* method opts#OptionParameter#convert for (self: OptionParameter, String): nullable Object */
725 val* opts__OptionParameter__convert(val* self, val* p0) {
726 val* var /* : nullable Object */;
727 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "lib/opts.nit", 133);
728 exit(1);
729 RET_LABEL:;
730 return var;
731 }
732 /* method opts#OptionParameter#convert for (self: Object, String): nullable Object */
733 val* VIRTUAL_opts__OptionParameter__convert(val* self, val* p0) {
734 val* var /* : nullable Object */;
735 val* var1 /* : nullable Object */;
736 var1 = opts__OptionParameter__convert(self, p0);
737 var = var1;
738 RET_LABEL:;
739 return var;
740 }
741 /* method opts#OptionParameter#parameter_mandatory for (self: OptionParameter): Bool */
742 short int opts__OptionParameter__parameter_mandatory(val* self) {
743 short int var /* : Bool */;
744 short int var1 /* : Bool */;
745 var1 = self->attrs[COLOR_opts__OptionParameter___parameter_mandatory].s; /* _parameter_mandatory on <self:OptionParameter> */
746 var = var1;
747 RET_LABEL:;
748 return var;
749 }
750 /* method opts#OptionParameter#parameter_mandatory for (self: Object): Bool */
751 short int VIRTUAL_opts__OptionParameter__parameter_mandatory(val* self) {
752 short int var /* : Bool */;
753 short int var1 /* : Bool */;
754 var1 = opts__OptionParameter__parameter_mandatory(self);
755 var = var1;
756 RET_LABEL:;
757 return var;
758 }
759 /* method opts#OptionParameter#parameter_mandatory= for (self: OptionParameter, Bool) */
760 void opts__OptionParameter__parameter_mandatory_61d(val* self, short int p0) {
761 self->attrs[COLOR_opts__OptionParameter___parameter_mandatory].s = p0; /* _parameter_mandatory on <self:OptionParameter> */
762 RET_LABEL:;
763 }
764 /* method opts#OptionParameter#parameter_mandatory= for (self: Object, Bool) */
765 void VIRTUAL_opts__OptionParameter__parameter_mandatory_61d(val* self, short int p0) {
766 opts__OptionParameter__parameter_mandatory_61d(self, p0);
767 RET_LABEL:;
768 }
769 /* method opts#OptionParameter#read_param for (self: OptionParameter, Iterator[String]) */
770 void opts__OptionParameter__read_param(val* self, val* p0) {
771 val* var_it /* var it: Iterator[String] */;
772 short int var /* : Bool */;
773 short int var1 /* : Bool */;
774 short int var_ /* var : Bool */;
775 val* var2 /* : nullable Object */;
776 val* var3 /* : nullable Object */;
777 char var4 /* : Char */;
778 short int var5 /* : Bool */;
779 short int var7 /* : Bool */;
780 char var8 /* : Char */;
781 short int var9 /* : Bool */;
782 val* var10 /* : nullable Object */;
783 val* var11 /* : nullable Object */;
784 short int var12 /* : Bool */;
785 val* var13 /* : Array[String] */;
786 static val* varonce;
787 val* var14 /* : String */;
788 char* var15 /* : NativeString */;
789 long var16 /* : Int */;
790 val* var17 /* : String */;
791 val* var18 /* : Array[String] */;
792 val* var19 /* : nullable Object */;
793 static val* varonce20;
794 val* var21 /* : String */;
795 char* var22 /* : NativeString */;
796 long var23 /* : Int */;
797 val* var24 /* : String */;
798 val* var25 /* : Array[Object] */;
799 long var26 /* : Int */;
800 val* var27 /* : NativeArray[Object] */;
801 val* var28 /* : String */;
802 var_it = p0;
803 ((void (*)(val*, val*))(self->class->vft[COLOR_opts__OptionParameter__read_param]))(self, p0) /* read_param on <self:OptionParameter>*/;
804 var1 = ((short int (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_it) /* is_ok on <var_it:Iterator[String]>*/;
805 var_ = var1;
806 if (var1){
807 var2 = ((val* (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__item]))(var_it) /* item on <var_it:Iterator[String]>*/;
808 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__first]))(var2) /* first on <var2:nullable Object(String)>*/;
809 var4 = '-';
810 { /* Inline kernel#Char#!= (var3,var4) */
811 var7 = (var3 != NULL) && (var3->class == &class_kernel__Char);
812 if (var7) {
813 var8 = ((struct instance_kernel__Char*)var3)->value; /* autounbox from nullable Object to Char */;
814 var7 = (var8 == var4);
815 }
816 var9 = !var7;
817 var5 = var9;
818 goto RET_LABEL6;
819 RET_LABEL6:(void)0;
820 }
821 var = var5;
822 } else {
823 var = var_;
824 }
825 if (var){
826 var10 = ((val* (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__item]))(var_it) /* item on <var_it:Iterator[String]>*/;
827 var11 = ((val* (*)(val*, val*))(self->class->vft[COLOR_opts__OptionParameter__convert]))(self, var10) /* convert on <self:OptionParameter>*/;
828 ((void (*)(val*, val*))(self->class->vft[COLOR_opts__Option__value_61d]))(self, var11) /* value= on <self:OptionParameter>*/;
829 ((void (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__next]))(var_it) /* next on <var_it:Iterator[String]>*/;
830 } else {
831 var12 = self->attrs[COLOR_opts__OptionParameter___parameter_mandatory].s; /* _parameter_mandatory on <self:OptionParameter> */
832 if (var12){
833 var13 = self->attrs[COLOR_opts__Option___errors].val; /* _errors on <self:OptionParameter> */
834 if (var13 == NULL) {
835 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _errors", "lib/opts.nit", 146);
836 exit(1);
837 }
838 if (varonce) {
839 var14 = varonce;
840 } else {
841 var15 = "Parameter expected for option ";
842 var16 = 30;
843 var17 = string__NativeString__to_s_with_length(var15, var16);
844 var14 = var17;
845 varonce = var14;
846 }
847 var18 = ((val* (*)(val*))(self->class->vft[COLOR_opts__Option__names]))(self) /* names on <self:OptionParameter>*/;
848 var19 = ((val* (*)(val*))(var18->class->vft[COLOR_abstract_collection__Collection__first]))(var18) /* first on <var18:Array[String]>*/;
849 if (varonce20) {
850 var21 = varonce20;
851 } else {
852 var22 = ".";
853 var23 = 1;
854 var24 = string__NativeString__to_s_with_length(var22, var23);
855 var21 = var24;
856 varonce20 = var21;
857 }
858 var25 = NEW_array__Array(&type_array__Arraykernel__Object);
859 { /* var25 = array_instance Array[Object] */
860 var26 = 3;
861 var27 = NEW_array__NativeArray(var26, &type_array__NativeArraykernel__Object);
862 ((struct instance_array__NativeArray*)var27)->values[0] = (val*) var14;
863 ((struct instance_array__NativeArray*)var27)->values[1] = (val*) var19;
864 ((struct instance_array__NativeArray*)var27)->values[2] = (val*) var21;
865 ((void (*)(val*, val*, long))(var25->class->vft[COLOR_array__Array__with_native]))(var25, var27, var26) /* with_native on <var25:Array[Object]>*/;
866 CHECK_NEW_array__Array(var25);
867 }
868 var28 = ((val* (*)(val*))(var25->class->vft[COLOR_string__Object__to_s]))(var25) /* to_s on <var25:Array[Object]>*/;
869 ((void (*)(val*, val*))(var13->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var13, var28) /* add on <var13:Array[String]>*/;
870 } else {
871 }
872 }
873 RET_LABEL:;
874 }
875 /* method opts#OptionParameter#read_param for (self: Object, Iterator[String]) */
876 void VIRTUAL_opts__OptionParameter__read_param(val* self, val* p0) {
877 opts__OptionParameter__read_param(self, p0);
878 RET_LABEL:;
879 }
880 /* method opts#OptionParameter#init_opt for (self: OptionParameter, String, nullable Object, nullable Array[String]) */
881 void opts__OptionParameter__init_opt(val* self, val* p0, val* p1, val* p2) {
882 short int var /* : Bool */;
883 int cltype;
884 int idtype;
885 const struct type* type_struct;
886 val* var_h /* var h: String */;
887 val* var_d /* var d: nullable Object */;
888 val* var_n /* var n: nullable Array[String] */;
889 short int var1 /* : Bool */;
890 /* Covariant cast for argument 1 (d) <p1:nullable Object> isa nullable VALUE */
891 /* <p1:nullable Object> isa nullable VALUE */
892 type_struct = self->type->resolution_table->types[COLOR_opts__Option_VTVALUE];
893 cltype = type_struct->color;
894 idtype = type_struct->id;
895 if(p1 == NULL) {
896 var = 1;
897 } else {
898 if(cltype >= p1->type->table_size) {
899 var = 0;
900 } else {
901 var = p1->type->type_table[cltype] == idtype;
902 }
903 }
904 if (!var) {
905 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/opts.nit", 151);
906 exit(1);
907 }
908 var_h = p0;
909 var_d = p1;
910 var_n = p2;
911 ((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_opts__Option__init_opt]))(self, p0, p1, p2) /* init_opt on <self:OptionParameter>*/;
912 var1 = 1;
913 self->attrs[COLOR_opts__OptionParameter___parameter_mandatory].s = var1; /* _parameter_mandatory on <self:OptionParameter> */
914 RET_LABEL:;
915 }
916 /* method opts#OptionParameter#init_opt for (self: Object, String, nullable Object, nullable Array[String]) */
917 void VIRTUAL_opts__OptionParameter__init_opt(val* self, val* p0, val* p1, val* p2) {
918 opts__OptionParameter__init_opt(self, p0, p1, p2);
919 RET_LABEL:;
920 }
921 /* method opts#OptionString#init for (self: OptionString, String, Array[String]) */
922 void opts__OptionString__init(val* self, val* p0, val* p1) {
923 val* var_help /* var help: String */;
924 val* var_names /* var names: Array[String] */;
925 val* var /* : null */;
926 var_help = p0;
927 var_names = p1;
928 var = NULL;
929 ((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_opts__OptionParameter__init_opt]))(self, var_help, var, var_names) /* init_opt on <self:OptionString>*/;
930 RET_LABEL:;
931 }
932 /* method opts#OptionString#init for (self: Object, String, Array[String]) */
933 void VIRTUAL_opts__OptionString__init(val* self, val* p0, val* p1) {
934 opts__OptionString__init(self, p0, p1);
935 RET_LABEL:;
936 }
937 /* method opts#OptionString#convert for (self: OptionString, String): nullable String */
938 val* opts__OptionString__convert(val* self, val* p0) {
939 val* var /* : nullable String */;
940 val* var_str /* var str: String */;
941 short int var1 /* : Bool */;
942 int cltype;
943 int idtype;
944 const struct type* type_struct;
945 var_str = p0;
946 /* <var_str:String> isa VALUE */
947 type_struct = self->type->resolution_table->types[COLOR_opts__Option_VTVALUE];
948 cltype = type_struct->color;
949 idtype = type_struct->id;
950 if(cltype >= var_str->type->table_size) {
951 var1 = 0;
952 } else {
953 var1 = var_str->type->type_table[cltype] == idtype;
954 }
955 if (!var1) {
956 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/opts.nit", 164);
957 exit(1);
958 }
959 var = var_str;
960 goto RET_LABEL;
961 RET_LABEL:;
962 return var;
963 }
964 /* method opts#OptionString#convert for (self: Object, String): nullable Object */
965 val* VIRTUAL_opts__OptionString__convert(val* self, val* p0) {
966 val* var /* : nullable Object */;
967 val* var1 /* : nullable String */;
968 var1 = opts__OptionString__convert(self, p0);
969 var = var1;
970 RET_LABEL:;
971 return var;
972 }
973 /* method opts#OptionEnum#init for (self: OptionEnum, Array[String], String, Int, Array[String]) */
974 void opts__OptionEnum__init(val* self, val* p0, val* p1, long p2, val* p3) {
975 val* var_values /* var values: Array[String] */;
976 val* var_help /* var help: String */;
977 long var_default /* var default: Int */;
978 val* var_names /* var names: Array[String] */;
979 long var /* : Int */;
980 long var1 /* : Int */;
981 short int var2 /* : Bool */;
982 short int var4 /* : Bool */;
983 int cltype;
984 int idtype;
985 short int var5 /* : Bool */;
986 val* var6 /* : Array[nullable Object] */;
987 static val* varonce;
988 val* var7 /* : String */;
989 char* var8 /* : NativeString */;
990 long var9 /* : Int */;
991 val* var10 /* : String */;
992 static val* varonce11;
993 val* var12 /* : String */;
994 char* var13 /* : NativeString */;
995 long var14 /* : Int */;
996 val* var15 /* : String */;
997 val* var16 /* : String */;
998 static val* varonce17;
999 val* var18 /* : String */;
1000 char* var19 /* : NativeString */;
1001 long var20 /* : Int */;
1002 val* var21 /* : String */;
1003 val* var22 /* : Array[Object] */;
1004 long var23 /* : Int */;
1005 val* var24 /* : NativeArray[Object] */;
1006 val* var25 /* : String */;
1007 val* var26 /* : nullable Object */;
1008 var_values = p0;
1009 var_help = p1;
1010 var_default = p2;
1011 var_names = p3;
1012 var = ((long (*)(val*))(var_values->class->vft[COLOR_abstract_collection__Collection__length]))(var_values) /* length on <var_values:Array[String]>*/;
1013 var1 = 0;
1014 { /* Inline kernel#Int#> (var,var1) */
1015 /* Covariant cast for argument 0 (i) <var1:Int> isa OTHER */
1016 /* <var1:Int> isa OTHER */
1017 var4 = 1; /* easy <var1:Int> isa OTHER*/
1018 if (!var4) {
1019 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259);
1020 exit(1);
1021 }
1022 var5 = var > var1;
1023 var2 = var5;
1024 goto RET_LABEL3;
1025 RET_LABEL3:(void)0;
1026 }
1027 if (!var2) {
1028 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "lib/opts.nit", 174);
1029 exit(1);
1030 }
1031 var6 = ((val* (*)(val*))(var_values->class->vft[COLOR_array__Collection__to_a]))(var_values) /* to_a on <var_values:Array[String]>*/;
1032 self->attrs[COLOR_opts__OptionEnum___values].val = var6; /* _values on <self:OptionEnum> */
1033 if (varonce) {
1034 var7 = varonce;
1035 } else {
1036 var8 = " <";
1037 var9 = 2;
1038 var10 = string__NativeString__to_s_with_length(var8, var9);
1039 var7 = var10;
1040 varonce = var7;
1041 }
1042 if (varonce11) {
1043 var12 = varonce11;
1044 } else {
1045 var13 = ", ";
1046 var14 = 2;
1047 var15 = string__NativeString__to_s_with_length(var13, var14);
1048 var12 = var15;
1049 varonce11 = var12;
1050 }
1051 var16 = ((val* (*)(val*, val*))(var_values->class->vft[COLOR_string__Collection__join]))(var_values, var12) /* join on <var_values:Array[String]>*/;
1052 if (varonce17) {
1053 var18 = varonce17;
1054 } else {
1055 var19 = ">";
1056 var20 = 1;
1057 var21 = string__NativeString__to_s_with_length(var19, var20);
1058 var18 = var21;
1059 varonce17 = var18;
1060 }
1061 var22 = NEW_array__Array(&type_array__Arraykernel__Object);
1062 { /* var22 = array_instance Array[Object] */
1063 var23 = 4;
1064 var24 = NEW_array__NativeArray(var23, &type_array__NativeArraykernel__Object);
1065 ((struct instance_array__NativeArray*)var24)->values[0] = (val*) var_help;
1066 ((struct instance_array__NativeArray*)var24)->values[1] = (val*) var7;
1067 ((struct instance_array__NativeArray*)var24)->values[2] = (val*) var16;
1068 ((struct instance_array__NativeArray*)var24)->values[3] = (val*) var18;
1069 ((void (*)(val*, val*, long))(var22->class->vft[COLOR_array__Array__with_native]))(var22, var24, var23) /* with_native on <var22:Array[Object]>*/;
1070 CHECK_NEW_array__Array(var22);
1071 }
1072 var25 = ((val* (*)(val*))(var22->class->vft[COLOR_string__Object__to_s]))(var22) /* to_s on <var22:Array[Object]>*/;
1073 var26 = BOX_kernel__Int(var_default); /* autobox from Int to nullable Object */
1074 ((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_opts__OptionParameter__init_opt]))(self, var25, var26, var_names) /* init_opt on <self:OptionEnum>*/;
1075 RET_LABEL:;
1076 }
1077 /* method opts#OptionEnum#init for (self: Object, Array[String], String, Int, Array[String]) */
1078 void VIRTUAL_opts__OptionEnum__init(val* self, val* p0, val* p1, long p2, val* p3) {
1079 opts__OptionEnum__init(self, p0, p1, p2, p3);
1080 RET_LABEL:;
1081 }
1082 /* method opts#OptionEnum#convert for (self: OptionEnum, String): Int */
1083 long opts__OptionEnum__convert(val* self, val* p0) {
1084 long var /* : Int */;
1085 val* var_str /* var str: String */;
1086 val* var1 /* : Array[String] */;
1087 long var2 /* : Int */;
1088 long var_id /* var id: Int */;
1089 long var3 /* : Int */;
1090 long var4 /* : Int */;
1091 long var6 /* : Int */;
1092 short int var7 /* : Bool */;
1093 short int var9 /* : Bool */;
1094 val* var10 /* : Array[Object] */;
1095 long var11 /* : Int */;
1096 val* var_ /* var : Array[Object] */;
1097 static val* varonce;
1098 val* var12 /* : String */;
1099 char* var13 /* : NativeString */;
1100 long var14 /* : Int */;
1101 val* var15 /* : String */;
1102 val* var16 /* : Array[String] */;
1103 static val* varonce17;
1104 val* var18 /* : String */;
1105 char* var19 /* : NativeString */;
1106 long var20 /* : Int */;
1107 val* var21 /* : String */;
1108 val* var22 /* : String */;
1109 static val* varonce23;
1110 val* var24 /* : String */;
1111 char* var25 /* : NativeString */;
1112 long var26 /* : Int */;
1113 val* var27 /* : String */;
1114 val* var28 /* : String */;
1115 val* var_e /* var e: String */;
1116 val* var29 /* : Array[Object] */;
1117 long var30 /* : Int */;
1118 val* var_31 /* var : Array[Object] */;
1119 static val* varonce32;
1120 val* var33 /* : String */;
1121 char* var34 /* : NativeString */;
1122 long var35 /* : Int */;
1123 val* var36 /* : String */;
1124 val* var37 /* : Array[String] */;
1125 static val* varonce38;
1126 val* var39 /* : String */;
1127 char* var40 /* : NativeString */;
1128 long var41 /* : Int */;
1129 val* var42 /* : String */;
1130 val* var43 /* : String */;
1131 static val* varonce44;
1132 val* var45 /* : String */;
1133 char* var46 /* : NativeString */;
1134 long var47 /* : Int */;
1135 val* var48 /* : String */;
1136 val* var49 /* : String */;
1137 val* var50 /* : String */;
1138 val* var51 /* : Array[String] */;
1139 var_str = p0;
1140 var1 = self->attrs[COLOR_opts__OptionEnum___values].val; /* _values on <self:OptionEnum> */
1141 if (var1 == NULL) {
1142 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _values", "lib/opts.nit", 181);
1143 exit(1);
1144 }
1145 var2 = ((long (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__SequenceRead__index_of]))(var1, var_str) /* index_of on <var1:Array[String]>*/;
1146 var_id = var2;
1147 var3 = 1;
1148 { /* Inline kernel#Int#unary - (var3) */
1149 var6 = -var3;
1150 var4 = var6;
1151 goto RET_LABEL5;
1152 RET_LABEL5:(void)0;
1153 }
1154 { /* Inline kernel#Int#== (var_id,var4) */
1155 var9 = var_id == var4;
1156 var7 = var9;
1157 goto RET_LABEL8;
1158 RET_LABEL8:(void)0;
1159 }
1160 if (var7){
1161 var10 = NEW_array__Array(&type_array__Arraykernel__Object);
1162 var11 = 3;
1163 ((void (*)(val*, long))(var10->class->vft[COLOR_array__Array__with_capacity]))(var10, var11) /* with_capacity on <var10:Array[Object]>*/;
1164 CHECK_NEW_array__Array(var10);
1165 var_ = var10;
1166 if (varonce) {
1167 var12 = varonce;
1168 } else {
1169 var13 = "Unrecognized value for option ";
1170 var14 = 30;
1171 var15 = string__NativeString__to_s_with_length(var13, var14);
1172 var12 = var15;
1173 varonce = var12;
1174 }
1175 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var12) /* add on <var_:Array[Object]>*/;
1176 var16 = self->attrs[COLOR_opts__Option___names].val; /* _names on <self:OptionEnum> */
1177 if (var16 == NULL) {
1178 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _names", "lib/opts.nit", 183);
1179 exit(1);
1180 }
1181 if (varonce17) {
1182 var18 = varonce17;
1183 } else {
1184 var19 = ", ";
1185 var20 = 2;
1186 var21 = string__NativeString__to_s_with_length(var19, var20);
1187 var18 = var21;
1188 varonce17 = var18;
1189 }
1190 var22 = ((val* (*)(val*, val*))(var16->class->vft[COLOR_string__Collection__join]))(var16, var18) /* join on <var16:Array[String]>*/;
1191 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var22) /* add on <var_:Array[Object]>*/;
1192 if (varonce23) {
1193 var24 = varonce23;
1194 } else {
1195 var25 = ".\n";
1196 var26 = 2;
1197 var27 = string__NativeString__to_s_with_length(var25, var26);
1198 var24 = var27;
1199 varonce23 = var24;
1200 }
1201 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var24) /* add on <var_:Array[Object]>*/;
1202 var28 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
1203 var_e = var28;
1204 var29 = NEW_array__Array(&type_array__Arraykernel__Object);
1205 var30 = 3;
1206 ((void (*)(val*, long))(var29->class->vft[COLOR_array__Array__with_capacity]))(var29, var30) /* with_capacity on <var29:Array[Object]>*/;
1207 CHECK_NEW_array__Array(var29);
1208 var_31 = var29;
1209 if (varonce32) {
1210 var33 = varonce32;
1211 } else {
1212 var34 = "Expected values are: ";
1213 var35 = 21;
1214 var36 = string__NativeString__to_s_with_length(var34, var35);
1215 var33 = var36;
1216 varonce32 = var33;
1217 }
1218 ((void (*)(val*, val*))(var_31->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_31, var33) /* add on <var_31:Array[Object]>*/;
1219 var37 = self->attrs[COLOR_opts__OptionEnum___values].val; /* _values on <self:OptionEnum> */
1220 if (var37 == NULL) {
1221 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _values", "lib/opts.nit", 184);
1222 exit(1);
1223 }
1224 if (varonce38) {
1225 var39 = varonce38;
1226 } else {
1227 var40 = ", ";
1228 var41 = 2;
1229 var42 = string__NativeString__to_s_with_length(var40, var41);
1230 var39 = var42;
1231 varonce38 = var39;
1232 }
1233 var43 = ((val* (*)(val*, val*))(var37->class->vft[COLOR_string__Collection__join]))(var37, var39) /* join on <var37:Array[String]>*/;
1234 ((void (*)(val*, val*))(var_31->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_31, var43) /* add on <var_31:Array[Object]>*/;
1235 if (varonce44) {
1236 var45 = varonce44;
1237 } else {
1238 var46 = ".";
1239 var47 = 1;
1240 var48 = string__NativeString__to_s_with_length(var46, var47);
1241 var45 = var48;
1242 varonce44 = var45;
1243 }
1244 ((void (*)(val*, val*))(var_31->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_31, var45) /* add on <var_31:Array[Object]>*/;
1245 var49 = ((val* (*)(val*))(var_31->class->vft[COLOR_string__Object__to_s]))(var_31) /* to_s on <var_31:Array[Object]>*/;
1246 var50 = ((val* (*)(val*, val*))(var_e->class->vft[COLOR_string__String___43d]))(var_e, var49) /* + on <var_e:String>*/;
1247 var_e = var50;
1248 var51 = self->attrs[COLOR_opts__Option___errors].val; /* _errors on <self:OptionEnum> */
1249 if (var51 == NULL) {
1250 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _errors", "lib/opts.nit", 185);
1251 exit(1);
1252 }
1253 ((void (*)(val*, val*))(var51->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var51, var_e) /* add on <var51:Array[String]>*/;
1254 } else {
1255 }
1256 var = var_id;
1257 goto RET_LABEL;
1258 RET_LABEL:;
1259 return var;
1260 }
1261 /* method opts#OptionEnum#convert for (self: Object, String): nullable Object */
1262 val* VIRTUAL_opts__OptionEnum__convert(val* self, val* p0) {
1263 val* var /* : nullable Object */;
1264 long var1 /* : Int */;
1265 val* var2 /* : nullable Object */;
1266 var1 = opts__OptionEnum__convert(self, p0);
1267 var2 = BOX_kernel__Int(var1); /* autobox from Int to nullable Object */
1268 var = var2;
1269 RET_LABEL:;
1270 return var;
1271 }
1272 /* method opts#OptionEnum#value_name for (self: OptionEnum): String */
1273 val* opts__OptionEnum__value_name(val* self) {
1274 val* var /* : String */;
1275 val* var1 /* : Array[String] */;
1276 val* var2 /* : nullable Object */;
1277 val* var3 /* : nullable Object */;
1278 long var4 /* : Int */;
1279 var1 = self->attrs[COLOR_opts__OptionEnum___values].val; /* _values on <self:OptionEnum> */
1280 if (var1 == NULL) {
1281 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _values", "lib/opts.nit", 190);
1282 exit(1);
1283 }
1284 var2 = ((val* (*)(val*))(self->class->vft[COLOR_opts__Option__value]))(self) /* value on <self:OptionEnum>*/;
1285 var4 = ((struct instance_kernel__Int*)var2)->value; /* autounbox from nullable Object to Int */;
1286 var3 = ((val* (*)(val*, long))(var1->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var1, var4) /* [] on <var1:Array[String]>*/;
1287 var = var3;
1288 goto RET_LABEL;
1289 RET_LABEL:;
1290 return var;
1291 }
1292 /* method opts#OptionEnum#value_name for (self: Object): String */
1293 val* VIRTUAL_opts__OptionEnum__value_name(val* self) {
1294 val* var /* : String */;
1295 val* var1 /* : String */;
1296 var1 = opts__OptionEnum__value_name(self);
1297 var = var1;
1298 RET_LABEL:;
1299 return var;
1300 }
1301 /* method opts#OptionEnum#pretty_default for (self: OptionEnum): String */
1302 val* opts__OptionEnum__pretty_default(val* self) {
1303 val* var /* : String */;
1304 val* var1 /* : nullable Object */;
1305 val* var2 /* : null */;
1306 short int var3 /* : Bool */;
1307 val* var4 /* : Array[Object] */;
1308 long var5 /* : Int */;
1309 val* var_ /* var : Array[Object] */;
1310 static val* varonce;
1311 val* var6 /* : String */;
1312 char* var7 /* : NativeString */;
1313 long var8 /* : Int */;
1314 val* var9 /* : String */;
1315 val* var10 /* : Array[String] */;
1316 val* var11 /* : nullable Object */;
1317 val* var12 /* : nullable Object */;
1318 long var13 /* : Int */;
1319 static val* varonce14;
1320 val* var15 /* : String */;
1321 char* var16 /* : NativeString */;
1322 long var17 /* : Int */;
1323 val* var18 /* : String */;
1324 val* var19 /* : String */;
1325 static val* varonce20;
1326 val* var21 /* : String */;
1327 char* var22 /* : NativeString */;
1328 long var23 /* : Int */;
1329 val* var24 /* : String */;
1330 var1 = ((val* (*)(val*))(self->class->vft[COLOR_opts__Option__default_value]))(self) /* default_value on <self:OptionEnum>*/;
1331 var2 = NULL;
1332 if (var1 == NULL) {
1333 var3 = 0; /* is null */
1334 } else {
1335 var3 = 1; /* arg is null and recv is not */
1336 }
1337 if (var3){
1338 var4 = NEW_array__Array(&type_array__Arraykernel__Object);
1339 var5 = 3;
1340 ((void (*)(val*, long))(var4->class->vft[COLOR_array__Array__with_capacity]))(var4, var5) /* with_capacity on <var4:Array[Object]>*/;
1341 CHECK_NEW_array__Array(var4);
1342 var_ = var4;
1343 if (varonce) {
1344 var6 = varonce;
1345 } else {
1346 var7 = " (";
1347 var8 = 2;
1348 var9 = string__NativeString__to_s_with_length(var7, var8);
1349 var6 = var9;
1350 varonce = var6;
1351 }
1352 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var6) /* add on <var_:Array[Object]>*/;
1353 var10 = self->attrs[COLOR_opts__OptionEnum___values].val; /* _values on <self:OptionEnum> */
1354 if (var10 == NULL) {
1355 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _values", "lib/opts.nit", 195);
1356 exit(1);
1357 }
1358 var11 = ((val* (*)(val*))(self->class->vft[COLOR_opts__Option__default_value]))(self) /* default_value on <self:OptionEnum>*/;
1359 if (var11 == NULL) {
1360 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/opts.nit", 195);
1361 exit(1);
1362 }
1363 var13 = ((struct instance_kernel__Int*)var11)->value; /* autounbox from nullable Int to Int */;
1364 var12 = ((val* (*)(val*, long))(var10->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var10, var13) /* [] on <var10:Array[String]>*/;
1365 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var12) /* add on <var_:Array[Object]>*/;
1366 if (varonce14) {
1367 var15 = varonce14;
1368 } else {
1369 var16 = ")";
1370 var17 = 1;
1371 var18 = string__NativeString__to_s_with_length(var16, var17);
1372 var15 = var18;
1373 varonce14 = var15;
1374 }
1375 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var15) /* add on <var_:Array[Object]>*/;
1376 var19 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
1377 var = var19;
1378 goto RET_LABEL;
1379 } else {
1380 if (varonce20) {
1381 var21 = varonce20;
1382 } else {
1383 var22 = "";
1384 var23 = 0;
1385 var24 = string__NativeString__to_s_with_length(var22, var23);
1386 var21 = var24;
1387 varonce20 = var21;
1388 }
1389 var = var21;
1390 goto RET_LABEL;
1391 }
1392 RET_LABEL:;
1393 return var;
1394 }
1395 /* method opts#OptionEnum#pretty_default for (self: Object): String */
1396 val* VIRTUAL_opts__OptionEnum__pretty_default(val* self) {
1397 val* var /* : String */;
1398 val* var1 /* : String */;
1399 var1 = opts__OptionEnum__pretty_default(self);
1400 var = var1;
1401 RET_LABEL:;
1402 return var;
1403 }
1404 /* method opts#OptionInt#init for (self: OptionInt, String, Int, Array[String]) */
1405 void opts__OptionInt__init(val* self, val* p0, long p1, val* p2) {
1406 val* var_help /* var help: String */;
1407 long var_default /* var default: Int */;
1408 val* var_names /* var names: Array[String] */;
1409 val* var /* : nullable Object */;
1410 var_help = p0;
1411 var_default = p1;
1412 var_names = p2;
1413 var = BOX_kernel__Int(var_default); /* autobox from Int to nullable Object */
1414 ((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_opts__OptionParameter__init_opt]))(self, var_help, var, var_names) /* init_opt on <self:OptionInt>*/;
1415 RET_LABEL:;
1416 }
1417 /* method opts#OptionInt#init for (self: Object, String, Int, Array[String]) */
1418 void VIRTUAL_opts__OptionInt__init(val* self, val* p0, long p1, val* p2) {
1419 opts__OptionInt__init(self, p0, p1, p2);
1420 RET_LABEL:;
1421 }
1422 /* method opts#OptionInt#convert for (self: OptionInt, String): Int */
1423 long opts__OptionInt__convert(val* self, val* p0) {
1424 long var /* : Int */;
1425 val* var_str /* var str: String */;
1426 long var1 /* : Int */;
1427 var_str = p0;
1428 var1 = ((long (*)(val*))(var_str->class->vft[COLOR_string__AbstractString__to_i]))(var_str) /* to_i on <var_str:String>*/;
1429 var = var1;
1430 goto RET_LABEL;
1431 RET_LABEL:;
1432 return var;
1433 }
1434 /* method opts#OptionInt#convert for (self: Object, String): nullable Object */
1435 val* VIRTUAL_opts__OptionInt__convert(val* self, val* p0) {
1436 val* var /* : nullable Object */;
1437 long var1 /* : Int */;
1438 val* var2 /* : nullable Object */;
1439 var1 = opts__OptionInt__convert(self, p0);
1440 var2 = BOX_kernel__Int(var1); /* autobox from Int to nullable Object */
1441 var = var2;
1442 RET_LABEL:;
1443 return var;
1444 }
1445 /* method opts#OptionArray#init for (self: OptionArray, String, Array[String]) */
1446 void opts__OptionArray__init(val* self, val* p0, val* p1) {
1447 val* var_help /* var help: String */;
1448 val* var_names /* var names: Array[String] */;
1449 val* var /* : Array[String] */;
1450 val* var1 /* : Array[String] */;
1451 short int var2 /* : Bool */;
1452 int cltype;
1453 int idtype;
1454 const struct type* type_struct;
1455 var_help = p0;
1456 var_names = p1;
1457 var = NEW_array__Array(&type_array__Arraystring__String);
1458 ((void (*)(val*))(var->class->vft[COLOR_array__Array__init]))(var) /* init on <var:Array[String]>*/;
1459 CHECK_NEW_array__Array(var);
1460 self->attrs[COLOR_opts__OptionArray___values].val = var; /* _values on <self:OptionArray> */
1461 var1 = self->attrs[COLOR_opts__OptionArray___values].val; /* _values on <self:OptionArray> */
1462 if (var1 == NULL) {
1463 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _values", "lib/opts.nit", 218);
1464 exit(1);
1465 }
1466 /* <var1:Array[String]> isa nullable VALUE */
1467 type_struct = self->type->resolution_table->types[COLOR_opts__Option_VTVALUE];
1468 cltype = type_struct->color;
1469 idtype = type_struct->id;
1470 if(cltype >= var1->type->table_size) {
1471 var2 = 0;
1472 } else {
1473 var2 = var1->type->type_table[cltype] == idtype;
1474 }
1475 if (!var2) {
1476 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/opts.nit", 218);
1477 exit(1);
1478 }
1479 ((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_opts__OptionParameter__init_opt]))(self, var_help, var1, var_names) /* init_opt on <self:OptionArray>*/;
1480 RET_LABEL:;
1481 }
1482 /* method opts#OptionArray#init for (self: Object, String, Array[String]) */
1483 void VIRTUAL_opts__OptionArray__init(val* self, val* p0, val* p1) {
1484 opts__OptionArray__init(self, p0, p1);
1485 RET_LABEL:;
1486 }
1487 /* method opts#OptionArray#convert for (self: OptionArray, String): Array[String] */
1488 val* opts__OptionArray__convert(val* self, val* p0) {
1489 val* var /* : Array[String] */;
1490 val* var_str /* var str: String */;
1491 val* var1 /* : Array[String] */;
1492 val* var2 /* : Array[String] */;
1493 short int var3 /* : Bool */;
1494 int cltype;
1495 int idtype;
1496 const struct type* type_struct;
1497 var_str = p0;
1498 var1 = self->attrs[COLOR_opts__OptionArray___values].val; /* _values on <self:OptionArray> */
1499 if (var1 == NULL) {
1500 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _values", "lib/opts.nit", 224);
1501 exit(1);
1502 }
1503 ((void (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var1, var_str) /* add on <var1:Array[String]>*/;
1504 var2 = self->attrs[COLOR_opts__OptionArray___values].val; /* _values on <self:OptionArray> */
1505 if (var2 == NULL) {
1506 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _values", "lib/opts.nit", 225);
1507 exit(1);
1508 }
1509 /* <var2:Array[String]> isa VALUE */
1510 type_struct = self->type->resolution_table->types[COLOR_opts__Option_VTVALUE];
1511 cltype = type_struct->color;
1512 idtype = type_struct->id;
1513 if(cltype >= var2->type->table_size) {
1514 var3 = 0;
1515 } else {
1516 var3 = var2->type->type_table[cltype] == idtype;
1517 }
1518 if (!var3) {
1519 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/opts.nit", 225);
1520 exit(1);
1521 }
1522 var = var2;
1523 goto RET_LABEL;
1524 RET_LABEL:;
1525 return var;
1526 }
1527 /* method opts#OptionArray#convert for (self: Object, String): nullable Object */
1528 val* VIRTUAL_opts__OptionArray__convert(val* self, val* p0) {
1529 val* var /* : nullable Object */;
1530 val* var1 /* : Array[String] */;
1531 var1 = opts__OptionArray__convert(self, p0);
1532 var = var1;
1533 RET_LABEL:;
1534 return var;
1535 }
1536 /* method opts#OptionContext#options for (self: OptionContext): Array[Option] */
1537 val* opts__OptionContext__options(val* self) {
1538 val* var /* : Array[Option] */;
1539 val* var1 /* : Array[Option] */;
1540 var1 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:OptionContext> */
1541 if (var1 == NULL) {
1542 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _options", "lib/opts.nit", 230);
1543 exit(1);
1544 }
1545 var = var1;
1546 RET_LABEL:;
1547 return var;
1548 }
1549 /* method opts#OptionContext#options for (self: Object): Array[Option] */
1550 val* VIRTUAL_opts__OptionContext__options(val* self) {
1551 val* var /* : Array[Option] */;
1552 val* var1 /* : Array[Option] */;
1553 var1 = opts__OptionContext__options(self);
1554 var = var1;
1555 RET_LABEL:;
1556 return var;
1557 }
1558 /* method opts#OptionContext#rest for (self: OptionContext): Array[String] */
1559 val* opts__OptionContext__rest(val* self) {
1560 val* var /* : Array[String] */;
1561 val* var1 /* : Array[String] */;
1562 var1 = self->attrs[COLOR_opts__OptionContext___rest].val; /* _rest on <self:OptionContext> */
1563 if (var1 == NULL) {
1564 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _rest", "lib/opts.nit", 231);
1565 exit(1);
1566 }
1567 var = var1;
1568 RET_LABEL:;
1569 return var;
1570 }
1571 /* method opts#OptionContext#rest for (self: Object): Array[String] */
1572 val* VIRTUAL_opts__OptionContext__rest(val* self) {
1573 val* var /* : Array[String] */;
1574 val* var1 /* : Array[String] */;
1575 var1 = opts__OptionContext__rest(self);
1576 var = var1;
1577 RET_LABEL:;
1578 return var;
1579 }
1580 /* method opts#OptionContext#errors for (self: OptionContext): Array[String] */
1581 val* opts__OptionContext__errors(val* self) {
1582 val* var /* : Array[String] */;
1583 val* var1 /* : Array[String] */;
1584 var1 = self->attrs[COLOR_opts__OptionContext___errors].val; /* _errors on <self:OptionContext> */
1585 if (var1 == NULL) {
1586 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _errors", "lib/opts.nit", 232);
1587 exit(1);
1588 }
1589 var = var1;
1590 RET_LABEL:;
1591 return var;
1592 }
1593 /* method opts#OptionContext#errors for (self: Object): Array[String] */
1594 val* VIRTUAL_opts__OptionContext__errors(val* self) {
1595 val* var /* : Array[String] */;
1596 val* var1 /* : Array[String] */;
1597 var1 = opts__OptionContext__errors(self);
1598 var = var1;
1599 RET_LABEL:;
1600 return var;
1601 }
1602 /* method opts#OptionContext#usage for (self: OptionContext) */
1603 void opts__OptionContext__usage(val* self) {
1604 long var /* : Int */;
1605 long var_lmax /* var lmax: Int */;
1606 val* var1 /* : Array[Option] */;
1607 val* var2 /* : Iterator[nullable Object] */;
1608 short int var3 /* : Bool */;
1609 val* var4 /* : nullable Object */;
1610 val* var_i /* var i: Option */;
1611 long var5 /* : Int */;
1612 long var_l /* var l: Int */;
1613 val* var6 /* : Array[String] */;
1614 val* var7 /* : Iterator[nullable Object] */;
1615 short int var8 /* : Bool */;
1616 val* var9 /* : nullable Object */;
1617 val* var_n /* var n: String */;
1618 long var10 /* : Int */;
1619 long var11 /* : Int */;
1620 long var12 /* : Int */;
1621 long var14 /* : Int */;
1622 long var15 /* : Int */;
1623 long var17 /* : Int */;
1624 short int var18 /* : Bool */;
1625 short int var20 /* : Bool */;
1626 int cltype;
1627 int idtype;
1628 short int var21 /* : Bool */;
1629 val* var23 /* : Array[Option] */;
1630 val* var24 /* : Iterator[nullable Object] */;
1631 short int var25 /* : Bool */;
1632 val* var26 /* : nullable Object */;
1633 val* var_i27 /* var i: Option */;
1634 val* var28 /* : String */;
1635 var = 1;
1636 var_lmax = var;
1637 var1 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:OptionContext> */
1638 if (var1 == NULL) {
1639 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _options", "lib/opts.nit", 239);
1640 exit(1);
1641 }
1642 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Collection__iterator]))(var1) /* iterator on <var1:Array[Option]>*/;
1643 for(;;) {
1644 var3 = ((short int (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var2) /* is_ok on <var2:Iterator[nullable Object]>*/;
1645 if(!var3) break;
1646 var4 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__item]))(var2) /* item on <var2:Iterator[nullable Object]>*/;
1647 var_i = var4;
1648 var5 = 3;
1649 var_l = var5;
1650 var6 = ((val* (*)(val*))(var_i->class->vft[COLOR_opts__Option__names]))(var_i) /* names on <var_i:Option>*/;
1651 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Collection__iterator]))(var6) /* iterator on <var6:Array[String]>*/;
1652 for(;;) {
1653 var8 = ((short int (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var7) /* is_ok on <var7:Iterator[nullable Object]>*/;
1654 if(!var8) break;
1655 var9 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__item]))(var7) /* item on <var7:Iterator[nullable Object]>*/;
1656 var_n = var9;
1657 var10 = ((long (*)(val*))(var_n->class->vft[COLOR_abstract_collection__Collection__length]))(var_n) /* length on <var_n:String>*/;
1658 var11 = 2;
1659 { /* Inline kernel#Int#+ (var10,var11) */
1660 var14 = var10 + var11;
1661 var12 = var14;
1662 goto RET_LABEL13;
1663 RET_LABEL13:(void)0;
1664 }
1665 { /* Inline kernel#Int#+ (var_l,var12) */
1666 var17 = var_l + var12;
1667 var15 = var17;
1668 goto RET_LABEL16;
1669 RET_LABEL16:(void)0;
1670 }
1671 var_l = var15;
1672 CONTINUE_label: (void)0;
1673 ((void (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__next]))(var7) /* next on <var7:Iterator[nullable Object]>*/;
1674 }
1675 BREAK_label: (void)0;
1676 { /* Inline kernel#Int#< (var_lmax,var_l) */
1677 /* Covariant cast for argument 0 (i) <var_l:Int> isa OTHER */
1678 /* <var_l:Int> isa OTHER */
1679 var20 = 1; /* easy <var_l:Int> isa OTHER*/
1680 if (!var20) {
1681 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 257);
1682 exit(1);
1683 }
1684 var21 = var_lmax < var_l;
1685 var18 = var21;
1686 goto RET_LABEL19;
1687 RET_LABEL19:(void)0;
1688 }
1689 if (var18){
1690 var_lmax = var_l;
1691 } else {
1692 }
1693 CONTINUE_label22: (void)0;
1694 ((void (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__next]))(var2) /* next on <var2:Iterator[nullable Object]>*/;
1695 }
1696 BREAK_label22: (void)0;
1697 var23 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:OptionContext> */
1698 if (var23 == NULL) {
1699 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _options", "lib/opts.nit", 247);
1700 exit(1);
1701 }
1702 var24 = ((val* (*)(val*))(var23->class->vft[COLOR_abstract_collection__Collection__iterator]))(var23) /* iterator on <var23:Array[Option]>*/;
1703 for(;;) {
1704 var25 = ((short int (*)(val*))(var24->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var24) /* is_ok on <var24:Iterator[nullable Object]>*/;
1705 if(!var25) break;
1706 var26 = ((val* (*)(val*))(var24->class->vft[COLOR_abstract_collection__Iterator__item]))(var24) /* item on <var24:Iterator[nullable Object]>*/;
1707 var_i27 = var26;
1708 var28 = ((val* (*)(val*, long))(var_i27->class->vft[COLOR_opts__Option__pretty]))(var_i27, var_lmax) /* pretty on <var_i27:Option>*/;
1709 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var28) /* print on <self:OptionContext>*/;
1710 CONTINUE_label29: (void)0;
1711 ((void (*)(val*))(var24->class->vft[COLOR_abstract_collection__Iterator__next]))(var24) /* next on <var24:Iterator[nullable Object]>*/;
1712 }
1713 BREAK_label29: (void)0;
1714 RET_LABEL:;
1715 }
1716 /* method opts#OptionContext#usage for (self: Object) */
1717 void VIRTUAL_opts__OptionContext__usage(val* self) {
1718 opts__OptionContext__usage(self);
1719 RET_LABEL:;
1720 }
1721 /* method opts#OptionContext#parse for (self: OptionContext, Collection[String]) */
1722 void opts__OptionContext__parse(val* self, val* p0) {
1723 val* var_argv /* var argv: Collection[String] */;
1724 val* var /* : Iterator[nullable Object] */;
1725 val* var_it /* var it: Iterator[String] */;
1726 var_argv = p0;
1727 var = ((val* (*)(val*))(var_argv->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_argv) /* iterator on <var_argv:Collection[String]>*/;
1728 var_it = var;
1729 ((void (*)(val*, val*))(self->class->vft[COLOR_opts__OptionContext__parse_intern]))(self, var_it) /* parse_intern on <self:OptionContext>*/;
1730 RET_LABEL:;
1731 }
1732 /* method opts#OptionContext#parse for (self: Object, Collection[String]) */
1733 void VIRTUAL_opts__OptionContext__parse(val* self, val* p0) {
1734 opts__OptionContext__parse(self, p0);
1735 RET_LABEL:;
1736 }
1737 /* method opts#OptionContext#parse_intern for (self: OptionContext, Iterator[String]) */
1738 void opts__OptionContext__parse_intern(val* self, val* p0) {
1739 val* var_it /* var it: Iterator[String] */;
1740 short int var /* : Bool */;
1741 short int var_parseargs /* var parseargs: Bool */;
1742 val* var1 /* : Array[String] */;
1743 val* var_rest /* var rest: Array[String] */;
1744 short int var2 /* : Bool */;
1745 short int var_ /* var : Bool */;
1746 short int var3 /* : Bool */;
1747 val* var4 /* : nullable Object */;
1748 val* var_str /* var str: String */;
1749 static val* varonce;
1750 val* var5 /* : String */;
1751 char* var6 /* : NativeString */;
1752 long var7 /* : Int */;
1753 val* var8 /* : String */;
1754 short int var9 /* : Bool */;
1755 val* var10 /* : Array[nullable Object] */;
1756 short int var11 /* : Bool */;
1757 short int var12 /* : Bool */;
1758 char var13 /* : Char */;
1759 long var14 /* : Int */;
1760 val* var15 /* : nullable Object */;
1761 long var16 /* : Int */;
1762 short int var17 /* : Bool */;
1763 short int var19 /* : Bool */;
1764 short int var_20 /* var : Bool */;
1765 long var21 /* : Int */;
1766 long var22 /* : Int */;
1767 short int var23 /* : Bool */;
1768 short int var25 /* : Bool */;
1769 int cltype;
1770 int idtype;
1771 short int var26 /* : Bool */;
1772 short int var27 /* : Bool */;
1773 short int var_next_called /* var next_called: Bool */;
1774 val* var28 /* : Range[Int] */;
1775 long var29 /* : Int */;
1776 long var30 /* : Int */;
1777 val* var31 /* : Discrete */;
1778 val* var32 /* : Discrete */;
1779 val* var33 /* : Iterator[nullable Object] */;
1780 short int var34 /* : Bool */;
1781 val* var35 /* : nullable Object */;
1782 long var_i /* var i: Int */;
1783 long var36 /* : Int */;
1784 static val* varonce37;
1785 val* var38 /* : String */;
1786 char* var39 /* : NativeString */;
1787 long var40 /* : Int */;
1788 val* var41 /* : String */;
1789 val* var42 /* : nullable Object */;
1790 val* var43 /* : String */;
1791 char var44 /* : Char */;
1792 val* var45 /* : String */;
1793 val* var_short_opt /* var short_opt: String */;
1794 val* var46 /* : Map[String, Option] */;
1795 short int var47 /* : Bool */;
1796 val* var48 /* : Map[String, Option] */;
1797 val* var49 /* : nullable Object */;
1798 val* var_option /* var option: Option */;
1799 short int var50 /* : Bool */;
1800 int cltype51;
1801 int idtype52;
1802 short int var53 /* : Bool */;
1803 short int var54 /* : Bool */;
1804 val* var55 /* : Map[String, Option] */;
1805 short int var56 /* : Bool */;
1806 val* var57 /* : Map[String, Option] */;
1807 val* var58 /* : nullable Object */;
1808 val* var_opt /* var opt: Option */;
1809 val* var59 /* : nullable Object */;
1810 val* var61 /* : Array[Option] */;
1811 val* var62 /* : Iterator[nullable Object] */;
1812 short int var63 /* : Bool */;
1813 val* var64 /* : nullable Object */;
1814 val* var_opt65 /* var opt: Option */;
1815 short int var66 /* : Bool */;
1816 short int var67 /* : Bool */;
1817 short int var_68 /* var : Bool */;
1818 short int var69 /* : Bool */;
1819 short int var70 /* : Bool */;
1820 val* var71 /* : Array[String] */;
1821 static val* varonce72;
1822 val* var73 /* : String */;
1823 char* var74 /* : NativeString */;
1824 long var75 /* : Int */;
1825 val* var76 /* : String */;
1826 val* var77 /* : Array[String] */;
1827 static val* varonce78;
1828 val* var79 /* : String */;
1829 char* var80 /* : NativeString */;
1830 long var81 /* : Int */;
1831 val* var82 /* : String */;
1832 val* var83 /* : String */;
1833 static val* varonce84;
1834 val* var85 /* : String */;
1835 char* var86 /* : NativeString */;
1836 long var87 /* : Int */;
1837 val* var88 /* : String */;
1838 val* var89 /* : Array[Object] */;
1839 long var90 /* : Int */;
1840 val* var91 /* : NativeArray[Object] */;
1841 val* var92 /* : String */;
1842 var_it = p0;
1843 var = 1;
1844 var_parseargs = var;
1845 ((void (*)(val*))(self->class->vft[COLOR_opts__OptionContext__build]))(self) /* build on <self:OptionContext>*/;
1846 var1 = self->attrs[COLOR_opts__OptionContext___rest].val; /* _rest on <self:OptionContext> */
1847 if (var1 == NULL) {
1848 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _rest", "lib/opts.nit", 263);
1849 exit(1);
1850 }
1851 var_rest = var1;
1852 for(;;) {
1853 var_ = var_parseargs;
1854 if (var_parseargs){
1855 var3 = ((short int (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_it) /* is_ok on <var_it:Iterator[String]>*/;
1856 var2 = var3;
1857 } else {
1858 var2 = var_;
1859 }
1860 if (!var2) break;
1861 var4 = ((val* (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__item]))(var_it) /* item on <var_it:Iterator[String]>*/;
1862 var_str = var4;
1863 if (varonce) {
1864 var5 = varonce;
1865 } else {
1866 var6 = "--";
1867 var7 = 2;
1868 var8 = string__NativeString__to_s_with_length(var6, var7);
1869 var5 = var8;
1870 varonce = var5;
1871 }
1872 var9 = ((short int (*)(val*, val*))(var_str->class->vft[COLOR_kernel__Object___61d_61d]))(var_str, var5) /* == on <var_str:String>*/;
1873 if (var9){
1874 ((void (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__next]))(var_it) /* next on <var_it:Iterator[String]>*/;
1875 var10 = ((val* (*)(val*))(var_it->class->vft[COLOR_array__Iterator__to_a]))(var_it) /* to_a on <var_it:Iterator[String]>*/;
1876 ((void (*)(val*, val*))(var_rest->class->vft[COLOR_abstract_collection__SimpleCollection__add_all]))(var_rest, var10) /* add_all on <var_rest:Array[String]>*/;
1877 var11 = 0;
1878 var_parseargs = var11;
1879 } else {
1880 var13 = '-';
1881 var15 = BOX_kernel__Char(var13); /* autobox from Char to nullable Object */
1882 var14 = ((long (*)(val*, val*))(var_str->class->vft[COLOR_array__AbstractArrayRead__last_index_of]))(var_str, var15) /* last_index_of on <var_str:String>*/;
1883 var16 = 0;
1884 { /* Inline kernel#Int#== (var14,var16) */
1885 var19 = var14 == var16;
1886 var17 = var19;
1887 goto RET_LABEL18;
1888 RET_LABEL18:(void)0;
1889 }
1890 var_20 = var17;
1891 if (var17){
1892 var21 = ((long (*)(val*))(var_str->class->vft[COLOR_abstract_collection__Collection__length]))(var_str) /* length on <var_str:String>*/;
1893 var22 = 2;
1894 { /* Inline kernel#Int#> (var21,var22) */
1895 /* Covariant cast for argument 0 (i) <var22:Int> isa OTHER */
1896 /* <var22:Int> isa OTHER */
1897 var25 = 1; /* easy <var22:Int> isa OTHER*/
1898 if (!var25) {
1899 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259);
1900 exit(1);
1901 }
1902 var26 = var21 > var22;
1903 var23 = var26;
1904 goto RET_LABEL24;
1905 RET_LABEL24:(void)0;
1906 }
1907 var12 = var23;
1908 } else {
1909 var12 = var_20;
1910 }
1911 if (var12){
1912 var27 = 0;
1913 var_next_called = var27;
1914 var28 = NEW_range__Range(&type_range__Rangekernel__Int);
1915 var29 = 1;
1916 var30 = ((long (*)(val*))(var_str->class->vft[COLOR_abstract_collection__Collection__length]))(var_str) /* length on <var_str:String>*/;
1917 var31 = BOX_kernel__Int(var29); /* autobox from Int to Discrete */
1918 var32 = BOX_kernel__Int(var30); /* autobox from Int to Discrete */
1919 ((void (*)(val*, val*, val*))(var28->class->vft[COLOR_range__Range__init]))(var28, var31, var32) /* init on <var28:Range[Int]>*/;
1920 CHECK_NEW_range__Range(var28);
1921 var33 = ((val* (*)(val*))(var28->class->vft[COLOR_abstract_collection__Collection__iterator]))(var28) /* iterator on <var28:Range[Int]>*/;
1922 for(;;) {
1923 var34 = ((short int (*)(val*))(var33->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var33) /* is_ok on <var33:Iterator[nullable Object]>*/;
1924 if(!var34) break;
1925 var35 = ((val* (*)(val*))(var33->class->vft[COLOR_abstract_collection__Iterator__item]))(var33) /* item on <var33:Iterator[nullable Object]>*/;
1926 var36 = ((struct instance_kernel__Int*)var35)->value; /* autounbox from nullable Object to Int */;
1927 var_i = var36;
1928 if (varonce37) {
1929 var38 = varonce37;
1930 } else {
1931 var39 = "-";
1932 var40 = 1;
1933 var41 = string__NativeString__to_s_with_length(var39, var40);
1934 var38 = var41;
1935 varonce37 = var38;
1936 }
1937 var42 = ((val* (*)(val*, long))(var_str->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_str, var_i) /* [] on <var_str:String>*/;
1938 var44 = ((struct instance_kernel__Char*)var42)->value; /* autounbox from nullable Object to Char */;
1939 var43 = string__Char__to_s(var44);
1940 var45 = ((val* (*)(val*, val*))(var38->class->vft[COLOR_string__String___43d]))(var38, var43) /* + on <var38:String>*/;
1941 var_short_opt = var45;
1942 var46 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on <self:OptionContext> */
1943 if (var46 == NULL) {
1944 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _optmap", "lib/opts.nit", 277);
1945 exit(1);
1946 }
1947 var47 = ((short int (*)(val*, val*))(var46->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var46, var_short_opt) /* has_key on <var46:Map[String, Option]>*/;
1948 if (var47){
1949 var48 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on <self:OptionContext> */
1950 if (var48 == NULL) {
1951 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _optmap", "lib/opts.nit", 278);
1952 exit(1);
1953 }
1954 var49 = ((val* (*)(val*, val*))(var48->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var48, var_short_opt) /* [] on <var48:Map[String, Option]>*/;
1955 var_option = var49;
1956 /* <var_option:Option> isa OptionParameter */
1957 cltype51 = type_opts__OptionParameter.color;
1958 idtype52 = type_opts__OptionParameter.id;
1959 if(cltype51 >= var_option->type->table_size) {
1960 var50 = 0;
1961 } else {
1962 var50 = var_option->type->type_table[cltype51] == idtype52;
1963 }
1964 if (var50){
1965 ((void (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__next]))(var_it) /* next on <var_it:Iterator[String]>*/;
1966 var53 = 1;
1967 var_next_called = var53;
1968 } else {
1969 }
1970 ((void (*)(val*, val*))(var_option->class->vft[COLOR_opts__Option__read_param]))(var_option, var_it) /* read_param on <var_option:Option>*/;
1971 } else {
1972 }
1973 CONTINUE_label: (void)0;
1974 ((void (*)(val*))(var33->class->vft[COLOR_abstract_collection__Iterator__next]))(var33) /* next on <var33:Iterator[nullable Object]>*/;
1975 }
1976 BREAK_label: (void)0;
1977 var54 = !var_next_called;
1978 if (var54){
1979 ((void (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__next]))(var_it) /* next on <var_it:Iterator[String]>*/;
1980 } else {
1981 }
1982 } else {
1983 var55 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on <self:OptionContext> */
1984 if (var55 == NULL) {
1985 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _optmap", "lib/opts.nit", 288);
1986 exit(1);
1987 }
1988 var56 = ((short int (*)(val*, val*))(var55->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var55, var_str) /* has_key on <var55:Map[String, Option]>*/;
1989 if (var56){
1990 var57 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on <self:OptionContext> */
1991 if (var57 == NULL) {
1992 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _optmap", "lib/opts.nit", 289);
1993 exit(1);
1994 }
1995 var58 = ((val* (*)(val*, val*))(var57->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var57, var_str) /* [] on <var57:Map[String, Option]>*/;
1996 var_opt = var58;
1997 ((void (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__next]))(var_it) /* next on <var_it:Iterator[String]>*/;
1998 ((void (*)(val*, val*))(var_opt->class->vft[COLOR_opts__Option__read_param]))(var_opt, var_it) /* read_param on <var_opt:Option>*/;
1999 } else {
2000 var59 = ((val* (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__item]))(var_it) /* item on <var_it:Iterator[String]>*/;
2001 ((void (*)(val*, val*))(var_rest->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_rest, var59) /* add on <var_rest:Array[String]>*/;
2002 ((void (*)(val*))(var_it->class->vft[COLOR_abstract_collection__Iterator__next]))(var_it) /* next on <var_it:Iterator[String]>*/;
2003 }
2004 }
2005 }
2006 CONTINUE_label60: (void)0;
2007 }
2008 BREAK_label60: (void)0;
2009 var61 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:OptionContext> */
2010 if (var61 == NULL) {
2011 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _options", "lib/opts.nit", 300);
2012 exit(1);
2013 }
2014 var62 = ((val* (*)(val*))(var61->class->vft[COLOR_abstract_collection__Collection__iterator]))(var61) /* iterator on <var61:Array[Option]>*/;
2015 for(;;) {
2016 var63 = ((short int (*)(val*))(var62->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var62) /* is_ok on <var62:Iterator[nullable Object]>*/;
2017 if(!var63) break;
2018 var64 = ((val* (*)(val*))(var62->class->vft[COLOR_abstract_collection__Iterator__item]))(var62) /* item on <var62:Iterator[nullable Object]>*/;
2019 var_opt65 = var64;
2020 var67 = ((short int (*)(val*))(var_opt65->class->vft[COLOR_opts__Option__mandatory]))(var_opt65) /* mandatory on <var_opt65:Option>*/;
2021 var_68 = var67;
2022 if (var67){
2023 var69 = ((short int (*)(val*))(var_opt65->class->vft[COLOR_opts__Option__read]))(var_opt65) /* read on <var_opt65:Option>*/;
2024 var70 = !var69;
2025 var66 = var70;
2026 } else {
2027 var66 = var_68;
2028 }
2029 if (var66){
2030 var71 = self->attrs[COLOR_opts__OptionContext___errors].val; /* _errors on <self:OptionContext> */
2031 if (var71 == NULL) {
2032 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _errors", "lib/opts.nit", 302);
2033 exit(1);
2034 }
2035 if (varonce72) {
2036 var73 = varonce72;
2037 } else {
2038 var74 = "Mandatory option ";
2039 var75 = 17;
2040 var76 = string__NativeString__to_s_with_length(var74, var75);
2041 var73 = var76;
2042 varonce72 = var73;
2043 }
2044 var77 = ((val* (*)(val*))(var_opt65->class->vft[COLOR_opts__Option__names]))(var_opt65) /* names on <var_opt65:Option>*/;
2045 if (varonce78) {
2046 var79 = varonce78;
2047 } else {
2048 var80 = ", ";
2049 var81 = 2;
2050 var82 = string__NativeString__to_s_with_length(var80, var81);
2051 var79 = var82;
2052 varonce78 = var79;
2053 }
2054 var83 = ((val* (*)(val*, val*))(var77->class->vft[COLOR_string__Collection__join]))(var77, var79) /* join on <var77:Array[String]>*/;
2055 if (varonce84) {
2056 var85 = varonce84;
2057 } else {
2058 var86 = " not found.";
2059 var87 = 11;
2060 var88 = string__NativeString__to_s_with_length(var86, var87);
2061 var85 = var88;
2062 varonce84 = var85;
2063 }
2064 var89 = NEW_array__Array(&type_array__Arraykernel__Object);
2065 { /* var89 = array_instance Array[Object] */
2066 var90 = 3;
2067 var91 = NEW_array__NativeArray(var90, &type_array__NativeArraykernel__Object);
2068 ((struct instance_array__NativeArray*)var91)->values[0] = (val*) var73;
2069 ((struct instance_array__NativeArray*)var91)->values[1] = (val*) var83;
2070 ((struct instance_array__NativeArray*)var91)->values[2] = (val*) var85;
2071 ((void (*)(val*, val*, long))(var89->class->vft[COLOR_array__Array__with_native]))(var89, var91, var90) /* with_native on <var89:Array[Object]>*/;
2072 CHECK_NEW_array__Array(var89);
2073 }
2074 var92 = ((val* (*)(val*))(var89->class->vft[COLOR_string__Object__to_s]))(var89) /* to_s on <var89:Array[Object]>*/;
2075 ((void (*)(val*, val*))(var71->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var71, var92) /* add on <var71:Array[String]>*/;
2076 } else {
2077 }
2078 CONTINUE_label93: (void)0;
2079 ((void (*)(val*))(var62->class->vft[COLOR_abstract_collection__Iterator__next]))(var62) /* next on <var62:Iterator[nullable Object]>*/;
2080 }
2081 BREAK_label93: (void)0;
2082 RET_LABEL:;
2083 }
2084 /* method opts#OptionContext#parse_intern for (self: Object, Iterator[String]) */
2085 void VIRTUAL_opts__OptionContext__parse_intern(val* self, val* p0) {
2086 opts__OptionContext__parse_intern(self, p0);
2087 RET_LABEL:;
2088 }
2089 /* method opts#OptionContext#add_option for (self: OptionContext, Array[Option]) */
2090 void opts__OptionContext__add_option(val* self, val* p0) {
2091 val* var_opts /* var opts: Array[Option] */;
2092 val* var /* : Iterator[nullable Object] */;
2093 short int var1 /* : Bool */;
2094 val* var2 /* : nullable Object */;
2095 val* var_opt /* var opt: Option */;
2096 val* var3 /* : Array[Option] */;
2097 var_opts = p0;
2098 var = ((val* (*)(val*))(var_opts->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_opts) /* iterator on <var_opts:Array[Option]>*/;
2099 for(;;) {
2100 var1 = ((short int (*)(val*))(var->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var) /* is_ok on <var:Iterator[nullable Object]>*/;
2101 if(!var1) break;
2102 var2 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_collection__Iterator__item]))(var) /* item on <var:Iterator[nullable Object]>*/;
2103 var_opt = var2;
2104 var3 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:OptionContext> */
2105 if (var3 == NULL) {
2106 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _options", "lib/opts.nit", 310);
2107 exit(1);
2108 }
2109 ((void (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var3, var_opt) /* add on <var3:Array[Option]>*/;
2110 CONTINUE_label: (void)0;
2111 ((void (*)(val*))(var->class->vft[COLOR_abstract_collection__Iterator__next]))(var) /* next on <var:Iterator[nullable Object]>*/;
2112 }
2113 BREAK_label: (void)0;
2114 RET_LABEL:;
2115 }
2116 /* method opts#OptionContext#add_option for (self: Object, Array[Option]) */
2117 void VIRTUAL_opts__OptionContext__add_option(val* self, val* p0) {
2118 opts__OptionContext__add_option(self, p0);
2119 RET_LABEL:;
2120 }
2121 /* method opts#OptionContext#init for (self: OptionContext) */
2122 void opts__OptionContext__init(val* self) {
2123 val* var /* : Array[Option] */;
2124 val* var1 /* : HashMap[String, Option] */;
2125 val* var2 /* : Array[String] */;
2126 val* var3 /* : Array[String] */;
2127 var = NEW_array__Array(&type_array__Arrayopts__Option);
2128 ((void (*)(val*))(var->class->vft[COLOR_array__Array__init]))(var) /* init on <var:Array[Option]>*/;
2129 CHECK_NEW_array__Array(var);
2130 self->attrs[COLOR_opts__OptionContext___options].val = var; /* _options on <self:OptionContext> */
2131 var1 = NEW_hash_collection__HashMap(&type_hash_collection__HashMapstring__Stringopts__Option);
2132 ((void (*)(val*))(var1->class->vft[COLOR_hash_collection__HashMap__init]))(var1) /* init on <var1:HashMap[String, Option]>*/;
2133 CHECK_NEW_hash_collection__HashMap(var1);
2134 self->attrs[COLOR_opts__OptionContext___optmap].val = var1; /* _optmap on <self:OptionContext> */
2135 var2 = NEW_array__Array(&type_array__Arraystring__String);
2136 ((void (*)(val*))(var2->class->vft[COLOR_array__Array__init]))(var2) /* init on <var2:Array[String]>*/;
2137 CHECK_NEW_array__Array(var2);
2138 self->attrs[COLOR_opts__OptionContext___rest].val = var2; /* _rest on <self:OptionContext> */
2139 var3 = NEW_array__Array(&type_array__Arraystring__String);
2140 ((void (*)(val*))(var3->class->vft[COLOR_array__Array__init]))(var3) /* init on <var3:Array[String]>*/;
2141 CHECK_NEW_array__Array(var3);
2142 self->attrs[COLOR_opts__OptionContext___errors].val = var3; /* _errors on <self:OptionContext> */
2143 RET_LABEL:;
2144 }
2145 /* method opts#OptionContext#init for (self: Object) */
2146 void VIRTUAL_opts__OptionContext__init(val* self) {
2147 opts__OptionContext__init(self);
2148 RET_LABEL:;
2149 }
2150 /* method opts#OptionContext#build for (self: OptionContext) */
2151 void opts__OptionContext__build(val* self) {
2152 val* var /* : Array[Option] */;
2153 val* var1 /* : Iterator[nullable Object] */;
2154 short int var2 /* : Bool */;
2155 val* var3 /* : nullable Object */;
2156 val* var_o /* var o: Option */;
2157 val* var4 /* : Array[String] */;
2158 val* var5 /* : Iterator[nullable Object] */;
2159 short int var6 /* : Bool */;
2160 val* var7 /* : nullable Object */;
2161 val* var_n /* var n: String */;
2162 val* var8 /* : Map[String, Option] */;
2163 var = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:OptionContext> */
2164 if (var == NULL) {
2165 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _options", "lib/opts.nit", 324);
2166 exit(1);
2167 }
2168 var1 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_collection__Collection__iterator]))(var) /* iterator on <var:Array[Option]>*/;
2169 for(;;) {
2170 var2 = ((short int (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var1) /* is_ok on <var1:Iterator[nullable Object]>*/;
2171 if(!var2) break;
2172 var3 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__item]))(var1) /* item on <var1:Iterator[nullable Object]>*/;
2173 var_o = var3;
2174 var4 = ((val* (*)(val*))(var_o->class->vft[COLOR_opts__Option__names]))(var_o) /* names on <var_o:Option>*/;
2175 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Collection__iterator]))(var4) /* iterator on <var4:Array[String]>*/;
2176 for(;;) {
2177 var6 = ((short int (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var5) /* is_ok on <var5:Iterator[nullable Object]>*/;
2178 if(!var6) break;
2179 var7 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__item]))(var5) /* item on <var5:Iterator[nullable Object]>*/;
2180 var_n = var7;
2181 var8 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on <self:OptionContext> */
2182 if (var8 == NULL) {
2183 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _optmap", "lib/opts.nit", 326);
2184 exit(1);
2185 }
2186 ((void (*)(val*, val*, val*))(var8->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var8, var_n, var_o) /* []= on <var8:Map[String, Option]>*/;
2187 CONTINUE_label: (void)0;
2188 ((void (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__next]))(var5) /* next on <var5:Iterator[nullable Object]>*/;
2189 }
2190 BREAK_label: (void)0;
2191 CONTINUE_label9: (void)0;
2192 ((void (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__next]))(var1) /* next on <var1:Iterator[nullable Object]>*/;
2193 }
2194 BREAK_label9: (void)0;
2195 RET_LABEL:;
2196 }
2197 /* method opts#OptionContext#build for (self: Object) */
2198 void VIRTUAL_opts__OptionContext__build(val* self) {
2199 opts__OptionContext__build(self);
2200 RET_LABEL:;
2201 }
2202 /* method opts#OptionContext#get_errors for (self: OptionContext): Array[String] */
2203 val* opts__OptionContext__get_errors(val* self) {
2204 val* var /* : Array[String] */;
2205 val* var1 /* : Array[String] */;
2206 val* var_errors /* var errors: Array[String] */;
2207 val* var2 /* : Array[String] */;
2208 val* var3 /* : Array[Option] */;
2209 val* var4 /* : Iterator[nullable Object] */;
2210 short int var5 /* : Bool */;
2211 val* var6 /* : nullable Object */;
2212 val* var_o /* var o: Option */;
2213 val* var7 /* : Array[String] */;
2214 val* var8 /* : Iterator[nullable Object] */;
2215 short int var9 /* : Bool */;
2216 val* var10 /* : nullable Object */;
2217 val* var_e /* var e: String */;
2218 var1 = NEW_array__Array(&type_array__Arraystring__String);
2219 ((void (*)(val*))(var1->class->vft[COLOR_array__Array__init]))(var1) /* init on <var1:Array[String]>*/;
2220 CHECK_NEW_array__Array(var1);
2221 var_errors = var1;
2222 var2 = self->attrs[COLOR_opts__OptionContext___errors].val; /* _errors on <self:OptionContext> */
2223 if (var2 == NULL) {
2224 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _errors", "lib/opts.nit", 335);
2225 exit(1);
2226 }
2227 ((void (*)(val*, val*))(var_errors->class->vft[COLOR_abstract_collection__SimpleCollection__add_all]))(var_errors, var2) /* add_all on <var_errors:Array[String]>*/;
2228 var3 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:OptionContext> */
2229 if (var3 == NULL) {
2230 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _options", "lib/opts.nit", 337);
2231 exit(1);
2232 }
2233 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Collection__iterator]))(var3) /* iterator on <var3:Array[Option]>*/;
2234 for(;;) {
2235 var5 = ((short int (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var4) /* is_ok on <var4:Iterator[nullable Object]>*/;
2236 if(!var5) break;
2237 var6 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__item]))(var4) /* item on <var4:Iterator[nullable Object]>*/;
2238 var_o = var6;
2239 var7 = ((val* (*)(val*))(var_o->class->vft[COLOR_opts__Option__errors]))(var_o) /* errors on <var_o:Option>*/;
2240 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Collection__iterator]))(var7) /* iterator on <var7:Array[String]>*/;
2241 for(;;) {
2242 var9 = ((short int (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var8) /* is_ok on <var8:Iterator[nullable Object]>*/;
2243 if(!var9) break;
2244 var10 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__item]))(var8) /* item on <var8:Iterator[nullable Object]>*/;
2245 var_e = var10;
2246 ((void (*)(val*, val*))(var_errors->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_errors, var_e) /* add on <var_errors:Array[String]>*/;
2247 CONTINUE_label: (void)0;
2248 ((void (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__next]))(var8) /* next on <var8:Iterator[nullable Object]>*/;
2249 }
2250 BREAK_label: (void)0;
2251 CONTINUE_label11: (void)0;
2252 ((void (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__next]))(var4) /* next on <var4:Iterator[nullable Object]>*/;
2253 }
2254 BREAK_label11: (void)0;
2255 var = var_errors;
2256 goto RET_LABEL;
2257 RET_LABEL:;
2258 return var;
2259 }
2260 /* method opts#OptionContext#get_errors for (self: Object): Array[String] */
2261 val* VIRTUAL_opts__OptionContext__get_errors(val* self) {
2262 val* var /* : Array[String] */;
2263 val* var1 /* : Array[String] */;
2264 var1 = opts__OptionContext__get_errors(self);
2265 var = var1;
2266 RET_LABEL:;
2267 return var;
2268 }