/*
-- ANSI C code generated by :
-- SmallEiffel The GNU Eiffel Compiler -- Release (- 0.82)      --
-- Copyright (C), 1994-98 - LORIA - UHP - CRIN - INRIA - FRANCE --
-- Dominique COLNET and Suzanne COLLIN -    colnet@loria.fr     --
--                 http://www.loria.fr/SmallEiffel              --
*/
#include "pretty.h"
void r633add_into(T633* C,T0* a1){
T0* _a=NULL;
int _i=0;
/*IF*/if (((((T633*)C))->_list/*8*/)!=((void*)(NULL))) {
_i=1;
while (!((_i)>((((T608*)((T608*)((((T633*)C))->_list/*8*/))))->_upper/*8*/))) {
_a=r608item(((T608*)((((T633*)C))->_list/*8*/)),_i);
/*IF*/if (!(r608fast_has(((T608*)a1),_a))) {
r608add_last(((T608*)a1),_a);
}
/*FI*/_i=(_i)+(1);
}
}
/*FI*/}
void r633from_runnable(T633* C,T0* a1){
C->_list=a1;
C->_current_type=(((T348*)((T348*)(r608item(((T608*)((((T633*)C))->_list/*8*/)),1)))))->_current_type/*12*/;
}
void r633make(T633* C,T0* a1,T0* a2,T0* a3){
C->_start_position=a1;
C->_header_comment=a2;
C->_list=a3;
}
T0* r633name(T633* C){
T0* R=NULL;
/*IF*/if ((((T633*)C))->_is_ensure_then/*16*/) {
R=((T0*)ms1_633);
}
else {
R=((T0*)ms2_633);
}
/*FI*/return R;
}
/*No:E_ENSURE.set_header_comment*/
/*No:E_ENSURE.start_position*/
/*No:E_ENSURE.set_ensure_then*/
void r633pretty_print(T633* C){
int _i=0;
r238indent(((T238*)(oBC364fmt)));
r238keyword(((T238*)(oBC364fmt)),r633name(C));
r238level_incr(((T238*)(oBC364fmt)));
/*IF*/if (((((T633*)C))->_header_comment/*4*/)!=((void*)(NULL))) {
r393pretty_print(((T393*)((((T633*)C))->_header_comment/*4*/)));
}
else {
r238indent(((T238*)(oBC364fmt)));
}
/*FI*//*IF*/if (((((T633*)C))->_list/*8*/)!=((void*)(NULL))) {
_i=1;
while (!((_i)>((((T608*)((T608*)((((T633*)C))->_list/*8*/))))->_upper/*8*/))) {
/*IF*/if (r6_px_and(r238zen_mode(((T238*)(oBC364fmt))),(_i)==((((T608*)((T608*)((((T633*)C))->_list/*8*/))))->_upper/*8*/))) {
/*[IRF3.3set_semi_colon_flag*/((((T238*)(((T238*)(oBC364fmt)))))->_semi_colon_flag)=(0);
/*]*/
}
else {
/*[IRF3.3set_semi_colon_flag*/((((T238*)(((T238*)(oBC364fmt)))))->_semi_colon_flag)=(1);
/*]*/
}
/*FI*/r238indent(((T238*)(oBC364fmt)));
r348pretty_print(((T348*)(r608item(((T608*)((((T633*)C))->_list/*8*/)),_i))));
_i=(_i)+(1);
}
}
/*FI*/r238level_decr(((T238*)(oBC364fmt)));
r238indent(((T238*)(oBC364fmt)));
}
/*No:E_ENSURE.list*/
/*No:E_ENSURE.current_type*/
/*No:E_ENSURE.is_ensure_then*/
/*No:E_ENSURE.header_comment*/
int r283has_creation(T283* C,T0* a1){
int R=0;
/*IF*/if ((C)==((void*)((((T283*)C))->_run_type/*12*/))) {
R=r605has_creation(((T605*)(r283base_class(C))),a1);
}
else {
R=X291has_creation((((T283*)C))->_run_type/*12*/,a1);
}
/*FI*/return R;
}
/*No:TYPE_FORMAL_GENERIC.is_anchored*/
int r283is_array(T283* C){
int R=0;
R=X291is_array((((T283*)C))->_run_type/*12*/);
return R;
}
int r283is_a(T283* C,T0* a1){
int R=0;
R=X291is_a((((T283*)C))->_run_type/*12*/,a1);
return R;
}
int r283is_pointer(T283* C){
int R=0;
R=X291is_pointer((((T283*)C))->_run_type/*12*/);
return R;
}
/*No:TYPE_FORMAL_GENERIC.run_type*/
int r283is_string(T283* C){
int R=0;
R=X291is_string((((T283*)C))->_run_type/*12*/);
return R;
}
/*No:TYPE_FORMAL_GENERIC.is_like_feature*/
/*No:TYPE_FORMAL_GENERIC.is_like_current*/
void r283make(T283* C,T0* a1,int a2){
C->_rank=a2;
C->_formal_name=a1;
}
/*No:TYPE_FORMAL_GENERIC.formal_name*/
/*No:TYPE_FORMAL_GENERIC.start_position*/
int r283is_character(T283* C){
int R=0;
R=X291is_character((((T283*)C))->_run_type/*12*/);
return R;
}
/*No:TYPE_FORMAL_GENERIC.written_mark*/
T0* r283to_runnable(T283* C,T0* a1){
T0* R=NULL;
T0* _gl=NULL;
T0* _t=NULL;
T0* _p=NULL;
T0* _bc_ct=NULL;
T0* _bc_written=NULL;
_bc_written=r627base_class(((T627*)(/*(IRF4.6start_position*/(((T451*)((T451*)((((T283*)C))->_formal_name/*4*/))))->_start_position/*4*//*)*/)));
_bc_ct=X291base_class(a1);
/*IF*/if ((_bc_written)==((void*)(_bc_ct))) {
_gl=X291generic_list(a1);
/*IF*/if (((_gl)==((void*)(NULL)))||(((((T283*)C))->_rank/*8*/)>((((T701*)((T701*)_gl)))->_upper/*8*/))) {
r683add_position(X291start_position(a1));
r683add_position(/*(IRF4.6start_position*/(((T451*)((T451*)((((T283*)C))->_formal_name/*4*/))))->_start_position/*4*//*)*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms61_470);
r683fatal_error(((T683*)(oBC364eh)),b1);
}/*]*/
}
else {
R=r283make_runnable(C,r701item(((T701*)_gl),(((T283*)C))->_rank/*8*/));
}
/*FI*/}
else {
_p=/*(IRF4.6first_parent_for*/r673first_parent_for(((T673*)((((T605*)((T605*)_bc_ct)))->_parent_list/*40*/)),_bc_written)/*)*/;
while (!((_p)==((void*)(NULL)))) {
_t=(((T877*)((T877*)_p)))->_type/*4*/;
_t=X291run_type(X291to_runnable(_t,a1));
/*IF*/if ((R)==((void*)(NULL))) {
R=r283to_runnable(C,_t);
_p=NULL;
}
else {
_p=/*(IRF4.6next_parent_for*/r673next_parent_for(((T673*)((((T605*)((T605*)_bc_ct)))->_parent_list/*40*/)),_bc_written,_p)/*)*/;
}
/*FI*/}
/*IF*/if ((R)==((void*)(NULL))) {
r683add_type(a1,((T0*)ms1_283));
r283warning(/*(IRF4.6start_position*/(((T451*)((T451*)((((T283*)C))->_formal_name/*4*/))))->_start_position/*4*//*)*/,((T0*)ms2_283));
}
/*FI*/}
/*FI*/return R;
}
/*No:TYPE_FORMAL_GENERIC.is_run_type*/
/*No:TYPE_FORMAL_GENERIC.rank*/
/*No:TYPE_FORMAL_GENERIC.is_formal_generic*/
T0* r283generic_list(T283* C){
T0* R=NULL;
/*IF*/if (r283is_generic(C)) {
R=X291generic_list((((T283*)C))->_run_type/*12*/);
}
else {
r283fatal_error_generic_list(C);
}
/*FI*/return R;
}
int r283is_real(T283* C){
int R=0;
R=X291is_real((((T283*)C))->_run_type/*12*/);
return R;
}
T0* r283twin(T283* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T283*)R)=*C;
return R;
}
/*No:TYPE_FORMAL_GENERIC.fz_bnga*/
T0* r283formal_arg(T283* C){
T0* R=NULL;
R=/*(IRF4.6item*/r681item(((T681*)((((T881*)((T881*)(r283formal_generic_list(C)))))->_list/*4*/)),(((T283*)C))->_rank/*8*/)/*)*/;
return R;
}
int r283is_bit(T283* C){
int R=0;
R=X291is_bit((((T283*)C))->_run_type/*12*/);
return R;
}
void r283fatal_error_generic_list(T283* C){
r683add_type((T0*)C,((T0*)ms12_291));
r683print_as_fatal_error(((T683*)(oBC364eh)));
}
/*No:TYPE_FORMAL_GENERIC.pretty_print*/
T0* r283smallest_ancestor(T283* C,T0* a1){
T0* R=NULL;
R=X291smallest_ancestor((((T283*)C))->_run_type/*12*/,a1);
return R;
}
int r283is_boolean(T283* C){
int R=0;
R=X291is_boolean((((T283*)C))->_run_type/*12*/);
return R;
}
/*No:TYPE_FORMAL_GENERIC.set_run_type*/
int r283is_double(T283* C){
int R=0;
R=X291is_double((((T283*)C))->_run_type/*12*/);
return R;
}
T0* r283run_class(T283* C){
T0* R=NULL;
R=r604run_class((((T283*)C))->_run_type/*12*/);
return R;
}
T0* r283run_time_mark(T283* C){
T0* R=NULL;
R=X291run_time_mark((((T283*)C))->_run_type/*12*/);
return R;
}
int r283is_a_in(T283* C,T0* a1,T0* a2){
int R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*IF*/if ((/*(IRF4.6written_mark*/(((T451*)((T451*)((((T283*)C))->_formal_name/*4*/))))->_to_string/*0*//*)*/)==((void*)(X291written_mark(a1)))) {
R=1;
}
else {
_ct=(((T368*)((T368*)a2)))->_current_type/*0*/;
_t1=r283to_runnable(C,_ct);
_t2=X291to_runnable(a1,_ct);
/*IF*/if ((X291run_time_mark(_t1))==((void*)(X291run_time_mark(_t2)))) {
R=1;
}
else {
R=X291is_a(_t1,_t2);
}
/*FI*/}
/*FI*/return R;
}
T0* r283look_up_for(T283* C,T0* a1,T0* a2){
T0* R=NULL;
R=r605look_up_for(((T605*)(r283base_class(C))),a1,a2);
return R;
}
T0* r283constraint(T283* C){
T0* R=NULL;
R=(((T59*)((T59*)(r283formal_arg(C)))))->_constraint/*4*/;
return R;
}
T0* r283expanded_initializer(T283* C){
T0* R=NULL;
R=X291expanded_initializer((((T283*)C))->_run_type/*12*/);
return R;
}
/*No:TYPE_FORMAL_GENERIC.fz_dot*/
int r283is_generic(T283* C){
int R=0;
R=X291is_generic((((T283*)C))->_run_type/*12*/);
return R;
}
/*No:TYPE_FORMAL_GENERIC.fz_bga*/
/*No:TYPE_FORMAL_GENERIC.used_as_reference*/
T0* r283formal_generic_list(T283* C){
T0* R=NULL;
R=(((T605*)((T605*)(r627base_class(((T627*)(/*(IRF4.6start_position*/(((T451*)((T451*)((((T283*)C))->_formal_name/*4*/))))->_start_position/*4*//*)*/)))))))->_formal_generic_list/*28*/;
return R;
}
int r283is_reference(T283* C){
int R=0;
R=X291is_reference((((T283*)C))->_run_type/*12*/);
return R;
}
void r283error(T0* a1,T0* a2){
r683add_position(a1);
r683error(((T683*)(oBC364eh)),a2);
}
T0* r283base_class(T283* C){
T0* R=NULL;
T0* _bcn=NULL;
_bcn=r283base_class_name(C);
/*IF*/if ((_bcn)!=((void*)(NULL))) {
R=r451base_class(((T451*)_bcn));
}
else {
/*[IRF3.6append*/{T0* b1=((T0*)ms3_291);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r683add_type((T0*)C,((T0*)ms67_470));
r683print_as_fatal_error(((T683*)(oBC364eh)));
}
/*FI*/return R;
}
/*No:TYPE_FORMAL_GENERIC.fatal_error*/
int r283is_any(T283* C){
int R=0;
R=X291is_any((((T283*)C))->_run_type/*12*/);
return R;
}
T0* r283base_class_name(T283* C){
T0* R=NULL;
R=X291base_class_name((((T283*)C))->_run_type/*12*/);
return R;
}
int r283is_expanded(T283* C){
int R=0;
R=X291is_expanded((((T283*)C))->_run_type/*12*/);
return R;
}
int r283is_basic_eiffel_expanded(T283* C){
int R=0;
R=X291is_basic_eiffel_expanded((((T283*)C))->_run_type/*12*/);
return R;
}
int r283is_none(T283* C){
int R=0;
R=X291is_none((((T283*)C))->_run_type/*12*/);
return R;
}
int r283is_integer(T283* C){
int R=0;
R=X291is_integer((((T283*)C))->_run_type/*12*/);
return R;
}
void r283warning(T0* a1,T0* a2){
r683add_position(a1);
r683warning(((T683*)(oBC364eh)),a2);
}
T0* r283make_runnable(T283* C,T0* a1){
T0* R=NULL;
T0* _rt2=NULL;
_rt2=X291run_type(a1);
/*IF*/if ((_rt2)==((void*)(NULL))) {
/*IF*/if ((a1)!=((void*)(NULL))) {
r683add_position(X291start_position(a1));
}
/*FI*/r283error(/*(IRF4.6start_position*/(((T451*)((T451*)((((T283*)C))->_formal_name/*4*/))))->_start_position/*4*//*)*/,((T0*)ms59_470));
}
 else if (((((T283*)C))->_run_type/*12*/)==((void*)(NULL))) {
C->_run_type=_rt2;
R=(T0*)C;
}
else {
R=r283twin(C);
/*[IRF3.3set_run_type*/((((T283*)(((T283*)R))))->_run_type)=(_rt2);
/*]*/
}
/*FI*/return R;
}
/*No:NATIVE_WITHOUT_CURRENT.fz_c_withoutcurrent*/
T0* r320language_name(void){
T0* R=NULL;
R=((T0*)ms99_470);
return R;
}
/*No:NATIVE_WITHOUT_CURRENT.pretty_print*/
void r59make(T59* C,T0* a1,T0* a2){
C->_name=a1;
C->_constraint=a2;
}
/*No:FORMAL_GENERIC_ARG.name*/
/*No:FORMAL_GENERIC_ARG.start_position*/
/*No:FORMAL_GENERIC_ARG.constrained*/
void r59pretty_print(T59* C){
/*[IRF3.6pretty_print*/{T451* C1=((T451*)((((T59*)C))->_name/*0*/));
r238put_string(((T238*)(oBC364fmt)),(((T451*)C1))->_to_string/*0*/);
}/*]*/
/*IF*/if (/*(IRF4.7constrained*/((((T59*)C))->_constraint/*4*/)!=(NULL)/*)*/) {
r238level_incr(((T238*)(oBC364fmt)));
r238put_string(((T238*)(oBC364fmt)),((T0*)ms1_59));
X291pretty_print((((T59*)C))->_constraint/*4*/);
r238level_decr(((T238*)(oBC364fmt)));
}
/*FI*/}
/*No:FORMAL_GENERIC_ARG.constraint*/
/*No:CALL_INFIX_PLUS.arguments*/
T0* r253add_comment(T253* C,T0* a1){
T0* R=NULL;
/*IF*/if (((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r52count(((T52*)((((T393*)((T393*)a1)))->_list/*4*/)))/*)*/)==(0))) {
R=(T0*)C;
}
else {
{T529*n=malloc(sizeof(*n));
*n=M529;
r529make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI*/return R;
}
int r253to_integer(T253* C){
int R=0;
r253error(/*(IRF4.6start_position*/(((T454*)((T454*)((((T253*)C))->_feature_name/*24*/))))->_start_position/*8*//*)*/,((T0*)ms69_470));
return R;
}
int r253is_a(T253* C,T0* a1){
int R=0;
R=X291is_a(X291run_type((((T253*)C))->_result_type/*16*/),X291run_type(X662result_type(a1)));
/*IF*/if (!(R)) {
r683add_position(/*(IRF4.6start_position*/(((T454*)((T454*)((((T253*)C))->_feature_name/*24*/))))->_start_position/*8*//*)*/);
r253error(X662start_position(a1),((T0*)ms4_662));
}
/*FI*/return R;
}
/*No:CALL_INFIX_PLUS.is_current*/
void r253make(T253* C,T0* a1,T0* a2,T0* a3){
T0* _eal=NULL;
/*IF*/if (((a1)==((void*)(NULL)))||((a3)==((void*)(NULL)))) {
r683add_position(a2);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms1_618);
r683fatal_error(((T683*)(oBC364eh)),b1);
}/*]*/
}
/*FI*/{T454*n=malloc(sizeof(*n));
*n=M454;
r454make(n,r253operator(),a2);
C->_feature_name=(T0*)n;
}
{T431*n=malloc(sizeof(*n));
*n=M431;
/*[IRF3.3make*/((((T431*)(n)))->_list)=(se_ma96(1,a3));
/*]*/
_eal=(T0*)n;
}
r253make_call_1(C,a1,(((T253*)C))->_feature_name/*24*/,_eal);
}
void r253print_as_target(T253* C){
r238put_character(((T238*)(oBC364fmt)),'\50');
r253pretty_print(C);
r238put_character(((T238*)(oBC364fmt)),'\51');
r238put_character(((T238*)(oBC364fmt)),'\56');
}
/*No:CALL_INFIX_PLUS.nb_errors*/
/*No:CALL_INFIX_PLUS.feature_name*/
/*No:CALL_INFIX_PLUS.fz_iinaiv*/
/*No:CALL_INFIX_PLUS.run_feature*/
/*No:CALL_INFIX_PLUS.start_position*/
/*No:CALL_INFIX_PLUS.target*/
/*No:CALL_INFIX_PLUS.precedence*/
T0* r253to_runnable(T253* C,T0* a1){
T0* R=NULL;
T0* _tla=NULL;
T0* _a=NULL;
/*IF*/if (((((T253*)C))->_current_type/*4*/)==((void*)(NULL))) {
r253to_runnable_0(C,a1);
_a=r431to_runnable(((T431*)((((T253*)C))->_arguments/*20*/)),a1);
/*IF*/if ((_a)==((void*)(NULL))) {
r253error(X662start_position(/*(IRF4.6arg1*/r431first(((T431*)((((T253*)C))->_arguments/*20*/)))/*)*/),((T0*)ms55_470));
}
else {
C->_arguments=_a;
}
/*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
r431match_with(((T431*)((((T253*)C))->_arguments/*20*/)),(((T253*)C))->_run_feature/*12*/);
}
/*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
_tla=(((T253*)C))->_result_type/*16*/;
if(NULL!=(_tla))switch(((T0*)_tla)->id) {
case 239: 
break;
default:
_tla=NULL;
};/*IF*/if ((_tla)!=((void*)(NULL))) {
C->_result_type=X291run_type(X662result_type(/*(IRF4.6arg1*/r431first(((T431*)((((T253*)C))->_arguments/*20*/)))/*)*/));
}
/*FI*/}
/*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
R=(T0*)C;
}
/*FI*/}
else {
R=r253twin(C);
/*[IRF3.3set_current_type*/((((T253*)(((T253*)R))))->_current_type)=(NULL);
/*]*/
R=r253to_runnable(((T253*)R),a1);
}
/*FI*/return R;
}
void r253bracketed_pretty_print(T253* C){
r238put_character(((T238*)(oBC364fmt)),'\50');
r253pretty_print(C);
r238put_character(((T238*)(oBC364fmt)),'\51');
}
/*No:CALL_INFIX_PLUS.result_type*/
T0* r253twin(T253* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T253*)R)=*C;
return R;
}
/*No:CALL_INFIX_PLUS.set_current_type*/
T0* r253operator(void){
T0* R=NULL;
R=((T0*)ms43_473);
return R;
}
/*No:CALL_INFIX_PLUS.atomic_precedence*/
void r253pretty_print(T253* C){
/*IF*/if ((X662precedence((((T253*)C))->_target/*8*/))==(13)) {
X662pretty_print((((T253*)C))->_target/*8*/);
r253print_op(C);
/*IF*/if ((X662precedence(/*(IRF4.6arg1*/r431first(((T431*)((((T253*)C))->_arguments/*20*/)))/*)*/))==(13)) {
X662pretty_print(/*(IRF4.6arg1*/r431first(((T431*)((((T253*)C))->_arguments/*20*/)))/*)*/);
}
 else if ((7)>=(X662precedence(/*(IRF4.6arg1*/r431first(((T431*)((((T253*)C))->_arguments/*20*/)))/*)*/))) {
X662bracketed_pretty_print(/*(IRF4.6arg1*/r431first(((T431*)((((T253*)C))->_arguments/*20*/)))/*)*/);
}
else {
X662pretty_print(/*(IRF4.6arg1*/r431first(((T431*)((((T253*)C))->_arguments/*20*/)))/*)*/);
}
/*FI*/}
 else if ((X662precedence(/*(IRF4.6arg1*/r431first(((T431*)((((T253*)C))->_arguments/*20*/)))/*)*/))==(13)) {
/*IF*/if ((X662precedence((((T253*)C))->_target/*8*/))>=(7)) {
X662bracketed_pretty_print((((T253*)C))->_target/*8*/);
}
else {
X662pretty_print((((T253*)C))->_target/*8*/);
}
/*FI*/r253print_op(C);
X662pretty_print(/*(IRF4.6arg1*/r431first(((T431*)((((T253*)C))->_arguments/*20*/)))/*)*/);
}
 else if ((7)<=(X662precedence((((T253*)C))->_target/*8*/))) {
X662bracketed_pretty_print((((T253*)C))->_target/*8*/);
r253print_op(C);
/*IF*/if ((7)<=(X662precedence(/*(IRF4.6arg1*/r431first(((T431*)((((T253*)C))->_arguments/*20*/)))/*)*/))) {
X662bracketed_pretty_print(/*(IRF4.6arg1*/r431first(((T431*)((((T253*)C))->_arguments/*20*/)))/*)*/);
}
else {
X662pretty_print(/*(IRF4.6arg1*/r431first(((T431*)((((T253*)C))->_arguments/*20*/)))/*)*/);
}
/*FI*/}
else {
X662pretty_print((((T253*)C))->_target/*8*/);
r253print_op(C);
X662pretty_print(/*(IRF4.6arg1*/r431first(((T431*)((((T253*)C))->_arguments/*20*/)))/*)*/);
}
/*FI*/}
void r253print_op(T253* C){
r238put_character(((T238*)(oBC364fmt)),'\40');
/*[IRF3.6pretty_print*/{T454* C1=((T454*)((((T253*)C))->_feature_name/*24*/));
r238put_string(((T238*)(oBC364fmt)),(((T454*)C1))->_to_string/*4*/);
}/*]*/
r238put_character(((T238*)(oBC364fmt)),'\40');
}
/*No:CALL_INFIX_PLUS.current_type*/
void r253make_call_1(T253* C,T0* a1,T0* a2,T0* a3){
C->_target=a1;
C->_feature_name=a2;
C->_arguments=a3;
}
/*No:CALL_INFIX_PLUS.is_manifest_string*/
/*No:CALL_INFIX_PLUS.is_void*/
void r253to_runnable_0(T253* C,T0* a1){
C->_current_type=a1;
r253cpc_to_runnable(C,a1);
C->_result_type=/*X496*/((T0*)(((T808*)((T808*)((((T253*)C))->_run_feature/*12*/))))->_result_type/*24*/);
/*IF*/if (((((T253*)C))->_result_type/*16*/)==((void*)(NULL))) {
r683add_position(X496start_position((((T253*)C))->_run_feature/*12*/));
r253error((((T454*)((T454*)((((T253*)C))->_feature_name/*24*/))))->_start_position/*8*/,((T0*)ms1_295));
}
 else if (X291is_like_current((((T253*)C))->_result_type/*16*/)) {
C->_result_type=X662result_type((((T253*)C))->_target/*8*/);
}
/*FI*/}
void r253cpc_to_runnable(T253* C,T0* a1){
T0* _rc=NULL;
T0* _t=NULL;
_t=X662to_runnable((((T253*)C))->_target/*8*/,a1);
/*IF*/if ((_t)==((void*)(NULL))) {
r683add_position(X662start_position((((T253*)C))->_target/*8*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms2_135);
r683fatal_error(((T683*)(oBC364eh)),b1);
}/*]*/
}
/*FI*/C->_target=_t;
_rc=X291run_class(X662result_type((((T253*)C))->_target/*8*/));
C->_run_feature=r368get_rf(((T368*)_rc),(T0*)C);
r576update((((T253*)C))->_target/*8*/,(((T253*)C))->_run_feature/*12*/);
}
void r253error(T0* a1,T0* a2){
r683add_position(a1);
r683error(((T683*)(oBC364eh)),a2);
}
/*No:CALL_INFIX_PLUS.fatal_error*/
/*No:CALL_INFIX_PLUS.fz_bad_argument*/
/*No:CALL_INFIX_PLUS.us_plus*/
/*No:CALL_INFIX_PLUS.arg1*/
/*No:PARENT.us_none*/
void r877multiple_check(T877* C,T0* a1){
T0* _fn2=NULL;
T0* _fn1=NULL;
int _i=0;
T0* _bc2=NULL;
T0* _bc1=NULL;
_bc1=X291base_class((((T877*)C))->_type/*4*/);
_bc2=X291base_class((((T877*)((T877*)a1)))->_type/*4*/);
/*IF*/if ((((_bc1)==((void*)(_bc2)))||(r605is_subclass_of(((T605*)_bc1),_bc2)))||(r605is_subclass_of(((T605*)_bc2),_bc1))) {
/*IF*/if (((((T877*)C))->_redefine_list/*24*/)!=((void*)(NULL))) {
_i=/*(IRF4.6count*/(((T855*)((T855*)((((T953*)((T953*)((((T877*)C))->_redefine_list/*24*/))))->_list/*0*/))))->_upper/*8*//*)*/;
while (!((_i)==(0))) {
_fn1=/*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)((((T877*)C))->_redefine_list/*24*/))))->_list/*0*/)),_i)/*)*/;
/*IF*/if (((((T877*)((T877*)a1)))->_rename_list/*12*/)==((void*)(NULL))) {
}
 else if (r644affect(((T644*)((((T877*)((T877*)a1)))->_rename_list/*12*/)),_fn1)) {
_fn2=r644to_new_name(((T644*)((((T877*)((T877*)a1)))->_rename_list/*12*/)),_fn1);
/*IF*/if ((_fn2)!=((void*)(_fn1))) {
/*IF*/if (((((T877*)C))->_select_list/*28*/)!=((void*)(NULL))) {
/*IF*/if (r953has(((T953*)((((T877*)C))->_select_list/*28*/)),_fn1)) {
/*IF*/if (((((T877*)((T877*)a1)))->_select_list/*28*/)!=((void*)(NULL))) {
/*IF*/if (r953has(((T953*)((((T877*)((T877*)a1)))->_select_list/*28*/)),_fn2)) {
r877select_conflict(_fn1,_fn2);
}
/*FI*/}
/*FI*/}
 else if (((((T877*)((T877*)a1)))->_select_list/*28*/)==((void*)(NULL))) {
r877missing_select(_fn1,_fn2);
}
 else if (!(r953has(((T953*)((((T877*)((T877*)a1)))->_select_list/*28*/)),_fn2))) {
r877missing_select(_fn1,_fn2);
}
/*FI*/}
 else if (((((T877*)((T877*)a1)))->_select_list/*28*/)==((void*)(NULL))) {
r877missing_select(_fn1,_fn2);
}
 else if (!(r953has(((T953*)((((T877*)((T877*)a1)))->_select_list/*28*/)),_fn2))) {
r877missing_select(_fn1,_fn2);
}
/*FI*/}
/*FI*/}
/*FI*/_i=(_i)-(1);
}
}
/*FI*/}
/*FI*/}
/*No:PARENT.us_integer*/
void r877get_started(T877* C,T0* a1){
int _all_check=0;
T0* _new_fn=NULL;
T0* _old_fn=NULL;
T0* _fn=NULL;
T0* _pbc=NULL;
T0* _wbc=NULL;
int _i=0;
_all_check=r590all_check(((T590*)(oBC364run_control)));
C->_parent_list=a1;
_pbc=X291base_class((((T877*)C))->_type/*4*/);
_wbc=(((T673*)((T673*)((((T877*)C))->_parent_list/*0*/))))->_base_class/*0*/;
/*IF*/if ((_all_check)&&(((((T877*)C))->_rename_list/*12*/)!=((void*)(NULL)))) {
r644get_started(((T644*)((((T877*)C))->_rename_list/*12*/)),_pbc);
}
/*FI*//*IF*/if ((_all_check)&&(((((T877*)C))->_undefine_list/*20*/)!=((void*)(NULL)))) {
_i=/*(IRF4.6count*/(((T855*)((T855*)((((T953*)((T953*)((((T877*)C))->_undefine_list/*20*/))))->_list/*0*/))))->_upper/*8*//*)*/;
while (!((_i)==(0))) {
_fn=/*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)((((T877*)C))->_undefine_list/*20*/))))->_list/*0*/)),_i)/*)*/;
_old_fn=r877get_old_name(C,_fn);
/*IF*/if (((_old_fn)==((void*)(NULL)))&&(!(r605has(((T605*)_pbc),_fn)))) {
r683add_position(X776start_position(_fn));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms9_877);
r683fatal_error(((T683*)(oBC364eh)),b1);
}/*]*/
}
/*FI*/_i=(_i)-(1);
}
}
/*FI*//*IF*/if (((((T877*)C))->_redefine_list/*24*/)!=((void*)(NULL))) {
_i=/*(IRF4.6count*/(((T855*)((T855*)((((T953*)((T953*)((((T877*)C))->_redefine_list/*24*/))))->_list/*0*/))))->_upper/*8*//*)*/;
while (!((_i)==(0))) {
_fn=/*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)((((T877*)C))->_redefine_list/*24*/))))->_list/*0*/)),_i)/*)*/;
/*IF*/if (!(r605proper_has(((T605*)_wbc),_fn))) {
r683add_position(X776start_position(_fn));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms10_877);
r683fatal_error(((T683*)(oBC364eh)),b1);
}/*]*/
}
/*FI*//*IF*/if (_all_check) {
_old_fn=r877get_old_name(C,_fn);
/*IF*/if (((_old_fn)==((void*)(NULL)))&&(!(r605has(((T605*)_pbc),_fn)))) {
r683add_position(X776start_position(_fn));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms11_877);
r683fatal_error(((T683*)(oBC364eh)),b1);
}/*]*/
}
/*FI*/}
/*FI*/_i=(_i)-(1);
}
}
/*FI*//*IF*/if ((_all_check)&&(((((T877*)C))->_select_list/*28*/)!=((void*)(NULL)))) {
_i=/*(IRF4.6count*/(((T855*)((T855*)((((T953*)((T953*)((((T877*)C))->_select_list/*28*/))))->_list/*0*/))))->_upper/*8*//*)*/;
while (!((_i)==(0))) {
_fn=/*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)((((T877*)C))->_select_list/*28*/))))->_list/*0*/)),_i)/*)*/;
_old_fn=r877get_old_name(C,_fn);
/*IF*/if (((_old_fn)==((void*)(NULL)))&&(!(r605has(((T605*)_pbc),_fn)))) {
r683add_position(X776start_position(_fn));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms16_877);
r683fatal_error(((T683*)(oBC364eh)),b1);
}/*]*/
}
/*FI*/_new_fn=r877get_new_name(C,_fn);
/*IF*/if ((_new_fn)!=((void*)(NULL))) {
/*IF*/if ((r877get_old_name(C,_new_fn))==((void*)(NULL))) {
r683add_position(X776start_position(_new_fn));
r683add_position(X776start_position(_fn));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms16_877);
r683fatal_error(((T683*)(oBC364eh)),b1);
}/*]*/
}
/*FI*/}
/*FI*/_i=(_i)-(1);
}
}
/*FI*/}
/*No:PARENT.select_list*/
/*No:PARENT.undefine_memory1*/
T0* r877get_new_name(T877* C,T0* a1){
T0* R=NULL;
/*IF*/if (((((T877*)C))->_rename_list/*12*/)!=((void*)(NULL))) {
R=r644to_new_name(((T644*)((((T877*)C))->_rename_list/*12*/)),a1);
/*IF*/if ((R)==((void*)(a1))) {
R=NULL;
}
/*FI*/}
/*FI*/return R;
}
T0* r877get_old_name(T877* C,T0* a1){
T0* R=NULL;
/*IF*/if (((((T877*)C))->_rename_list/*12*/)!=((void*)(NULL))) {
R=r644to_old_name(((T644*)((((T877*)C))->_rename_list/*12*/)),a1);
/*IF*/if ((R)==((void*)(a1))) {
R=NULL;
}
/*FI*/}
/*FI*/return R;
}
void r877make(T877* C,T0* a1){
C->_type=a1;
/*IF*/if (r52fast_has(((T52*)(oBC877forbidden_parent_list)),X291written_mark((((T877*)C))->_type/*4*/))) {
r683add_position(X291start_position((((T877*)C))->_type/*4*/));
/*[IRF3.6append*/{T0* b1=((T0*)ms1_877);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X291written_mark((((T877*)C))->_type/*4*/);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms2_877);
r683fatal_error(((T683*)(oBC364eh)),b1);
}/*]*/
}
/*FI*/}
/*No:PARENT.rename_list*/
/*No:PARENT.parent_list*/
/*No:PARENT.us_pointer*/
void r877set_select(T877* C,T0* a1){
{T953*n=malloc(sizeof(*n));
*n=M953;
r953make(n,a1);
C->_select_list=(T0*)n;
}
}
/*No:PARENT.type*/
T0* r877going_down(T877* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _previous=NULL;
/*IF*/if (((((T877*)C))->_rename_list/*12*/)==((void*)(NULL))) {
R=a2;
}
else {
R=r644to_new_name(((T644*)((((T877*)C))->_rename_list/*12*/)),a2);
}
/*FI*//*IF*/if (!(r854empty(((T854*)a1)))) {
_previous=r854last(((T854*)a1));
r854remove_last(((T854*)a1));
R=r877going_down(((T877*)_previous),a1,R);
}
/*FI*/return R;
}
/*No:PARENT.set_comment*/
/*No:PARENT.undefine_memory2*/
T0* r877start_position(T877* C){
T0* R=NULL;
R=X291start_position((((T877*)C))->_type/*4*/);
return R;
}
/*No:PARENT.comment*/
T0* r877do_rename(T877* C,T0* a1){
T0* R=NULL;
/*IF*/if (((((T877*)C))->_rename_list/*12*/)==((void*)(NULL))) {
R=a1;
}
else {
R=r644to_new_name(((T644*)((((T877*)C))->_rename_list/*12*/)),a1);
}
/*FI*/return R;
}
int r877has_select_for(T877* C,T0* a1){
int R=0;
/*IF*/if (((((T877*)C))->_select_list/*28*/)!=((void*)(NULL))) {
R=r953has(((T953*)((((T877*)C))->_select_list/*28*/)),a1);
}
/*FI*/return R;
}
/*No:PARENT.export_list*/
void r877add_rename(T877* C,T0* a1){
/*IF*/if (((((T877*)C))->_rename_list/*12*/)==((void*)(NULL))) {
{T644*n=malloc(sizeof(*n));
*n=M644;
/*[IRF3.3make*/((((T644*)(n)))->_list)=(se_ma552(1,a1));
/*]*/
C->_rename_list=(T0*)n;
}
}
else {
/*[IRF3.5add_last*/r552add_last(((T552*)((((T644*)((T644*)((((T877*)C))->_rename_list/*12*/))))->_list/*0*/)),a1);
/*]*/
}
/*FI*/}
/*No:PARENT.us_character*/
/*No:PARENT.em1*/
void r877pretty_print(T877* C){
int _end_needed=0;
/*[IRF3.3set_indent_level*/((((T238*)(((T238*)(oBC364fmt)))))->_indent_level)=(1);
/*]*/
r238indent(((T238*)(oBC364fmt)));
X291pretty_print((((T877*)C))->_type/*4*/);
/*IF*/if (((((((((T877*)C))->_rename_list/*12*/)==((void*)(NULL)))&&(((((T877*)C))->_export_list/*16*/)==((void*)(NULL))))&&(((((T877*)C))->_undefine_list/*20*/)==((void*)(NULL))))&&(((((T877*)C))->_redefine_list/*24*/)==((void*)(NULL))))&&(((((T877*)C))->_select_list/*28*/)==((void*)(NULL)))) {
r238put_character(((T238*)(oBC364fmt)),'\73');
}
/*FI*//*IF*/if (((((T877*)C))->_comment/*8*/)!=((void*)(NULL))) {
r238put_character(((T238*)(oBC364fmt)),'\40');
r393pretty_print(((T393*)((((T877*)C))->_comment/*8*/)));
}
/*FI*//*IF*/if (((((T877*)C))->_rename_list/*12*/)!=((void*)(NULL))) {
_end_needed=1;
r644pretty_print(((T644*)((((T877*)C))->_rename_list/*12*/)));
}
/*FI*//*IF*/if (((((T877*)C))->_export_list/*16*/)!=((void*)(NULL))) {
_end_needed=1;
r671pretty_print(((T671*)((((T877*)C))->_export_list/*16*/)));
}
/*FI*//*IF*/if (((((T877*)C))->_undefine_list/*20*/)!=((void*)(NULL))) {
_end_needed=1;
/*[IRF3.3set_indent_level*/((((T238*)(((T238*)(oBC364fmt)))))->_indent_level)=(2);
/*]*/
r238indent(((T238*)(oBC364fmt)));
r238keyword(((T238*)(oBC364fmt)),((T0*)ms5_877));
r953pretty_print(((T953*)((((T877*)C))->_undefine_list/*20*/)));
}
/*FI*//*IF*/if (((((T877*)C))->_redefine_list/*24*/)!=((void*)(NULL))) {
_end_needed=1;
/*[IRF3.3set_indent_level*/((((T238*)(((T238*)(oBC364fmt)))))->_indent_level)=(2);
/*]*/
r238indent(((T238*)(oBC364fmt)));
r238keyword(((T238*)(oBC364fmt)),((T0*)ms6_877));
r953pretty_print(((T953*)((((T877*)C))->_redefine_list/*24*/)));
}
/*FI*//*IF*/if (((((T877*)C))->_select_list/*28*/)!=((void*)(NULL))) {
_end_needed=1;
/*[IRF3.3set_indent_level*/((((T238*)(((T238*)(oBC364fmt)))))->_indent_level)=(2);
/*]*/
r238indent(((T238*)(oBC364fmt)));
r238keyword(((T238*)(oBC364fmt)),((T0*)ms7_877));
r953pretty_print(((T953*)((((T877*)C))->_select_list/*28*/)));
}
/*FI*//*IF*/if (_end_needed) {
/*[IRF3.3set_indent_level*/((((T238*)(((T238*)(oBC364fmt)))))->_indent_level)=(2);
/*]*/
r238indent(((T238*)(oBC364fmt)));
r238keyword(((T238*)(oBC364fmt)),((T0*)ms8_877));
}
/*FI*//*[IRF3.3set_indent_level*/((((T238*)(((T238*)(oBC364fmt)))))->_indent_level)=(1);
/*]*/
r238indent(((T238*)(oBC364fmt)));
}
/*No:PARENT.us_real*/
T0* r877up_to_original(T877* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _bc=NULL;
T0* _old_name=NULL;
_bc=X291base_class((((T877*)C))->_type/*4*/);
/*IF*/if (((((T877*)C))->_rename_list/*12*/)==((void*)(NULL))) {
R=r605up_to_original(((T605*)_bc),a1,a2);
}
 else if (r644affect(((T644*)((((T877*)C))->_rename_list/*12*/)),a2)) {
_old_name=r644to_old_name(((T644*)((((T877*)C))->_rename_list/*12*/)),a2);
/*IF*/if ((_old_name)!=((void*)(a2))) {
R=r605up_to_original(((T605*)_bc),a1,_old_name);
}
/*FI*/}
else {
R=r605up_to_original(((T605*)_bc),a1,a2);
}
/*FI*/return R;
}
void r877select_conflict(T0* a1,T0* a2){
r683add_position(X776start_position(a1));
r683add_position(X776start_position(a2));
/*[IRF3.6append*/{T0* b1=((T0*)ms14_877);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r683print_as_fatal_error(((T683*)(oBC364eh)));
}
T0* r877smallest_ancestor(T877* C,T0* a1){
T0* R=NULL;
/*IF*/if (X291is_generic((((T877*)C))->_type/*4*/)) {
R=X291to_runnable((((T877*)C))->_type/*4*/,a1);
}
else {
R=(((T877*)C))->_type/*4*/;
}
/*FI*/return R;
}
int r877has(T877* C,T0* a1){
int R=0;
/*IF*/if (((((T877*)C))->_rename_list/*12*/)==((void*)(NULL))) {
R=r605has(((T605*)(X291base_class((((T877*)C))->_type/*4*/))),a1);
}
else {
R=r605has(((T605*)(X291base_class((((T877*)C))->_type/*4*/))),r644to_old_name(((T644*)((((T877*)C))->_rename_list/*12*/)),a1));
}
/*FI*/return R;
}
void r877missing_select(T0* a1,T0* a2){
r683add_position(X776start_position(a1));
r683add_position(X776start_position(a2));
/*[IRF3.6append*/{T0* b1=((T0*)ms15_877);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r683print_as_fatal_error(((T683*)(oBC364eh)));
}
/*No:PARENT.us_bit*/
/*No:PARENT.fz_09*/
int r877has_redefine(T877* C,T0* a1){
int R=0;
/*IF*/if (((((T877*)C))->_redefine_list/*24*/)!=((void*)(NULL))) {
R=r953has(((T953*)((((T877*)C))->_redefine_list/*24*/)),a1);
}
/*FI*/return R;
}
int r877has_undefine(T877* C,T0* a1){
int R=0;
/*IF*/if (((((T877*)C))->_undefine_list/*20*/)!=((void*)(NULL))) {
R=r953has(((T953*)((((T877*)C))->_undefine_list/*20*/)),a1);
}
/*FI*/return R;
}
T0* r877look_up_for(T877* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _f=NULL;
T0* _fn2=NULL;
/*IF*/if ((((((T877*)C))->_rename_list/*12*/)==((void*)(NULL)))||(!(r644affect(((T644*)((((T877*)C))->_rename_list/*12*/)),a2)))) {
_f=X291look_up_for((((T877*)C))->_type/*4*/,a1,a2);
R=r877apply_undefine(C,_f,a2);
}
else {
_fn2=r644to_old_name(((T644*)((((T877*)C))->_rename_list/*12*/)),a2);
/*IF*/if ((_fn2)!=((void*)(a2))) {
_f=X291look_up_for((((T877*)C))->_type/*4*/,a1,_fn2);
R=r877apply_undefine(C,_f,_fn2);
}
else {
_f=X291look_up_for((((T877*)C))->_type/*4*/,a1,a2);
/*IF*/if ((_f)==((void*)(NULL))) {
r683add_position(X776start_position(a2));
/*[IRF3.6append*/{T0* b1=((T0*)ms143_470);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X776to_string(a2);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms3_877);
r683fatal_error(((T683*)(oBC364eh)),b1);
}/*]*/
}
/*FI*/}
/*FI*/}
/*FI*/return R;
}
T0*oBC877forbidden_parent_list=NULL;
/*No:PARENT.us_boolean*/
/*No:PARENT.us_double*/
T0* r877clients_for(T877* C,T0* a1){
T0* R=NULL;
T0* _old_fn=NULL;
/*IF*/if (((((T877*)C))->_rename_list/*12*/)==((void*)(NULL))) {
/*IF*/if (((((T877*)C))->_export_list/*16*/)==((void*)(NULL))) {
R=r605clients_for(((T605*)(X291base_class((((T877*)C))->_type/*4*/))),a1);
}
else {
R=r671clients_for(((T671*)((((T877*)C))->_export_list/*16*/)),a1);
/*IF*/if ((R)==((void*)(NULL))) {
R=r605clients_for(((T605*)(X291base_class((((T877*)C))->_type/*4*/))),a1);
}
/*FI*/}
/*FI*/}
else {
_old_fn=r644to_old_name(((T644*)((((T877*)C))->_rename_list/*12*/)),a1);
/*IF*/if (((((T877*)C))->_export_list/*16*/)==((void*)(NULL))) {
R=r605clients_for(((T605*)(X291base_class((((T877*)C))->_type/*4*/))),_old_fn);
}
else {
R=r671clients_for(((T671*)((((T877*)C))->_export_list/*16*/)),_old_fn);
/*IF*/if ((R)==((void*)(NULL))) {
R=r605clients_for(((T605*)(X291base_class((((T877*)C))->_type/*4*/))),_old_fn);
}
/*FI*/}
/*FI*/}
/*FI*/return R;
}
void r877set_redefine(T877* C,T0* a1){
{T953*n=malloc(sizeof(*n));
*n=M953;
r953make(n,a1);
C->_redefine_list=(T0*)n;
}
}
void r877set_undefine(T877* C,T0* a1){
{T953*n=malloc(sizeof(*n));
*n=M953;
r953make(n,a1);
C->_undefine_list=(T0*)n;
}
}
T0* r877going_up(T877* C,T0* a1,T0* a2,T0* a3){
T0* R=NULL;
T0* _bc=NULL;
_bc=X291base_class((((T877*)C))->_type/*4*/);
/*IF*/if ((_bc)==((void*)(a2))) {
R=r877going_down(C,a1,a3);
}
 else if (r605is_general(((T605*)_bc))) {
R=r877going_down(C,a1,a3);
}
 else if (r605is_subclass_of(((T605*)_bc),a2)) {
r854add_last(((T854*)a1),(T0*)C);
R=r605going_up(((T605*)_bc),a1,a2,a3);
}
/*FI*/return R;
}
void r877collect_for(T877* C,int a1,T0* a2){
T0* _fn2=NULL;
/*IF*/if ((((((T877*)C))->_rename_list/*12*/)==((void*)(NULL)))||(!(r644affect(((T644*)((((T877*)C))->_rename_list/*12*/)),a2)))) {
r605collect_for(((T605*)(X291base_class((((T877*)C))->_type/*4*/))),a1,a2);
}
else {
_fn2=r644to_old_name(((T644*)((((T877*)C))->_rename_list/*12*/)),a2);
/*IF*/if ((_fn2)!=((void*)(a2))) {
r605collect_for(((T605*)(X291base_class((((T877*)C))->_type/*4*/))),a1,_fn2);
}
/*FI*/}
/*FI*/}
int r877is_a_vncg(T877* C,T0* a1,T0* a2){
int R=0;
T0* _t2_bcn=NULL;
T0* _type_bcn=NULL;
T0* _t2_bc=NULL;
T0* _type_bc=NULL;
T0* _rt=NULL;
T0* _tfg=NULL;
T0* _gl2=NULL;
T0* _gl1=NULL;
T0* _gl=NULL;
int _i=0;
int _rank=0;
_type_bc=X291base_class((((T877*)C))->_type/*4*/);
_type_bcn=(((T451*)((T451*)((((T605*)((T605*)_type_bc)))->_base_class_name/*24*/))))->_to_string/*0*/;
_t2_bc=X291base_class(a2);
_t2_bcn=(((T451*)((T451*)((((T605*)((T605*)_t2_bc)))->_base_class_name/*24*/))))->_to_string/*0*/;
/*IF*/if ((_type_bcn)==((void*)(_t2_bcn))) {
_gl=X291generic_list((((T877*)C))->_type/*4*/);
_gl2=X291generic_list(a2);
/*IF*/if (((_gl)==((void*)(NULL)))||((r701count(((T701*)_gl)))!=(r701count(((T701*)_gl2))))) {
r683add_position(X291start_position((((T877*)C))->_type/*4*/));
r683add_position(X291start_position(a2));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms4_877);
r683fatal_error(((T683*)(oBC364eh)),b1);
}/*]*/
}
/*FI*//*IF*/if (X291is_generic(a1)) {
_gl1=X291generic_list(a1);
R=1;
_i=r701count(((T701*)_gl2));
while (!((!(R))||((_i)==(0)))) {
/*IF*/if (X291is_formal_generic(r701item(((T701*)_gl),_i))) {
_tfg=r701item(((T701*)_gl),_i);
if(NULL!=(_tfg))switch(((T0*)_tfg)->id) {
case 283: 
break;
default:
_tfg=NULL;
};_rank=(((T283*)((T283*)_tfg)))->_rank/*8*/;
R=X291is_a(r701item(((T701*)_gl1),_rank),r701item(((T701*)_gl2),_i));
}
else {
_rt=X291run_type(X291to_runnable(r701item(((T701*)_gl),_i),a1));
R=X291is_a(_rt,r701item(((T701*)_gl2),_i));
}
/*FI*/_i=(_i)-(1);
}
}
else {
R=X291is_a((((T877*)C))->_type/*4*/,a2);
}
/*FI*//*IF*/if (!(R)) {
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)(((T7*)(oBC683explanation)))))->_count)=(0);
/*]*/
r38clear(((T38*)(oBC683positions)));
/*]*/
}
/*FI*/}
 else if (r605is_subclass_of(((T605*)_type_bc),_t2_bc)) {
/*IF*/if (X291is_generic(a1)) {
_rt=X291run_type(X291to_runnable((((T877*)C))->_type/*4*/,a1));
R=r605is_a_vncg(((T605*)_type_bc),_rt,a2);
}
else {
R=r605is_a_vncg(((T605*)_type_bc),(((T877*)C))->_type/*4*/,a2);
}
/*FI*//*IF*/if (!(R)) {
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)(((T7*)(oBC683explanation)))))->_count)=(0);
/*]*/
r38clear(((T38*)(oBC683positions)));
/*]*/
}
/*FI*/}
/*FI*/return R;
}
/*No:PARENT.fatal_error*/
/*No:PARENT.redefine_list*/
/*No:PARENT.us_native_array*/
/*No:PARENT.set_export*/
T0* r877apply_undefine(T877* C,T0* a1,T0* a2){
T0* R=NULL;
int _index=0;
T0* _fnkey=NULL;
/*IF*/if (r877has_undefine(C,a2)) {
_fnkey=X776to_key(a2);
/*IF*/if (((((T877*)C))->_undefine_memory1/*32*/)==((void*)(NULL))) {
C->_undefine_memory1=se_ma52(1,_fnkey);
R=X359try_to_undefine(a1,a2,(((T673*)((T673*)((((T877*)C))->_parent_list/*0*/))))->_base_class/*0*/);
C->_undefine_memory2=se_ma495(1,R);
}
else {
_index=r52fast_index_of(((T52*)((((T877*)C))->_undefine_memory1/*32*/)),_fnkey);
/*IF*/if ((_index)>((((T52*)((T52*)((((T877*)C))->_undefine_memory1/*32*/))))->_upper/*8*/)) {
r52add_last(((T52*)((((T877*)C))->_undefine_memory1/*32*/)),_fnkey);
R=X359try_to_undefine(a1,a2,(((T673*)((T673*)((((T877*)C))->_parent_list/*0*/))))->_base_class/*0*/);
r495add_last(((T495*)((((T877*)C))->_undefine_memory2/*36*/)),R);
}
else {
R=r495item(((T495*)((((T877*)C))->_undefine_memory2/*36*/)),_index);
}
/*FI*/}
/*FI*/}
else {
R=a1;
}
/*FI*/return R;
}
/*No:PARENT.undefine_list*/
/*No:CALL_INFIX_OR_ELSE.arguments*/
T0* r278add_comment(T278* C,T0* a1){
T0* R=NULL;
/*IF*/if (((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r52count(((T52*)((((T393*)((T393*)a1)))->_list/*4*/)))/*)*/)==(0))) {
R=(T0*)C;
}
else {
{T529*n=malloc(sizeof(*n));
*n=M529;
r529make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI*/return R;
}
int r278to_integer(T278* C){
int R=0;
r278error(/*(IRF4.6start_position*/(((T454*)((T454*)((((T278*)C))->_feature_name/*24*/))))->_start_position/*8*//*)*/,((T0*)ms69_470));
return R;
}
int r278is_a(T278* C,T0* a1){
int R=0;
R=X291is_a(X291run_type((((T278*)C))->_result_type/*16*/),X291run_type(X662result_type(a1)));
/*IF*/if (!(R)) {
r683add_position(/*(IRF4.6start_position*/(((T454*)((T454*)((((T278*)C))->_feature_name/*24*/))))->_start_position/*8*//*)*/);
r278error(X662start_position(a1),((T0*)ms4_662));
}
/*FI*/return R;
}
/*No:CALL_INFIX_OR_ELSE.is_current*/
void r278make(T278* C,T0* a1,T0* a2,T0* a3){
T0* _eal=NULL;
/*IF*/if (((a1)==((void*)(NULL)))||((a3)==((void*)(NULL)))) {
r683add_position(a2);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms1_618);
r683fatal_error(((T683*)(oBC364eh)),b1);
}/*]*/
}
/*FI*/{T454*n=malloc(sizeof(*n));
*n=M454;
r454make(n,r278operator(),a2);
C->_feature_name=(T0*)n;
}
{T431*n=malloc(sizeof(*n));
*n=M431;
/*[IRF3.3make*/((((T431*)(n)))->_list)=(se_ma96(1,a3));
/*]*/
_eal=(T0*)n;
}
r278make_call_1(C,a1,(((T278*)C))->_feature_name/*24*/,_eal);
}
void r278print_as_target(T278* C){
r238put_character(((T238*)(oBC364fmt)),'\50');
r278pretty_print(C);
r238put_character(((T238*)(oBC364fmt)),'\51');
r238put_character(((T238*)(oBC364fmt)),'\56');
}
/*No:CALL_INFIX_OR_ELSE.nb_errors*/
/*No:CALL_INFIX_OR_ELSE.feature_name*/
/*No:CALL_INFIX_OR_ELSE.fz_iinaiv*/
/*No:CALL_INFIX_OR_ELSE.run_feature*/
/*No:CALL_INFIX_OR_ELSE.start_position*/
/*No:CALL_INFIX_OR_ELSE.us_or_else*/
/*No:CALL_INFIX_OR_ELSE.target*/
/*No:CALL_INFIX_OR_ELSE.precedence*/
T0* r278to_runnable(T278* C,T0* a1){
T0* R=NULL;
T0* _tla=NULL;
T0* _a=NULL;
/*IF*/if (((((T278*)C))->_current_type/*4*/)==((void*)(NULL))) {
r278to_runnable_0(C,a1);
_a=r431to_runnable(((T431*)((((T278*)C))->_arguments/*20*/)),a1);
/*IF*/if ((_a)==((void*)(NULL))) {
r278error(X662start_position(/*(IRF4.6arg1*/r431first(((T431*)((((T278*)C))->_arguments/*20*/)))/*)*/),((T0*)ms55_470));
}
else {
C->_arguments=_a;
}
/*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
r431match_with(((T431*)((((T278*)C))->_arguments/*20*/)),(((T278*)C))->_run_feature/*12*/);
}
/*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
_tla=(((T278*)C))->_result_type/*16*/;
if(NULL!=(_tla))switch(((T0*)_tla)->id) {
case 239: 
break;
default:
_tla=NULL;
};/*IF*/if ((_tla)!=((void*)(NULL))) {
C->_result_type=X291run_type(X662result_type(/*(IRF4.6arg1*/r431first(((T431*)((((T278*)C))->_arguments/*20*/)))/*)*/));
}
/*FI*/}
/*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
R=(T0*)C;
}
/*FI*/}
else {
R=r278twin(C);
/*[IRF3.3set_current_type*/((((T278*)(((T278*)R))))->_current_type)=(NULL);
/*]*/
R=r278to_runnable(((T278*)R),a1);
}
/*FI*/return R;
}
void r278bracketed_pretty_print(T278* C){
r238put_character(((T238*)(oBC364fmt)),'\50');
r278pretty_print(C);
r238put_character(((T238*)(oBC364fmt)),'\51');
}
/*No:CALL_INFIX_OR_ELSE.result_type*/
T0* r278twin(T278* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T278*)R)=*C;
return R;
}
/*No:CALL_INFIX_OR_ELSE.set_current_type*/
T0* r278operator(void){
T0* R=NULL;
R=((T0*)ms42_473);
return R;
}
/*No:CALL_INFIX_OR_ELSE.atomic_precedence*/
void r278pretty_print(T278* C){
/*IF*/if ((X662precedence((((T278*)C))->_target/*8*/))==(13)) {
X662pretty_print((((T278*)C))->_target/*8*/);
r278print_op(C);
/*IF*/if ((X662precedence(/*(IRF4.6arg1*/r431first(((T431*)((((T278*)C))->_arguments/*20*/)))/*)*/))==(13)) {
X662pretty_print(/*(IRF4.6arg1*/r431first(((T431*)((((T278*)C))->_arguments/*20*/)))/*)*/);
}
 else if ((4)>=(X662precedence(/*(IRF4.6arg1*/r431first(((T431*)((((T278*)C))->_arguments/*20*/)))/*)*/))) {
X662bracketed_pretty_print(/*(IRF4.6arg1*/r431first(((T431*)((((T278*)C))->_arguments/*20*/)))/*)*/);
}
else {
X662pretty_print(/*(IRF4.6arg1*/r431first(((T431*)((((T278*)C))->_arguments/*20*/)))/*)*/);
}
/*FI*/}
 else if ((X662precedence(/*(IRF4.6arg1*/r431first(((T431*)((((T278*)C))->_arguments/*20*/)))/*)*/))==(13)) {
/*IF*/if ((X662precedence((((T278*)C))->_target/*8*/))>=(4)) {
X662bracketed_pretty_print((((T278*)C))->_target/*8*/);
}
else {
X662pretty_print((((T278*)C))->_target/*8*/);
}
/*FI*/r278print_op(C);
X662pretty_print(/*(IRF4.6arg1*/r431first(((T431*)((((T278*)C))->_arguments/*20*/)))/*)*/);
}
 else if ((4)<=(X662precedence((((T278*)C))->_target/*8*/))) {
X662bracketed_pretty_print((((T278*)C))->_target/*8*/);
r278print_op(C);
/*IF*/if ((4)<=(X662precedence(/*(IRF4.6arg1*/r431first(((T431*)((((T278*)C))->_arguments/*20*/)))/*)*/))) {
X662bracketed_pretty_print(/*(IRF4.6arg1*/r431first(((T431*)((((T278*)C))->_arguments/*20*/)))/*)*/);
}
else {
X662pretty_print(/*(IRF4.6arg1*/r431first(((T431*)((((T278*)C))->_arguments/*20*/)))/*)*/);
}
/*FI*/}
else {
X662pretty_print((((T278*)C))->_target/*8*/);
r278print_op(C);
X662pretty_print(/*(IRF4.6arg1*/r431first(((T431*)((((T278*)C))->_arguments/*20*/)))/*)*/);
}
/*FI*/}
void r278print_op(T278* C){
r238put_character(((T238*)(oBC364fmt)),'\40');
/*[IRF3.6pretty_print*/{T454* C1=((T454*)((((T278*)C))->_feature_name/*24*/));
r238put_string(((T238*)(oBC364fmt)),(((T454*)C1))->_to_string/*4*/);
}/*]*/
r238put_character(((T238*)(oBC364fmt)),'\40');
}
/*No:CALL_INFIX_OR_ELSE.current_type*/
void r278make_call_1(T278* C,T0* a1,T0* a2,T0* a3){
C->_target=a1;
C->_feature_name=a2;
C->_arguments=a3;
}
/*No:CALL_INFIX_OR_ELSE.is_manifest_string*/
/*No:CALL_INFIX_OR_ELSE.is_void*/
void r278to_runnable_0(T278* C,T0* a1){
C->_current_type=a1;
r278cpc_to_runnable(C,a1);
C->_result_type=/*X496*/((T0*)(((T808*)((T808*)((((T278*)C))->_run_feature/*12*/))))->_result_type/*24*/);
/*IF*/if (((((T278*)C))->_result_type/*16*/)==((void*)(NULL))) {
r683add_position(X496start_position((((T278*)C))->_run_feature/*12*/));
r278error((((T454*)((T454*)((((T278*)C))->_feature_name/*24*/))))->_start_position/*8*/,((T0*)ms1_295));
}
 else if (X291is_like_current((((T278*)C))->_result_type/*16*/)) {
C->_result_type=X662result_type((((T278*)C))->_target/*8*/);
}
/*FI*/}
void r278cpc_to_runnable(T278* C,T0* a1){
T0* _rc=NULL;
T0* _t=NULL;
_t=X662to_runnable((((T278*)C))->_target/*8*/,a1);
/*IF*/if ((_t)==((void*)(NULL))) {
r683add_position(X662start_position((((T278*)C))->_target/*8*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms2_135);
r683fatal_error(((T683*)(oBC364eh)),b1);
}/*]*/
}
/*FI*/C->_target=_t;
_rc=X291run_class(X662result_type((((T278*)C))->_target/*8*/));
C->_run_feature=r368get_rf(((T368*)_rc),(T0*)C);
r576update((((T278*)C))->_target/*8*/,(((T278*)C))->_run_feature/*12*/);
}
void r278error(T0* a1,T0* a2){
r683add_position(a1);
r683error(((T683*)(oBC364eh)),a2);
}
/*No:CALL_INFIX_OR_ELSE.fatal_error*/
/*No:CALL_INFIX_OR_ELSE.fz_bad_argument*/
/*No:CALL_INFIX_OR_ELSE.arg1*/
T0*oBC670std_fr1=NULL;
int r670is_readable(T0* a1){
int R=0;
r675connect_to(((T675*)(oBC670std_fr1)),a1);
R=/*(IRF4.7is_connected*/((((T675*)((T675*)(oBC670std_fr1))))->_path/*4*/)!=(NULL)/*)*/;
/*IF*/if (R) {
r675disconnect(((T675*)(oBC670std_fr1)));
}
/*FI*/return R;
}
/*No:FILE_TOOLS.rename_to*/
T0* r767add_comment(T767* C,T0* a1){
T0* R=NULL;
/*IF*/if (((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r52count(((T52*)((((T393*)((T393*)a1)))->_list/*4*/)))/*)*/)==(0))) {
R=(T0*)C;
}
else {
{T529*n=malloc(sizeof(*n));
*n=M529;
r529make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI*/return R;
}
int r767to_integer(T767* C){
int R=0;
T0* _rf1=NULL;
_rf1=(((T767*)C))->_run_feature/*12*/;
if(NULL!=(_rf1))switch(((T0*)_rf1)->id) {
case 808: 
break;
default:
_rf1=NULL;
};/*IF*/if ((_rf1)==((void*)(NULL))) {
r767error(/*(IRF4.6start_position*/(((T406*)((T406*)((((T767*)C))->_feature_name/*20*/))))->_start_position/*8*//*)*/,((T0*)ms69_470));
}
else {
R=X662to_integer((((T808*)((T808*)_rf1)))->_value/*36*/);
}
/*FI*/return R;
}
int r767is_a(T767* C,T0* a1){
int R=0;
R=X291is_a(X291run_type((((T767*)C))->_result_type/*16*/),X291run_type(X662result_type(a1)));
/*IF*/if (!(R)) {
r683add_position(/*(IRF4.6start_position*/(((T406*)((T406*)((((T767*)C))->_feature_name/*20*/))))->_start_position/*8*//*)*/);
r767error(X662start_position(a1),((T0*)ms4_662));
}
/*FI*/return R;
}
/*No:CALL_PREFIX_PLUS.is_current*/
void r767make(T767* C,T0* a1,T0* a2){
{T406*n=malloc(sizeof(*n));
*n=M406;
r406make(n,r767operator(),a1);
C->_feature_name=(T0*)n;
}
r767make_call0(C,a2,(((T767*)C))->_feature_name/*20*/);
}
void r767print_as_target(T767* C){
r238put_character(((T238*)(oBC364fmt)),'\50');
r767pretty_print(C);
r238put_character(((T238*)(oBC364fmt)),'\51');
r238put_character(((T238*)(oBC364fmt)),'\56');
}
/*No:CALL_PREFIX_PLUS.nb_errors*/
/*No:CALL_PREFIX_PLUS.feature_name*/
/*No:CALL_PREFIX_PLUS.fz_iinaiv*/
/*No:CALL_PREFIX_PLUS.run_feature*/
/*No:CALL_PREFIX_PLUS.start_position*/
/*No:CALL_PREFIX_PLUS.target*/
/*No:CALL_PREFIX_PLUS.precedence*/
T0* r767to_runnable(T767* C,T0* a1){
T0* R=NULL;
/*IF*/if (((((T767*)C))->_current_type/*4*/)==((void*)(NULL))) {
r767to_runnable_0(C,a1);
/*IF*/if (((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0))&&((X496arg_count((((T767*)C))->_run_feature/*12*/))>(0))) {
r683add_position((((T406*)((T406*)((((T767*)C))->_feature_name/*20*/))))->_start_position/*8*/);
r767error(X496start_position((((T767*)C))->_run_feature/*12*/),((T0*)ms1_752));
}
/*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
R=(T0*)C;
}
/*FI*/}
else {
R=r767twin(C);
/*[IRF3.3set_current_type*/((((T767*)(((T767*)R))))->_current_type)=(NULL);
/*]*/
R=r767to_runnable(((T767*)R),a1);
}
/*FI*/return R;
}
void r767bracketed_pretty_print(T767* C){
r238put_character(((T238*)(oBC364fmt)),'\50');
r767pretty_print(C);
r238put_character(((T238*)(oBC364fmt)),'\51');
}
/*No:CALL_PREFIX_PLUS.result_type*/
T0* r767twin(T767* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T767*)R)=*C;
return R;
}
/*No:CALL_PREFIX_PLUS.set_current_type*/
T0* r767operator(void){
T0* R=NULL;
R=((T0*)ms43_473);
return R;
}
void r767pretty_print(T767* C){
/*[IRF3.6pretty_print*/{T406* C1=((T406*)((((T767*)C))->_feature_name/*20*/));
r238put_string(((T238*)(oBC364fmt)),(((T406*)C1))->_to_string/*4*/);
}/*]*/
r238put_character(((T238*)(oBC364fmt)),'\40');
/*IF*/if ((X662precedence((((T767*)C))->_target/*8*/))<(11)) {
r238put_character(((T238*)(oBC364fmt)),'\50');
X662pretty_print((((T767*)C))->_target/*8*/);
r238put_character(((T238*)(oBC364fmt)),'\51');
}
else {
X662pretty_print((((T767*)C))->_target/*8*/);
}
/*FI*/}
/*No:CALL_PREFIX_PLUS.current_type*/
/*No:CALL_PREFIX_PLUS.is_manifest_string*/
/*No:CALL_PREFIX_PLUS.is_void*/
void r767to_runnable_0(T767* C,T0* a1){
C->_current_type=a1;
r767cpc_to_runnable(C,a1);
C->_result_type=/*X496*/((T0*)(((T808*)((T808*)((((T767*)C))->_run_feature/*12*/))))->_result_type/*24*/);
/*IF*/if (((((T767*)C))->_result_type/*16*/)==((void*)(NULL))) {
r683add_position(X496start_position((((T767*)C))->_run_feature/*12*/));
r767error((((T406*)((T406*)((((T767*)C))->_feature_name/*20*/))))->_start_position/*8*/,((T0*)ms1_295));
}
 else if (X291is_like_current((((T767*)C))->_result_type/*16*/)) {
C->_result_type=X662result_type((((T767*)C))->_target/*8*/);
}
/*FI*/}
void r767cpc_to_runnable(T767* C,T0* a1){
T0* _rc=NULL;
T0* _t=NULL;
_t=X662to_runnable((((T767*)C))->_target/*8*/,a1);
/*IF*/if ((_t)==((void*)(NULL))) {
r683add_position(X662start_position((((T767*)C))->_target/*8*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms2_135);
r683fatal_error(((T683*)(oBC364eh)),b1);
}/*]*/
}
/*FI*/C->_target=_t;
_rc=X291run_class(X662result_type((((T767*)C))->_target/*8*/));
C->_run_feature=r368get_rf(((T368*)_rc),(T0*)C);
r576update((((T767*)C))->_target/*8*/,(((T767*)C))->_run_feature/*12*/);
}
void r767make_call0(T767* C,T0* a1,T0* a2){
C->_target=a1;
C->_feature_name=a2;
}
void r767error(T0* a1,T0* a2){
r683add_position(a1);
r683error(((T683*)(oBC364eh)),a2);
}
/*No:CALL_PREFIX_PLUS.fatal_error*/
/*No:CALL_PREFIX_PLUS.us_plus*/
T0* r880add_comment(T880* C,T0* a1){
T0* R=NULL;
/*IF*/if (((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r52count(((T52*)((((T393*)((T393*)a1)))->_list/*4*/)))/*)*/)==(0))) {
R=(T0*)C;
}
 else {/*AT*//*IF*/if ((/*(IRF4.6count*/r52count(((T52*)((((T393*)((T393*)a1)))->_list/*4*/)))/*)*/)==(1)) {
R=(T0*)C;
}
else {
{T46*n=malloc(sizeof(*n));
*n=M46;
r46make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI*/}
/*FI*/return R;
}
/*No:E_LOOP.fz_is_not_boolean*/
void r880make(T880* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5,T0* a6){
C->_start_position=a1;
C->_initialize=a2;
C->_invariant_clause=a3;
C->_variant_clause=a4;
C->_until_expression=a5;
C->_loop_body=a6;
}
/*No:E_LOOP.nb_errors*/
/*No:E_LOOP.start_position*/
/*No:E_LOOP.until_expression*/
T0* r880to_runnable(T880* C,T0* a1){
T0* R=NULL;
int _loop_check=0;
T0* _ue=NULL;
_loop_check=r590loop_check(((T590*)(oBC364run_control)));
/*IF*/if (((((T880*)C))->_run_compound/*4*/)==((void*)(NULL))) {
C->_run_compound=a1;
/*IF*/if (((((T880*)C))->_initialize/*12*/)!=((void*)(NULL))) {
C->_initialize=r592to_runnable(((T592*)((((T880*)C))->_initialize/*12*/)),r880current_type(C));
/*IF*/if (((((T880*)C))->_initialize/*12*/)==((void*)(NULL))) {
r880error((((T880*)C))->_start_position/*8*/,((T0*)ms4_880));
}
/*FI*/}
/*FI*//*IF*/if ((_loop_check)&&(((((T880*)C))->_invariant_clause/*16*/)!=((void*)(NULL)))) {
C->_invariant_clause=r213to_runnable(((T213*)((((T880*)C))->_invariant_clause/*16*/)),(((T592*)((T592*)a1)))->_current_type/*4*/);
/*IF*/if (((((T880*)C))->_invariant_clause/*16*/)==((void*)(NULL))) {
r880error((((T880*)C))->_start_position/*8*/,((T0*)ms5_880));
}
/*FI*/}
/*FI*//*IF*/if ((_loop_check)&&(((((T880*)C))->_variant_clause/*20*/)!=((void*)(NULL)))) {
C->_variant_clause=X856to_runnable((((T880*)C))->_variant_clause/*20*/,r880current_type(C));
/*IF*/if (((((T880*)C))->_variant_clause/*20*/)==((void*)(NULL))) {
r880error((((T880*)C))->_start_position/*8*/,((T0*)ms6_880));
}
/*FI*/}
/*FI*/_ue=X662to_runnable((((T880*)C))->_until_expression/*24*/,r880current_type(C));
/*IF*/if ((_ue)!=((void*)(NULL))) {
/*IF*/if (!(X291is_boolean(X662result_type(_ue)))) {
r880error(X662start_position(_ue),((T0*)ms7_880));
r683add_type(X662result_type(_ue),((T0*)ms73_470));
r683print_as_error(((T683*)(oBC364eh)));
}
/*FI*/C->_until_expression=_ue;
}
else {
r880error((((T880*)C))->_start_position/*8*/,((T0*)ms8_880));
}
/*FI*//*IF*/if (((((T880*)C))->_loop_body/*28*/)!=((void*)(NULL))) {
C->_loop_body=r592to_runnable(((T592*)((((T880*)C))->_loop_body/*28*/)),r880current_type(C));
/*IF*/if (((((T880*)C))->_loop_body/*28*/)==((void*)(NULL))) {
r880error((((T880*)C))->_start_position/*8*/,((T0*)ms9_880));
}
/*FI*/}
/*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
R=(T0*)C;
}
/*FI*/}
else {
{T880*n=malloc(sizeof(*n));
*n=M880;
r880make(n,(((T880*)C))->_start_position/*8*/,(((T880*)C))->_initialize/*12*/,(((T880*)C))->_invariant_clause/*16*/,(((T880*)C))->_variant_clause/*20*/,(((T880*)C))->_until_expression/*24*/,(((T880*)C))->_loop_body/*28*/);
R=(T0*)n;
}
R=r880to_runnable(((T880*)R),a1);
}
/*FI*/return R;
}
/*No:E_LOOP.variant_clause*/
/*No:E_LOOP.invariant_clause*/
/*No:E_LOOP.fz_from*/
/*No:E_LOOP.loop_body*/
/*No:E_LOOP.fz_loop*/
void r880pretty_print(T880* C){
int _semi_colon_flag=0;
r238indent(((T238*)(oBC364fmt)));
r238keyword(((T238*)(oBC364fmt)),((T0*)ms19_470));
/*IF*/if (((((T880*)C))->_initialize/*12*/)!=((void*)(NULL))) {
r592pretty_print(((T592*)((((T880*)C))->_initialize/*12*/)));
}
/*FI*//*IF*/if (((((T880*)C))->_invariant_clause/*16*/)!=((void*)(NULL))) {
r213pretty_print(((T213*)((((T880*)C))->_invariant_clause/*16*/)));
}
/*FI*//*IF*/if (((((T880*)C))->_variant_clause/*20*/)!=((void*)(NULL))) {
r238indent(((T238*)(oBC364fmt)));
r238keyword(((T238*)(oBC364fmt)),((T0*)ms51_470));
_semi_colon_flag=(((T238*)((T238*)(oBC364fmt))))->_semi_colon_flag/*25*/;
/*[IRF3.3set_semi_colon_flag*/((((T238*)(((T238*)(oBC364fmt)))))->_semi_colon_flag)=(0);
/*]*/
X856pretty_print((((T880*)C))->_variant_clause/*20*/);
/*[IRF3.3set_semi_colon_flag*/((((T238*)(((T238*)(oBC364fmt)))))->_semi_colon_flag)=(_semi_colon_flag);
/*]*/
}
/*FI*/r238indent(((T238*)(oBC364fmt)));
r238keyword(((T238*)(oBC364fmt)),((T0*)ms50_470));
r238level_incr(((T238*)(oBC364fmt)));
r238indent(((T238*)(oBC364fmt)));
/*[IRF3.3set_semi_colon_flag*/((((T238*)(((T238*)(oBC364fmt)))))->_semi_colon_flag)=(0);
/*]*/
X662pretty_print((((T880*)C))->_until_expression/*24*/);
r238level_decr(((T238*)(oBC364fmt)));
r238indent(((T238*)(oBC364fmt)));
r238keyword(((T238*)(oBC364fmt)),((T0*)ms32_470));
r238indent(((T238*)(oBC364fmt)));
/*IF*/if (((((T880*)C))->_loop_body/*28*/)!=((void*)(NULL))) {
r592pretty_print(((T592*)((((T880*)C))->_loop_body/*28*/)));
}
/*FI*/r238indent(((T238*)(oBC364fmt)));
r238keyword(((T238*)(oBC364fmt)),((T0*)ms10_880));
/*IF*/if (r238print_end_loop(((T238*)(oBC364fmt)))) {
r238put_end(((T238*)(oBC364fmt)),((T0*)ms32_470));
}
/*FI*/}
T0* r880current_type(T880* C){
T0* R=NULL;
/*IF*/if (((((T880*)C))->_run_compound/*4*/)!=((void*)(NULL))) {
R=(((T592*)((T592*)((((T880*)C))->_run_compound/*4*/))))->_current_type/*4*/;
}
/*FI*/return R;
}
/*No:E_LOOP.run_compound*/
/*No:E_LOOP.fz_variant*/
void r880error(T0* a1,T0* a2){
r683add_position(a1);
r683error(((T683*)(oBC364eh)),a2);
}
/*No:E_LOOP.fz_until*/
/*No:E_LOOP.end_mark_comment*/
/*No:E_LOOP.initialize*/

