/*
-- ANSI C code generated by :
-- SmallEiffel The GNU Eiffel Compiler -- Release (- 0.79)      --
-- 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"


T0* r209start_position(T209* C){
T0* R=NULL;
R=X144start_position((C)->_instruction/*4*/);
return R;
}
/*No:INSTRUCTION_WITH_COMMENT.add_comment*/


T0* r209to_runnable(T209* C,T0* a1){
T0* R=NULL;
T0* _ri=NULL;
_ri=X144to_runnable((C)->_instruction/*4*/,a1);
/*[IF*/
if((_ri)==((void*)(NULL))){
r209error(X144start_position((C)->_instruction/*4*/),((T0*)ms209_18416));
R=(T0*)C;
}
 else if((_ri)==((void*)((C)->_instruction/*4*/))){
R=(T0*)C;
}
else{
{T209*n=malloc(sizeof(*n));
*n=M209;
r209make(n,_ri,(C)->_comment/*8*/);
R=(T0*)n;
}
}
/*FI]*/
return R;
}
/*No:INSTRUCTION_WITH_COMMENT.instruction*/


void r209error(T0* a1,T0* a2){
r37add_position(a1);
r37error((T37*)(oBC11eh),a2);
}
/*No:INSTRUCTION_WITH_COMMENT.end_mark_comment*/


void r209make(T209* C,T0* a1,T0* a2){
C->_instruction=a1;
C->_comment=a2;
}


void r209pretty_print(T209* C){
T2 _fmt_mode=0;
/*[IF*/
if(r64dummy((T64*)((C)->_comment/*8*/))){
X144pretty_print((C)->_instruction/*4*/);
}
else{
_fmt_mode=((T310*)(oBC11fmt))->_mode/*4*/;
/*[IRF3.3set_zen*/((((T310*)((T310*)(oBC11fmt))))->_mode)=(1);
/*]*/
X144pretty_print((C)->_instruction/*4*/);
r310level_incr((T310*)(oBC11fmt));
r310indent((T310*)(oBC11fmt));
r310level_decr((T310*)(oBC11fmt));
r64pretty_print((T64*)((C)->_comment/*8*/));
/*[IRF3.3set_mode*/((((T310*)((T310*)(oBC11fmt))))->_mode)=(_fmt_mode);
/*]*/
}
/*FI]*/
}
/*No:INSTRUCTION_WITH_COMMENT.comment*/
/*No:IFTHENELSE.clear_current_type*/
/*No:IFTHENELSE.nb_errors*/
/*No:IFTHENELSE.start_position*/


T0* r206twin(T206* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T206*)R)=*C;
return R;
}


T0* r206add_comment(T206* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r32count(((T32*)((((T64*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
 else {/*AT*//*[IF*/
if((/*(IRF4.6count*/r32count(((T32*)((((T64*)a1))->_list/*4*/)))/*)*/)==(1)){
R=(T0*)C;
}
else{
{T209*n=malloc(sizeof(*n));
*n=M209;
r209make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:IFTHENELSE.set_else_compound*/


void r206add_if_then(T206* C,T0* a1,T0* a2){
T0* _ifthen=NULL;
{T210*n=malloc(sizeof(*n));
*n=M210;
r210make(n,a1,a2);
_ifthen=(T0*)n;
}
/*[IF*/
if(((C)->_ifthenlist/*8*/)==((void*)(NULL))){
{T211*n=malloc(sizeof(*n));
*n=M211;
/*[IRF3.3make*/((((T211*)(n)))->_list)=(se_ma212(1,
_ifthen));
/*]*/
C->_ifthenlist=(T0*)n;
}
}
else{
/*[IRF3.5add_last*/r212add_last(((T212*)(((T211*)((C)->_ifthenlist/*8*/))->_list/*0*/)),_ifthen);
/*]*/
}
/*FI]*/
}


T0* r206to_runnable(T206* C,T0* a1){
T0* R=NULL;
T0* _ec=NULL;
T0* _itl=NULL;
T2 _ne=0;
_ne=/*(IRF4.9nb_errors*/((T37*)(oBC11eh))->_nb_errors/*4*//*)*/;
/*[IF*/
if(((C)->_current_type/*16*/)==((void*)(NULL))){
C->_current_type=a1;
_itl=r211to_runnable((T211*)((C)->_ifthenlist/*8*/),a1);
/*[IF*/
if((_itl)==((void*)(NULL))){
}
else{
C->_ifthenlist=_itl;
}
/*FI]*/
/*[IF*/
if((((/*(IRF4.9nb_errors*/((T37*)(oBC11eh))->_nb_errors/*4*//*)*/)-(_ne))==(0))&&(((C)->_else_compound/*12*/)!=((void*)(NULL)))){
_ec=r200to_runnable((T200*)((C)->_else_compound/*12*/),a1);
/*[IF*/
if((_ec)==((void*)(NULL))){
}
else{
C->_else_compound=_ec;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((_itl)!=((void*)(NULL))){
R=(T0*)C;
}
/*FI]*/
}
else{
R=r206twin(C);
/*[IRF3.3clear_current_type*/((((T206*)(((T206*)R))))->_current_type)=(NULL);
/*]*/
R=r206to_runnable(((T206*)R),a1);
}
/*FI]*/
return R;
}
/*No:IFTHENELSE.ifthenlist*/
/*No:IFTHENELSE.else_compound*/
/*No:IFTHENELSE.current_type*/
/*No:IFTHENELSE.end_mark_comment*/
/*No:IFTHENELSE.make*/


void r206pretty_print(T206* C){
r310keyword((T310*)(oBC11fmt),((T0*)ms206_420a));
r211pretty_print((T211*)((C)->_ifthenlist/*8*/));
/*[IF*/
if(((C)->_else_compound/*12*/)!=((void*)(NULL))){
r310indent((T310*)(oBC11fmt));
r310keyword((T310*)(oBC11fmt),((T0*)ms206_1740));
r200pretty_print((T200*)((C)->_else_compound/*12*/));
}
/*FI]*/
r310indent((T310*)(oBC11fmt));
/*[IF*/
if(((T310*)(oBC11fmt))->_semi_colon_flag/*25*/){
r310keyword((T310*)(oBC11fmt),((T0*)ms206_1520));
}
else{
r310keyword((T310*)(oBC11fmt),((T0*)ms206_951));
}
/*FI]*/
/*[IF*/
if(r310print_end_if((T310*)(oBC11fmt))){
r310put_end((T310*)(oBC11fmt),((T0*)ms206_420));
}
/*FI]*/
}
/*No:RUN_FEATURE_1.use_current_state*/
/*No:RUN_FEATURE_1.arguments*/
/*No:RUN_FEATURE_1.actuals_clients*/


void r325initialize(T325* C){
T2 _i=0;
C->_result_type=/*X184result_type*/((T0*)((T197*)((C)->_base_feature/*24*/))->_result_type/*20*/);
C->_result_type=X62to_runnable((C)->_result_type/*32*/,(C)->_current_type/*4*/);
_i=r67index_of((T67*)(/*X184names*/((T0*)((T197*)((C)->_base_feature/*24*/))->_names/*8*/)),(C)->_name/*16*/);
C->_value=X184value((C)->_base_feature/*24*/,_i);
C->_value=X89to_runnable((C)->_value/*28*/,(C)->_current_type/*4*/);
}


T0* r325start_position(T325* C){
T0* R=NULL;
R=X184start_position((C)->_base_feature/*24*/);
return R;
}
/*No:RUN_FEATURE_1.clients_memory*/
/*No:RUN_FEATURE_1.ucs_not_computed*/
/*No:RUN_FEATURE_1.current_type*/


void r325add_client(T325* C,T0* a1){
T2 _i=0;
/*[IF*/
if(((C)->_actuals_clients/*12*/)==((void*)(NULL))){
{T319*n=malloc(sizeof(*n));
*n=M319;
r319with_capacity(n,4);
C->_actuals_clients=(T0*)n;
}
r319add_last((T319*)((C)->_actuals_clients/*12*/),a1);
}
else{
_i=r319fast_index_of((T319*)((C)->_actuals_clients/*12*/),a1);
/*[IF*/
if((_i)>(((T319*)((C)->_actuals_clients/*12*/))->_upper/*8*/)){
r319add_last((T319*)((C)->_actuals_clients/*12*/),a1);
}
/*FI]*/
}
/*FI]*/
r313add_client((T313*)(r325run_class(C)),a1);
}


T0* r325run_class(T325* C){
T0* R=NULL;
R=X62run_class((C)->_current_type/*4*/);
return R;
}
/*No:RUN_FEATURE_1.result_type*/
/*No:RUN_FEATURE_1.base_feature*/


void r325make(T325* C,T0* a1,T0* a2,T0* a3){
C->_current_type=a1;
C->_name=a2;
C->_base_feature=a3;
/*[IRF3.5add_rf*/r315put(((T315*)(((T313*)(r325run_class(C)))->_feature_dictionary/*20*/)),(T0*)C,X65to_key(a2));
/*]*/
r42incr_magic_count((T42*)(oBC11small_eiffel));
C->_use_current_state=15;
r42push((T42*)(oBC11small_eiffel),(T0*)C);
r325initialize(C);
r42pop((T42*)(oBC11small_eiffel));
}
/*No:RUN_FEATURE_1.name*/
/*No:RUN_FEATURE_1.local_vars*/


T2 r325arg_count(void){
T2 R=0;
/*[IF*/
/*AF*//*AE*/
/*FI]*/
return R;
}


T0* r325clients(T325* C){
T0* R=NULL;
T0* _bfbc=NULL;
T0* _bc=NULL;
/*[IF*/
if(((C)->_clients_memory/*8*/)==((void*)(NULL))){
_bc=X62base_class((C)->_current_type/*4*/);
_bfbc=/*X184base_class*/((T0*)((T197*)((C)->_base_feature/*24*/))->_base_class/*4*/);
/*[IF*/
if((_bc)==((void*)(_bfbc))){
R=/*X184clients*/((T0*)((T197*)((C)->_base_feature/*24*/))->_clients/*16*/);
}
else{
R=r41clients_for(((T41*)_bc),(C)->_name/*16*/);
}
/*FI]*/
C->_clients_memory=R;
}
else{
R=(C)->_clients_memory/*8*/;
}
/*FI]*/
return R;
}


T6 r325is_exported_in(T325* C,T0* a1){
T6 R=0;
R=r83gives_permission_to((T83*)(r325clients(C)),a1);
return R;
}
/*No:RUN_FEATURE_1.value*/
/*No:ONCE_FUNCTION.fz_once*/
/*No:ONCE_FUNCTION.use_current_state*/


T0* r291run_require(T0* a1){
T0* R=NULL;
T0* _ct=NULL;
T0* _ar=NULL;
T0* _hc=NULL;
T0* _er=NULL;
T0* _r=NULL;
T2 _i=0;
r332clear((T332*)(oBC75require_collector));
_ct=/*X312current_type*/((T0*)(((T325*)a1))->_current_type/*4*/);
r41collect_for((T41*)(X62base_class(_ct)),1,/*X312name*/((T0*)(((T325*)a1))->_name/*16*/));
/*[IF*/
if(!(r332empty((T332*)(oBC75require_collector)))){
_i=1;
while (!((_i)>(((T332*)(oBC75require_collector))->_upper/*8*/))) {
_er=r332item((T332*)(oBC75require_collector),_i);
_hc=(((T271*)_er))->_header_comment/*4*/;
/*[IF*/
if(!(/*(IRF4.7empty*/((((T271*)_er))->_list/*8*/)==(NULL)/*)*/)){
_r=r291runnable((((T271*)_er))->_list/*8*/,_ct,a1);
/*[IF*/
if((_r)!=((void*)(NULL))){
{T271*n=malloc(sizeof(*n));
*n=M271;
r271make_runnable(n,_r,_ct,a1);
_er=(T0*)n;
}
/*[IRF3.3set_header_comment*/((((T271*)(((T271*)_er))))->_header_comment)=(_hc);
/*]*/
/*[IF*/
if((_ar)==((void*)(NULL))){
_ar=se_ma332(1,
_er);
}
else{
r332add_last(((T332*)_ar),_er);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
_i=(_i)+(1);
}
/*[IF*/
if((_ar)!=((void*)(NULL))){
{T334*n=malloc(sizeof(*n));
*n=M334;
/*[IRF3.3make*/((((T334*)(n)))->_list)=(_ar);
/*]*/
R=(T0*)n;
}
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r291start_position(T291* C){
T0* R=NULL;
R=X65start_position(/*(IRF4.6first_name*/r67item(((T67*)((C)->_names/*8*/)),1)/*)*/);
return R;
}


T6 r291is_merge_with(T291* C,T0* a1,T0* a2){
T6 R=0;
R=1;
/*[IF*/
if(((C)->_result_type/*56*/)!=((void*)(X75result_type(a1)))){
/*[IF*/
if((((C)->_result_type/*56*/)==((void*)(NULL)))||((X75result_type(a1))==((void*)(NULL)))){
R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_arguments/*24*/)!=((void*)(X75arguments(a1)))){
/*[IF*/
if((((C)->_arguments/*24*/)==((void*)(NULL)))||((X75arguments(a1))==((void*)(NULL)))){
R=0;
}
 else if((/*(IRF4.6count*/(((T175*)(((T171*)((C)->_arguments/*24*/))->_flat_list/*8*/)))->_upper/*12*//*)*/)!=(/*(IRF4.6count*/(((T175*)(((T171*)(X75arguments(a1)))->_flat_list/*8*/)))->_upper/*12*//*)*/)){
R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
/*[IF*/
if(((C)->_result_type/*56*/)!=((void*)(NULL))){
R=X62is_a_in((C)->_result_type/*56*/,X75result_type(a1),a2);
}
/*FI]*/
/*[IF*/
if((R)&&(((C)->_arguments/*24*/)!=((void*)(NULL)))){
R=r171is_a_in((T171*)((C)->_arguments/*24*/),X75arguments(a1),a2);
}
/*FI]*/
/*[IF*/
if(!(R)){
R=1;
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC37explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T38*)((T38*)(oBC37positions))))->_upper)=(-(1));
/*]*/
/*]*/
/*[IF*/
if(((C)->_result_type/*56*/)!=((void*)(NULL))){
R=X62is_a_in(X75result_type(a1),(C)->_result_type/*56*/,a2);
}
/*FI]*/
/*[IF*/
if((R)&&(((C)->_arguments/*24*/)!=((void*)(NULL)))){
R=r171is_a_in((T171*)(X75arguments(a1)),(C)->_arguments/*24*/,a2);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
r291merge_header_comments(C,a1);
}
/*FI]*/
return R;
}
/*No:ONCE_FUNCTION.first_name*/
/*No:ONCE_FUNCTION.em1*/
/*No:ONCE_FUNCTION.header_comment*/


void r291pretty_print_profile(T291* C){
r291pretty_print_names(C);
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r291pretty_print_arguments(C);
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(3);
/*]*/
/*[IF*/
if(((C)->_result_type/*56*/)!=((void*)(NULL))){
r310put_string((T310*)(oBC11fmt),((T0*)ms75_186));
X62pretty_print((C)->_result_type/*56*/);
}
/*FI]*/
}
/*No:ONCE_FUNCTION.names*/
/*No:ONCE_FUNCTION.result_type*/
/*No:ONCE_FUNCTION.code_require*/
/*No:ONCE_FUNCTION.ensure_assertion*/


void r291add_into(T291* C,T0* a1){
T0* _fn=NULL;
T2 _i=0;
C->_base_class=r39base_class((T39*)(X65start_position(r67item((T67*)((C)->_names/*8*/),1))));
_i=1;
while (!((_i)>(r67count((T67*)((C)->_names/*8*/))))) {
_fn=r67item((T67*)((C)->_names/*8*/),_i);
/*[IF*/
if(r74has(((T74*)a1),X65to_key(_fn))){
_fn=/*X75first_name*/((T0*)/*(IRF4.6first_name*/r67item(((T67*)(((T183*)(r74at(((T74*)a1),X65to_key(_fn))))->_names/*8*/)),1)/*)*/);
r37add_position(X65start_position(_fn));
r37add_position(X65start_position(r67item((T67*)((C)->_names/*8*/),_i)));
r37error((T37*)(oBC11eh),((T0*)ms75_41905));
/*[IRF3.6append*/{T0* b1=X65to_string(_fn);
r7append((T7*)(oBC37explanation),b1);
}/*]*/
r37error((T37*)(oBC11eh),((T0*)ms12_47));
}
else{
r74put(((T74*)a1),(T0*)C,X65to_key(_fn));
}
/*FI]*/
_i=(_i)+(1);
}
}
/*No:ONCE_FUNCTION.fz_rescue*/
/*No:ONCE_FUNCTION.fz_is*/


void r291make_routine(T291* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5){
/*[IRF3.3make_e_feature*/((((T291*)(C)))->_names)=(a1);
/*]*/
C->_header_comment=a4;
C->_arguments=a2;
C->_obsolete_mark=a3;
C->_require_assertion=a5;
}


T0* r291to_run_feature(T291* C,T0* a1,T0* a2){
T0* R=NULL;
r291check_obsolete(C);
{T342*n=malloc(sizeof(*n));
*n=M342;
r342make(n,a1,a2,(T0*)C);
R=(T0*)n;
}
return R;
}
/*No:ONCE_FUNCTION.arguments*/
/*No:ONCE_FUNCTION.pretty_print_once_or_do*/


void r291pretty_print_routine_body(T291* C){
/*[IF*/
if(((C)->_local_vars/*16*/)!=((void*)(NULL))){
r162pretty_print((T162*)((C)->_local_vars/*16*/));
}
/*FI]*/
r310indent((T310*)(oBC11fmt));
/*[IRF3.2pretty_print_once_or_do*/r310put_string((T310*)(oBC11fmt),((T0*)ms12_1724a));
/*]*/
r310put_character((T310*)(oBC11fmt),'\40');
/*[IF*/
if(((C)->_routine_body/*44*/)!=((void*)(NULL))){
r200pretty_print((T200*)((C)->_routine_body/*44*/));
}
/*FI]*/
}


void r291make_effective_routine(T291* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5,T0* a6,T0* a7){
r291make_routine(C,a1,a2,a3,a4,a5);
C->_local_vars=a6;
C->_routine_body=a7;
C->_use_current_state=11;
}


void r291pretty_print_rescue(T291* C){
/*[IF*/
if(((C)->_rescue_compound/*48*/)!=((void*)(NULL))){
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r310indent((T310*)(oBC11fmt));
r310keyword((T310*)(oBC11fmt),((T0*)ms12_7002));
r200pretty_print((T200*)((C)->_rescue_compound/*48*/));
}
/*FI]*/
}


void r291warning(T0* a1,T0* a2){
r37add_position(a1);
r37warning((T37*)(oBC11eh),a2);
}


T0* r291try_to_undefine_aux(T291* C,T0* a1,T0* a2){
T0* R=NULL;
{T272*n=malloc(sizeof(*n));
*n=M272;
r272from_effective(n,a1,(C)->_arguments/*24*/,(C)->_result_type/*56*/,(C)->_require_assertion/*32*/,(C)->_ensure_assertion/*36*/,a2);
R=(T0*)n;
}
return R;
}
/*No:ONCE_FUNCTION.fz_bad_assertion*/
/*No:ONCE_FUNCTION.fz_obsolete*/
/*No:ONCE_FUNCTION.fz_dot*/


void r291error(T0* a1,T0* a2){
r37add_position(a1);
r37error((T37*)(oBC11eh),a2);
}


void r291make(T291* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5,T0* a6,T0* a7,T0* a8){
r291make_effective_routine(C,a1,a2,a4,a5,a6,a7,a8);
C->_result_type=a3;
}
/*No:ONCE_FUNCTION.routine_body*/


void r291pretty_print(T291* C){
T0* _fn=NULL;
r310indent((T310*)(oBC11fmt));
r291pretty_print_profile(C);
r310keyword((T310*)(oBC11fmt),((T0*)ms12_446));
/*[IF*/
if(((C)->_obsolete_mark/*28*/)!=((void*)(NULL))){
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r310indent((T310*)(oBC11fmt));
r310keyword((T310*)(oBC11fmt),((T0*)ms12_10928));
r154pretty_print((T154*)((C)->_obsolete_mark/*28*/));
}
/*FI]*/
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r310indent((T310*)(oBC11fmt));
/*[IF*/
if(((C)->_header_comment/*12*/)!=((void*)(NULL))){
r64pretty_print((T64*)((C)->_header_comment/*12*/));
}
/*FI]*/
/*[IF*/
if(((C)->_require_assertion/*32*/)!=((void*)(NULL))){
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r271pretty_print((T271*)((C)->_require_assertion/*32*/));
}
/*FI]*/
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r310indent((T310*)(oBC11fmt));
r291pretty_print_routine_body(C);
/*[IF*/
if(((C)->_ensure_assertion/*36*/)!=((void*)(NULL))){
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r199pretty_print((T199*)((C)->_ensure_assertion/*36*/));
}
/*FI]*/
r291pretty_print_rescue(C);
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r310indent((T310*)(oBC11fmt));
r310keyword((T310*)(oBC11fmt),((T0*)ms12_951));
/*[IF*/
if((((C)->_end_comment/*40*/)!=((void*)(NULL)))&&(!(r64dummy((T64*)((C)->_end_comment/*40*/))))){
r64pretty_print((T64*)((C)->_end_comment/*40*/));
}
 else if(r310print_end_routine((T310*)(oBC11fmt))){
r310put_string((T310*)(oBC11fmt),((T0*)ms198_384));
_fn=/*(IRF4.6first_name*/r67item(((T67*)((C)->_names/*8*/)),1)/*)*/;
X65declaration_pretty_print(_fn);
}
/*FI]*/
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(1);
/*]*/
r310put_character((T310*)(oBC11fmt),'\n');
}


void r291collect_for(T291* C,T2 a1){
T0* _er=NULL;
/*[IF*/
if((a1)==(1)){
_er=(C)->_require_assertion/*32*/;
/*[IF*/
if((_er)!=((void*)(NULL))){
/*[IF*/
if(!(r332fast_has((T332*)(oBC75require_collector),_er))){
r332add_last((T332*)(oBC75require_collector),_er);
}
/*FI]*/
}
/*FI]*/
}
else{
/*[IF*/
if(((C)->_ensure_assertion/*36*/)!=((void*)(NULL))){
/*[IRF3.3set_item*/((((T331*)((T331*)(oBC75header_comment_memory))))->_item)=(((T199*)((C)->_ensure_assertion/*36*/))->_header_comment/*4*/);
/*]*/
r199add_into((T199*)((C)->_ensure_assertion/*36*/),oBC75assertion_collector);
}
/*FI]*/
}
/*FI]*/
}
/*No:ONCE_FUNCTION.end_comment*/


void r291set_header_comment(T291* C,T0* a1){
/*[IF*/
if(((a1)!=((void*)(NULL)))&&((/*(IRF4.6count*/r32count(((T32*)((((T64*)a1))->_list/*4*/)))/*)*/)>(1))){
C->_end_comment=a1;
}
/*FI]*/
}
/*No:ONCE_FUNCTION.clients*/
/*No:ONCE_FUNCTION.rescue_compound*/
/*No:ONCE_FUNCTION.base_class*/
/*No:ONCE_FUNCTION.set_rescue_compound*/


T0* r291runnable(T0* a1,T0* a2,T0* a3){
T0* R=NULL;
T0* _a=NULL;
T2 _i=0;
/*[IF*/
if(!(r88empty(((T88*)a1)))){
R=r88twin(((T88*)a1));
_i=(((T88*)R))->_upper/*8*/;
while (!((_i)==(0))) {
r42push((T42*)(oBC11small_eiffel),a3);
_a=r85to_runnable((T85*)(r88item(((T88*)R),_i)),a2);
/*[IF*/
if((_a)==((void*)(NULL))){
r291error(r85start_position((T85*)(r88item(((T88*)R),_i))),((T0*)ms12_14266));
}
else{
/*[IRF3.6put*/{T88* C1=((T88*)R);
T0* b1=_a;
T2 b2=_i;
((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
}/*]*/
}
/*FI]*/
r42pop((T42*)(oBC11small_eiffel));
_i=(_i)-(1);
}
}
/*FI]*/
return R;
}
/*No:ONCE_FUNCTION.not_computed*/
/*No:ONCE_FUNCTION.fz_03*/
/*No:ONCE_FUNCTION.make_e_feature*/


T6 r291can_hide(T291* C,T0* a1,T0* a2){
T6 R=0;
/*[IF*/
if(((C)->_result_type/*56*/)!=((void*)(X75result_type(a1)))){
/*[IF*/
if((((C)->_result_type/*56*/)==((void*)(NULL)))||((X75result_type(a1))==((void*)(NULL)))){
r37add_position(X75start_position(a1));
r291error(r291start_position(C),((T0*)ms75_64647));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_arguments/*24*/)!=((void*)(X75arguments(a1)))){
/*[IF*/
if((((C)->_arguments/*24*/)==((void*)(NULL)))||((X75arguments(a1))==((void*)(NULL)))){
r37add_position(X75start_position(a1));
r291error(r291start_position(C),((T0*)ms75_83182));
}
 else if((/*(IRF4.6count*/(((T175*)(((T171*)((C)->_arguments/*24*/))->_flat_list/*8*/)))->_upper/*12*//*)*/)!=(/*(IRF4.6count*/(((T175*)(((T171*)(X75arguments(a1)))->_flat_list/*8*/)))->_upper/*12*//*)*/)){
r37add_position(X75start_position(a1));
r291error(r291start_position(C),((T0*)ms75_67155));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T37*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(((C)->_result_type/*56*/)!=((void*)(NULL))){
/*[IF*/
if(!(X62is_a_in((C)->_result_type/*56*/,X75result_type(a1),a2))){
/*[IRF3.6append*/{T0* b1=((T0*)ms75_54285);
r7append((T7*)(oBC37explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X62run_time_mark((((T313*)a2))->_current_type/*0*/);
r7append((T7*)(oBC37explanation),b1);
}/*]*/
r37error((T37*)(oBC11eh),((T0*)ms12_47));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T37*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(((C)->_arguments/*24*/)!=((void*)(NULL))){
/*[IF*/
if(!(r171is_a_in((T171*)((C)->_arguments/*24*/),X75arguments(a1),a2))){
r37add_position(X75start_position(a1));
r37add_position(r291start_position(C));
/*[IRF3.6append*/{T0* b1=((T0*)ms75_54285);
r7append((T7*)(oBC37explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X62run_time_mark((((T313*)a2))->_current_type/*0*/);
r7append((T7*)(oBC37explanation),b1);
}/*]*/
r37error((T37*)(oBC11eh),((T0*)ms12_47));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
R=(/*(IRF4.9nb_errors*/((T37*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0);
/*[IF*/
if(R){
r291merge_header_comments(C,a1);
}
/*FI]*/
return R;
}


T0* r291run_ensure(T0* a1){
T0* R=NULL;
T0* _ct=NULL;
T0* _r=NULL;
r88clear((T88*)(oBC75assertion_collector));
/*[IRF3.3clear*/{T0* _default_item=NULL;
((((T331*)((T331*)(oBC75header_comment_memory))))->_item)=(_default_item);
}/*]*/
_ct=/*X312current_type*/((T0*)(((T325*)a1))->_current_type/*4*/);
r41collect_for((T41*)(X62base_class(_ct)),2,/*X312name*/((T0*)(((T325*)a1))->_name/*16*/));
_r=r291runnable(oBC75assertion_collector,_ct,a1);
/*[IF*/
if((_r)!=((void*)(NULL))){
{T199*n=malloc(sizeof(*n));
*n=M199;
r199make_runnable(n,_r,_ct,a1);
R=(T0*)n;
}
/*[IRF3.3set_header_comment*/((((T199*)(((T199*)R))))->_header_comment)=(((T331*)(oBC75header_comment_memory))->_item/*0*/);
/*]*/
/*[IRF3.3clear*/{T0* _default_item=NULL;
((((T331*)((T331*)(oBC75header_comment_memory))))->_item)=(_default_item);
}/*]*/
}
/*FI]*/
return R;
}


void r291check_obsolete(T291* C){
/*[IF*/
if(!(((T42*)(oBC11small_eiffel))->_short_flag/*0*/)){
/*[IF*/
if(((C)->_obsolete_mark/*28*/)!=((void*)(NULL))){
/*[IRF3.6append*/{T0* b1=((T0*)ms198_39396);
r7append((T7*)(oBC37explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T154*)((C)->_obsolete_mark/*28*/))->_to_string/*8*/;
r7append((T7*)(oBC37explanation),b1);
}/*]*/
r291warning(r291start_position(C),((T0*)ms12_166));
}
/*FI]*/
}
/*FI]*/
}


T0* r291try_to_undefine(T291* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _fn2=NULL;
r37add_position(X65start_position(a1));
_fn2=r67feature_name((T67*)((C)->_names/*8*/),X65to_key(a1));
/*[IF*/
if((_fn2)!=((void*)(NULL))){
X65undefine_in(_fn2,a2);
}
/*FI]*/
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC37explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T38*)((T38*)(oBC37positions))))->_upper)=(-(1));
/*]*/
/*]*/
R=r291try_to_undefine_aux(C,a1,a2);
/*[IF*/
if((R)!=((void*)(NULL))){
/*X269set_clients*//*[IRF3.3set_clients*/((((T272*)(((T272*)R))))->_clients)=((C)->_clients/*20*/);
/*]*/
r291merge_header_comments(C,R);
}
else{
r41fatal_undefine(((T41*)a2),a1);
}
/*FI]*/
return R;
}
/*No:ONCE_FUNCTION.is_deferred*/
/*No:ONCE_FUNCTION.set_clients*/
/*No:ONCE_FUNCTION.code_ensure*/
/*No:ONCE_FUNCTION.nb_errors*/


void r291merge_header_comments(T291* C,T0* a1){
/*[IF*/
if(((T42*)(oBC11small_eiffel))->_short_flag/*0*/){
/*[IF*/
if(((C)->_header_comment/*12*/)==((void*)(NULL))){
C->_header_comment=/*X75header_comment*/((T0*)(((T183*)a1))->_header_comment/*12*/);
}
 else if((/*X75header_comment*/((T0*)(((T183*)a1))->_header_comment/*12*/))==((void*)(NULL))){
X75set_header_comment(a1,(C)->_header_comment/*12*/);
}
/*FI]*/
}
/*FI]*/
}
/*No:ONCE_FUNCTION.require_assertion*/


void r291pretty_print_arguments(T291* C){
/*[IF*/
if(((C)->_arguments/*24*/)!=((void*)(NULL))){
r171pretty_print((T171*)((C)->_arguments/*24*/));
}
/*FI]*/
}
/*No:ONCE_FUNCTION.set_ensure_assertion*/
/*No:ONCE_FUNCTION.fz_end*/


void r291pretty_print_names(T291* C){
T2 _i=0;
_i=1;
X65declaration_pretty_print(r67item((T67*)((C)->_names/*8*/),_i));
_i=(_i)+(1);
while (!((_i)>(r67count((T67*)((C)->_names/*8*/))))) {
r310put_string((T310*)(oBC11fmt),((T0*)ms75_158));
X65declaration_pretty_print(r67item((T67*)((C)->_names/*8*/),_i));
_i=(_i)+(1);
}
}
/*No:ONCE_FUNCTION.local_vars*/
/*No:ONCE_FUNCTION.obsolete_mark*/


void r29read_line(T29* C){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC30last_string))))->_count)=(0);
/*]*/
r29read_line_in(C,oBC30last_string);
}


void r29read_line_in(T29* C,T0* a1){
T2 _mem=0;
r29read_character(C);
_mem=(C)->_memory/*12*/;
while (!((((_mem)==((EOF)))||((_mem)==(((unsigned char)'\n'))))||((_mem)==(((unsigned char)'\15'))))) {
r7extend(((T7*)a1),((T3)(_mem)));
_mem=getc((FILE*)((C)->_input_stream/*8*/));
}
C->_memory=_mem;
/*[IF*/
if((_mem)==(((unsigned char)'\15'))){
r29read_character(C);
/*[IF*/
if((/*(IRF4.6last_character*/((T3)((C)->_memory/*12*/))/*)*/)!=('\n')){
/*[IRF3.3unread_character*/((((T29*)(C)))->_push_back_flag)=(1);
/*]*/
}
/*FI]*/
}
/*FI]*/
}
/*No:STD_FILE_READ.path*/


void r29read_word(T29* C){
r29skip_separators(C);
/*[IRF3.3clear*/((((T7*)((T7*)(oBC30last_string))))->_count)=(0);
/*]*/
while (!((r29end_of_input(C))||(r3is_separator(/*(IRF4.6last_character*/((T3)((C)->_memory/*12*/))/*)*/)))) {
r7extend((T7*)(oBC30last_string),/*(IRF4.6last_character*/((T3)((C)->_memory/*12*/))/*)*/);
r29read_character(C);
}
}


void r29skip_separators(T29* C){
while (!((r29end_of_input(C))||(!(r3is_separator(/*(IRF4.6last_character*/((T3)((C)->_memory/*12*/))/*)*/))))) {
r29read_character(C);
}
}
/*No:STD_FILE_READ.memory*/
/*No:STD_FILE_READ.unread_character*/
/*No:STD_FILE_READ.last_character*/
/*No:STD_FILE_READ.input_stream*/
T0*oBC30last_string=NULL;


T6 r29end_of_input(T29* C){
T6 R=0;
/*[IF*/
if(!((C)->_push_back_flag/*0*/)){
R=((C)->_memory/*12*/)==((EOF));
}
/*FI]*/
return R;
}


void r29connect_to(T29* C,T0* a1){
T8 _p=0;
_p=r7to_external(((T7*)a1));
C->_input_stream=fopen((char*)_p,"r");
/*[IF*/
if((NULL!=(C)->_input_stream/*8*/)){
C->_push_back_flag=0;
C->_memory=((unsigned char)'\40');
C->_path=a1;
}
/*FI]*/
}
/*No:STD_FILE_READ.is_connected*/


void r29disconnect(T29* C){
fclose((C)->_input_stream/*8*/);
C->_path=NULL;
}
/*No:STD_FILE_READ.push_back_flag*/
/*No:STD_FILE_READ.make*/


void r29read_character(T29* C){
/*[IF*/
if((C)->_push_back_flag/*0*/){
C->_push_back_flag=0;
}
else{
C->_memory=getc((FILE*)((C)->_input_stream/*8*/));
}
/*FI]*/
}
T0*oBC311std_fr1=NULL;


T6 r311is_readable(T0* a1){
T6 R=0;
r29connect_to((T29*)(oBC311std_fr1),a1);
R=/*(IRF4.7is_connected*/(((T29*)(oBC311std_fr1))->_path/*4*/)!=(NULL)/*)*/;
/*[IF*/
if(R){
r29disconnect((T29*)(oBC311std_fr1));
}
/*FI]*/
return R;
}


void r311rename_to(T0* a1,T0* a2){
T8 _p2=0;
T8 _p1=0;
_p1=r7to_external(((T7*)a1));
_p2=r7to_external(((T7*)a2));
rename(((char*)_p1),((char*)_p2));
}
/*No:RUN_FEATURE_10.use_current_state*/
/*No:RUN_FEATURE_10.rescue_compound*/
/*No:RUN_FEATURE_10.actuals_clients*/
/*No:RUN_FEATURE_10.arguments*/


void r347initialize(T347* C){
C->_arguments=((T287*)((C)->_base_feature/*32*/))->_arguments/*24*/;
/*[IF*/
if(((C)->_arguments/*36*/)!=((void*)(NULL))){
/*[IF*/
if(!(r171is_runnable((T171*)((C)->_arguments/*36*/),(C)->_current_type/*4*/))){
{T171*n=malloc(sizeof(*n));
*n=M171;
r171with(n,(C)->_arguments/*36*/,(C)->_current_type/*4*/);
C->_arguments=(T0*)n;
}
}
/*FI]*/
}
/*FI]*/
C->_local_vars=((T287*)((C)->_base_feature/*32*/))->_local_vars/*16*/;
/*[IF*/
if(((C)->_local_vars/*40*/)!=((void*)(NULL))){
C->_local_vars=r162to_runnable((T162*)((C)->_local_vars/*40*/),(C)->_current_type/*4*/);
}
/*FI]*/
C->_routine_body=((T287*)((C)->_base_feature/*32*/))->_routine_body/*44*/;
/*[IF*/
if(((C)->_routine_body/*44*/)!=((void*)(NULL))){
C->_routine_body=r200to_runnable((T200*)((C)->_routine_body/*44*/),(C)->_current_type/*4*/);
}
/*FI]*/
/*[IF*/
if(r54require_check((T54*)(oBC11run_control))){
C->_require_assertion=r287run_require((T0*)C);
}
/*FI]*/
/*[IF*/
if(r54ensure_check((T54*)(oBC11run_control))){
C->_ensure_assertion=r287run_ensure((T0*)C);
}
/*FI]*/
C->_rescue_compound=((T287*)((C)->_base_feature/*32*/))->_rescue_compound/*48*/;
/*[IF*/
if(((C)->_rescue_compound/*48*/)!=((void*)(NULL))){
/*[IRF3.3set_used*/((((T336*)((T336*)(oBC11exceptions_handler))))->_used)=(1);
/*]*/
C->_rescue_compound=r200to_runnable((T200*)((C)->_rescue_compound/*48*/),(C)->_current_type/*4*/);
}
/*FI]*/
}


T0* r347start_position(T347* C){
T0* R=NULL;
R=r287start_position((T287*)((C)->_base_feature/*32*/));
return R;
}
/*No:RUN_FEATURE_10.require_assertion*/
/*No:RUN_FEATURE_10.clients_memory*/
/*No:RUN_FEATURE_10.ucs_not_computed*/
/*No:RUN_FEATURE_10.current_type*/


void r347add_client(T347* C,T0* a1){
T2 _i=0;
/*[IF*/
if(((C)->_actuals_clients/*12*/)==((void*)(NULL))){
{T319*n=malloc(sizeof(*n));
*n=M319;
r319with_capacity(n,4);
C->_actuals_clients=(T0*)n;
}
r319add_last((T319*)((C)->_actuals_clients/*12*/),a1);
}
else{
_i=r319fast_index_of((T319*)((C)->_actuals_clients/*12*/),a1);
/*[IF*/
if((_i)>(((T319*)((C)->_actuals_clients/*12*/))->_upper/*8*/)){
r319add_last((T319*)((C)->_actuals_clients/*12*/),a1);
}
/*FI]*/
}
/*FI]*/
r313add_client((T313*)(r347run_class(C)),a1);
}


T0* r347run_class(T347* C){
T0* R=NULL;
R=X62run_class((C)->_current_type/*4*/);
return R;
}
/*No:RUN_FEATURE_10.result_type*/
/*No:RUN_FEATURE_10.base_feature*/
/*No:RUN_FEATURE_10.ensure_assertion*/


void r347make(T347* C,T0* a1,T0* a2,T0* a3){
C->_current_type=a1;
C->_name=a2;
C->_base_feature=a3;
/*[IRF3.5add_rf*/r315put(((T315*)(((T313*)(r347run_class(C)))->_feature_dictionary/*20*/)),(T0*)C,X65to_key(a2));
/*]*/
r42incr_magic_count((T42*)(oBC11small_eiffel));
C->_use_current_state=15;
r42push((T42*)(oBC11small_eiffel),(T0*)C);
r347initialize(C);
r42pop((T42*)(oBC11small_eiffel));
}
/*No:RUN_FEATURE_10.routine_body*/
/*No:RUN_FEATURE_10.name*/
/*No:RUN_FEATURE_10.local_vars*/


T2 r347arg_count(T347* C){
T2 R=0;
/*[IF*/
if(((C)->_arguments/*36*/)!=((void*)(NULL))){
R=/*(IRF4.6count*/(((T175*)(((T171*)((C)->_arguments/*36*/))->_flat_list/*8*/)))->_upper/*12*//*)*/;
}
/*FI]*/
return R;
}


T0* r347clients(T347* C){
T0* R=NULL;
T0* _bfbc=NULL;
T0* _bc=NULL;
/*[IF*/
if(((C)->_clients_memory/*8*/)==((void*)(NULL))){
_bc=X62base_class((C)->_current_type/*4*/);
_bfbc=((T287*)((C)->_base_feature/*32*/))->_base_class/*4*/;
/*[IF*/
if((_bc)==((void*)(_bfbc))){
R=((T287*)((C)->_base_feature/*32*/))->_clients/*20*/;
}
else{
R=r41clients_for(((T41*)_bc),(C)->_name/*16*/);
}
/*FI]*/
C->_clients_memory=R;
}
else{
R=(C)->_clients_memory/*8*/;
}
/*FI]*/
return R;
}


T6 r347is_exported_in(T347* C,T0* a1){
T6 R=0;
R=r83gives_permission_to((T83*)(r347clients(C)),a1);
return R;
}


T0* r260generic_list(T260* C){
T0* R=NULL;
r260fatal_error_generic_list(C);
return R;
}


T0* r260base_class(T260* C){
T0* R=NULL;
T0* _bcn=NULL;
_bcn=r260base_class_name();
/*[IF*/
if((_bcn)!=((void*)(NULL))){
R=r49base_class(((T49*)_bcn));
}
else{
/*[IRF3.6append*/{T0* b1=((T0*)ms62_37098);
r7append((T7*)(oBC37explanation),b1);
}/*]*/
r37add_type((T0*)C,((T0*)ms12_47));
r37print_as_fatal_error((T37*)(oBC11eh));
}
/*FI]*/
return R;
}


T0* r260base_class_name(void){
if(fBC261base_class_name==0){
fBC261base_class_name=1;
{T49*n=malloc(sizeof(*n));
*n=M49;
r49make(n,((T0*)ms13_2055),NULL);
oBC261base_class_name=(T0*)n;
}
}
return oBC261base_class_name;}
/*No:TYPE_BIT_1.start_position*/
/*No:TYPE_BIT_1.is_formal_generic*/


void r260used_as_reference(T260* C){
T0* _rf=NULL;
T0* _rc=NULL;
T0* _type_bit_ref=NULL;
/*[IF*/
if(r45fast_has((T45*)(oBC261mem_ref_nb),/*(IRF4.6nb*/(((T158*)((C)->_n/*16*/)))->_value/*8*//*)*/)){
}
else{
r45add_last((T45*)(oBC261mem_ref_nb),/*(IRF4.6nb*/(((T158*)((C)->_n/*16*/)))->_value/*8*//*)*/);
{T326*n=malloc(sizeof(*n));
*n=M326;
r326make(n,(T0*)C);
_type_bit_ref=(T0*)n;
}
r327add_last((T327*)(oBC261mem_type_bit_ref),_type_bit_ref);
_rc=r326run_class(((T326*)_type_bit_ref));
r313set_at_run_time(((T313*)_rc));
_rf=r313get_feature_with(((T313*)_rc),((T0*)ms13_2695));
}
/*FI]*/
}


T6 r260is_a_in(T260* C,T0* a1,T0* a2){
T6 R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*[IF*/
if(((C)->_written_mark/*8*/)==((void*)(X62written_mark(a1)))){
R=1;
}
else{
_ct=(((T313*)a2))->_current_type/*0*/;
_t1=r260to_runnable(C,_ct);
_t2=X62to_runnable(a1,_ct);
/*[IF*/
if((X62run_time_mark(_t1))==((void*)(X62run_time_mark(_t2)))){
R=1;
}
else{
R=X62is_a(_t1,_t2);
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:TYPE_BIT_1.us_put_1*/


T2 r260id(T260* C){
T2 R=0;
R=((T313*)(r260run_class(C)))->_id/*4*/;
return R;
}
/*No:TYPE_BIT_1.is_pointer*/


T0* r260look_up_for(T260* C,T0* a1,T0* a2){
T0* R=NULL;
R=r41look_up_for((T41*)(r260base_class(C)),a1,a2);
return R;
}


T0* r260to_runnable(T260* C,T0* a1){
T0* R=NULL;
R=(T0*)C;
r260to_runnable_1_2(C);
return R;
}
/*No:TYPE_BIT_1.nb*/


void r260set_run_time_mark(T260* C){
r7copy((T7*)(((T0*)ms62_785024)),((T0*)ms12_1060));
r7append((T7*)(((T0*)ms62_785024)),r2to_string(/*(IRF4.6nb*/(((T158*)((C)->_n/*16*/)))->_value/*8*//*)*/));
C->_run_time_mark=r66item(((T0*)ms62_785024));
}
/*No:TYPE_BIT_1.run_type*/


T0* r260run_class(T260* C){
T0* R=NULL;
R=r42run_class((T0*)C);
return R;
}
/*No:TYPE_BIT_1.has_creation*/
/*No:TYPE_BIT_1.expanded_initializer*/
/*No:TYPE_BIT_1.is_like_current*/
/*No:TYPE_BIT_1.is_boolean*/
/*No:TYPE_BIT_1.is_generic*/
/*No:TYPE_BIT_1.us_bit_n*/
/*No:TYPE_BIT_1.is_bit*/
/*No:TYPE_BIT_1.is_real*/


T0* r260smallest_ancestor(T260* C,T0* a1){
T0* R=NULL;
T0* _other_bit=NULL;
_other_bit=X62run_type(a1);
if(NULL!=(_other_bit))switch(((T0*)_other_bit)->id) {
case 260: case 262: 
break;
default:
_other_bit=NULL;
};/*[IF*/
if((_other_bit)!=((void*)(NULL))){
/*[IF*/
if((/*(IRF4.6nb*/(((T158*)((C)->_n/*16*/)))->_value/*8*//*)*/)<(X261nb(_other_bit))){
R=(T0*)C;
}
else{
R=_other_bit;
}
/*FI]*/
}
else{
R=r260type_any();
}
/*FI]*/
return R;
}
/*No:TYPE_BIT_1.is_any*/
/*No:TYPE_BIT_1.run_time_mark*/
/*No:TYPE_BIT_1.n*/
/*No:TYPE_BIT_1.is_expanded*/
/*No:TYPE_BIT_1.is_basic_eiffel_expanded*/


T0* r260type_any(void){
if(fBC11type_any==0){
fBC11type_any=1;
{T243*n=malloc(sizeof(*n));
*n=M243;
r243make(n,NULL);
oBC11type_any=(T0*)n;
}
}
return oBC11type_any;}
/*No:TYPE_BIT_1.is_string*/
/*No:TYPE_BIT_1.is_integer*/
/*No:TYPE_BIT_1.is_like_feature*/
/*No:TYPE_BIT_1.fz_dot*/
/*No:TYPE_BIT_1.fz_bit_foo*/
/*No:TYPE_BIT_1.is_anchored*/
/*No:TYPE_BIT_1.is_run_type*/


T6 r260is_a(T260* C,T0* a1){
T6 R=0;
T0* _other_bit=NULL;
/*[IF*/
if(X62is_bit(a1)){
_other_bit=X62run_type(a1);
if(NULL!=(_other_bit))switch(((T0*)_other_bit)->id) {
case 260: case 262: 
break;
default:
_other_bit=NULL;
};/*[IF*/
if((/*(IRF4.6nb*/(((T158*)((C)->_n/*16*/)))->_value/*8*//*)*/)<=(X261nb(_other_bit))){
R=1;
}
else{
r37add_type((T0*)C,((T0*)ms12_17730));
r37add_type(a1,((T0*)ms261_7780));
}
/*FI]*/
}
 else if(r41is_subclass_of((T41*)(r260base_class(C)),X62base_class(a1))){
R=1;
r260used_as_reference(C);
}
else{
r37add_type((T0*)C,((T0*)ms12_17730));
r37add_type(a1,((T0*)ms12_47));
}
/*FI]*/
return R;
}
/*No:TYPE_BIT_1.us_put_0*/
/*No:TYPE_BIT_1.is_character*/
/*No:TYPE_BIT_1.is_reference*/
/*No:TYPE_BIT_1.written_mark*/


void r260make(T260* C,T0* a1,T0* a2){
C->_start_position=a1;
C->_n=a2;
r260set_run_time_mark(C);
C->_written_mark=(C)->_run_time_mark/*12*/;
}
/*No:TYPE_BIT_1.is_none*/
/*No:TYPE_BIT_1.pretty_print*/
/*No:TYPE_BIT_1.is_array*/
/*No:TYPE_BIT_1.fz_inako*/


void r260fatal_error_generic_list(T260* C){
r37add_type((T0*)C,((T0*)ms62_29184));
r37print_as_fatal_error((T37*)(oBC11eh));
}
/*No:TYPE_BIT_1.is_like_argument*/
/*No:TYPE_BIT_1.tmp_string*/
/*No:TYPE_BIT_1.us_bitn*/
/*No:TYPE_BIT_1.is_double*/


void r260to_runnable_1_2(T260* C){
T0* _rf=NULL;
T0* _rc=NULL;
_rc=r260run_class(C);
_rf=r313get_feature_with(((T313*)_rc),((T0*)ms13_2515));
_rf=r313get_feature_with(((T313*)_rc),((T0*)ms13_2520));
}
/*No:CALL_INFIX_PLUS.feature_name*/
/*No:CALL_INFIX_PLUS.right_brackets*/


T0* r115start_position(T115* C){
T0* R=NULL;
R=((T121*)((C)->_feature_name/*12*/))->_start_position/*8*/;
return R;
}


T0* r115add_comment(T115* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r32count(((T32*)((((T64*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
else{
{T214*n=malloc(sizeof(*n));
*n=M214;
r214make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


T2 r115to_integer(T115* C){
T2 R=0;
r115error(r115start_position(C),((T0*)ms12_45846));
return R;
}


void r115bracketed_pretty_print(T115* C){
r310put_character((T310*)(oBC11fmt),'\50');
r115pretty_print(C);
r310put_character((T310*)(oBC11fmt),'\51');
}


void r115print_op(T115* C){
r310put_character((T310*)(oBC11fmt),'\40');
/*[IRF3.6pretty_print*/{T121* C1=(T121*)((C)->_feature_name/*12*/);
r310put_string((T310*)(oBC11fmt),(C1)->_to_string/*4*/);
}/*]*/
r310put_character((T310*)(oBC11fmt),'\40');
}


T0* r115to_runnable(T115* C,T0* a1){
T0* R=NULL;
T0* _rf=NULL;
T0* _tbee=NULL;
T0* _at=NULL;
T0* _tt=NULL;
T0* _a=NULL;
T0* _t=NULL;
_t=r115runnable_expression((C)->_target/*4*/,a1);
_a=r115runnable_args((C)->_arguments/*8*/,a1);
_tt=X89result_type(_t);
_at=X89result_type(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
/*[IF*/
{/*AT*//*[IF*/
if(X62is_real(_at)){
/*[IF*/
if(X62is_integer(_tt)){
_tbee=X62run_type(_at);
if(NULL!=(_tbee))switch(((T0*)_tbee)->id) {
case 254: case 252: case 250: case 251: case 255: case 248: 
break;
default:
_tbee=NULL;
};{T359*n=malloc(sizeof(*n));
*n=M359;
r359make(n,_t,_tbee);
_t=(T0*)n;
}
}
/*FI]*/
}
 else if(X62is_double(_at)){
/*[IF*/
if((X62is_integer(_tt))||(X62is_real(_tt))){
_tbee=X62run_type(_at);
if(NULL!=(_tbee))switch(((T0*)_tbee)->id) {
case 254: case 252: case 250: case 251: case 255: case 248: 
break;
default:
_tbee=NULL;
};{T359*n=malloc(sizeof(*n));
*n=M359;
r359make(n,_t,_tbee);
_t=(T0*)n;
}
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
_rf=r115run_feature_for(C,_t,a1);
/*[IF*/
if(((C)->_run_feature/*16*/)==((void*)(NULL))){
C->_target=_t;
C->_arguments=_a;
C->_run_feature=_rf;
r115run_feature_match(C,a1);
R=(T0*)C;
}
 else if(((_t)==((void*)((C)->_target/*4*/)))&&((_a)==((void*)((C)->_arguments/*8*/)))){
R=(T0*)C;
}
else{
{T115*n=malloc(sizeof(*n));
*n=M115;
r115with(n,_t,(C)->_feature_name/*12*/,_a,_rf,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_PLUS.fz_bad_argument*/
/*No:CALL_INFIX_PLUS.fz_iinaiv*/


T0* r115result_type(T115* C){
T0* R=NULL;
T0* _tla=NULL;
R=X312result_type((C)->_run_feature/*16*/);
/*[IF*/
if(X62is_like_current(R)){
R=/*X312current_type*/((T0*)((T325*)((C)->_run_feature/*16*/))->_current_type/*4*/);
}
else{
_tla=R;
if(NULL!=(_tla))switch(((T0*)_tla)->id) {
case 242: 
break;
default:
_tla=NULL;
};/*[IF*/
if((_tla)!=((void*)(NULL))){
R=X62run_type(X89result_type(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/));
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_PLUS.run_feature*/


T0* r115runnable_args(T0* a1,T0* a2){
T0* R=NULL;
R=r132to_runnable(((T132*)a1),a2);
/*[IF*/
if((R)==((void*)(NULL))){
r37add_position(r132start_position(((T132*)a1)));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms12_13065);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
return R;
}


void r115with(T115* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5){
C->_target=a1;
C->_feature_name=a2;
C->_arguments=a3;
C->_run_feature=a4;
r115run_feature_match(C,a5);
}
/*No:CALL_INFIX_PLUS.fatal_error*/


void r115run_feature_match(T115* C,T0* a1){
r115run_feature_has_result(C);
r132match_with((T132*)((C)->_arguments/*8*/),(C)->_run_feature/*16*/,a1);
}
/*No:CALL_INFIX_PLUS.arguments*/


T0* r115runnable_expression(T0* a1,T0* a2){
T0* R=NULL;
R=X89to_runnable(a1,a2);
/*[IF*/
if((R)==((void*)(NULL))){
r37add_position(X89start_position(a1));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms101_16515);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_PLUS.left_brackets*/
/*No:CALL_INFIX_PLUS.implicit_cast*/


void r115print_as_target(T115* C){
r310put_character((T310*)(oBC11fmt),'\50');
r115pretty_print(C);
r310put_character((T310*)(oBC11fmt),'\51');
r310put_character((T310*)(oBC11fmt),'\56');
}
/*No:CALL_INFIX_PLUS.arg1*/


void r115run_feature_has_result(T115* C){
/*[IF*/
if((X312result_type((C)->_run_feature/*16*/))==((void*)(NULL))){
r37add_position(X312start_position((C)->_run_feature/*16*/));
r37add_position(((T121*)((C)->_feature_name/*12*/))->_start_position/*8*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms100_53650);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
}


T0* r115run_feature_for(T115* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _rc=NULL;
_rc=X62run_class(X89result_type(a1));
R=r313get_rf(((T313*)_rc),a1,(C)->_feature_name/*12*/,a2);
return R;
}
/*No:CALL_INFIX_PLUS.target*/


void r115error(T0* a1,T0* a2){
r37add_position(a1);
r37error((T37*)(oBC11eh),a2);
}
/*No:CALL_INFIX_PLUS.precedence*/


void r115make(T115* C,T0* a1,T0* a2,T0* a3){
C->_target=a1;
{T121*n=malloc(sizeof(*n));
*n=M121;
r121make(n,r115operator(),a2);
C->_feature_name=(T0*)n;
}
{T132*n=malloc(sizeof(*n));
*n=M132;
/*[IRF3.3make_1*/((((T132*)(n)))->_first_one)=(a3);
/*]*/
C->_arguments=(T0*)n;
}
}
/*No:CALL_INFIX_PLUS.us_plus*/
/*No:CALL_INFIX_PLUS.is_current*/


void r115pretty_print(T115* C){
/*[IF*/
if((X89precedence((C)->_target/*4*/))==(13)){
X89pretty_print((C)->_target/*4*/);
}
 else if((7)>(X89precedence((C)->_target/*4*/))){
X89bracketed_pretty_print((C)->_target/*4*/);
}
 else if((7)<(X89precedence((C)->_target/*4*/))){
X89pretty_print((C)->_target/*4*/);
}
/*AF*/else{
X89pretty_print((C)->_target/*4*/);
}
/*FI]*/
r115print_op(C);
/*[IF*/
if((X89precedence(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/))==(13)){
X89pretty_print(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
}
 else if((7)>(X89precedence(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/))){
X89bracketed_pretty_print(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
}
 else if((7)<(X89precedence(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/))){
X89pretty_print(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
}
 else {/*AT*/X89bracketed_pretty_print(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
}
/*FI]*/
}
/*No:CALL_INFIX_PLUS.is_void*/


T0* r115operator(void){
T0* R=NULL;
R=((T0*)ms13_44);
return R;
}
/*No:CALL_INFIX_PLUS.atomic_precedence*/
/*No:CHARACTER_CONSTANT.ascii_pretty_print*/
/*No:CHARACTER_CONSTANT.start_position*/


T0* r153to_string(T153* C){
T0* R=NULL;
{T7*n=malloc(sizeof(*n));
*n=M7;
r7make(n,0);
R=(T0*)n;
}
r7extend(((T7*)R),'\47');
{int z1=(C)->_pretty_print_mode/*9*/;

if((0==z1)){
r7extend(((T7*)R),(C)->_value/*8*/);
}
 else 
if((1==z1)){
r153character_coding((C)->_value/*8*/,R);
}
 else {r7extend(((T7*)R),'\45');
r7extend(((T7*)R),'\57');
r2append_in(((unsigned char)(C)->_value/*8*/),R);
r7extend(((T7*)R),'\57');
}}
r7extend(((T7*)R),'\47');
return R;
}
/*No:CHARACTER_CONSTANT.set_pretty_print_mode*/


T0* r153add_comment(T153* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r32count(((T32*)((((T64*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
else{
{T214*n=malloc(sizeof(*n));
*n=M214;
r214make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}
/*No:CHARACTER_CONSTANT.to_integer*/


void r153print_as_target(T153* C){
r310put_character((T310*)(oBC11fmt),'\50');
/*[IRF3.6pretty_print*/{T153* C1=C;
r310put_string((T310*)(oBC11fmt),r153to_string(C1));
}/*]*/
r310put_character((T310*)(oBC11fmt),'\51');
r310put_character((T310*)(oBC11fmt),'\56');
}
/*No:CHARACTER_CONSTANT.percent_pretty_print*/
/*No:CHARACTER_CONSTANT.bracketed_pretty_print*/


void r153character_coding(T3 a1,T0* a2){
T3 _special=0;
{int z1=a1;

if((64==z1)){
_special='A';
}
 else 
if((8==z1)){
_special='B';
}
 else 
if((94==z1)){
_special='C';
}
 else 
if((36==z1)){
_special='D';
}
 else 
if((12==z1)){
_special='F';
}
 else 
if((92==z1)){
_special='H';
}
 else 
if((126==z1)){
_special='L';
}
 else 
if((10==z1)){
_special='N';
}
 else 
if((96==z1)){
_special='Q';
}
 else 
if((13==z1)){
_special='R';
}
 else 
if((35==z1)){
_special='S';
}
 else 
if((9==z1)){
_special='T';
}
 else 
if((0==z1)){
_special='U';
}
 else 
if((124==z1)){
_special='V';
}
 else 
if((37==z1)){
_special='\45';
}
 else 
if((39==z1)){
_special='\47';
}
 else 
if((34==z1)){
_special='\42';
}
 else 
if((91==z1)){
_special='\50';
}
 else 
if((93==z1)){
_special='\51';
}
 else 
if((123==z1)){
_special='\74';
}
 else 
if((125==z1)){
_special='\76';
}
}
r7extend(((T7*)a2),'\45');
/*[IF*/
if((_special)==('\0')){
r7extend(((T7*)a2),'\57');
r2append_in(((unsigned char)a1),a2);
r7extend(((T7*)a2),'\57');
}
else{
r7extend(((T7*)a2),_special);
}
/*FI]*/
}
/*No:CHARACTER_CONSTANT.to_runnable*/
/*No:CHARACTER_CONSTANT.std_pretty_print*/
/*No:CHARACTER_CONSTANT.fz_iinaiv*/
int fBC153result_type=0;
T0*oBC153result_type=NULL;


T0* r153result_type(void){
if(fBC153result_type==0){
fBC153result_type=1;
{T250*n=malloc(sizeof(*n));
*n=M250;
r250make(n,NULL);
oBC153result_type=(T0*)n;
}
}
return oBC153result_type;}


void r153error(T0* a1,T0* a2){
r37add_position(a1);
r37error((T37*)(oBC11eh),a2);
}
/*No:CHARACTER_CONSTANT.precedence*/


void r153make(T153* C,T0* a1,T3 a2,T2 a3){
C->_start_position=a1;
C->_value=a2;
/*[IRF3.3set_pretty_print_mode*/((((T153*)(C)))->_pretty_print_mode)=(a3);
/*]*/
}
/*No:CHARACTER_CONSTANT.pretty_print_mode*/
/*No:CHARACTER_CONSTANT.is_current*/
/*No:CHARACTER_CONSTANT.pretty_print*/
/*No:CHARACTER_CONSTANT.is_void*/
/*No:CHARACTER_CONSTANT.value*/
/*No:CHARACTER_CONSTANT.atomic_precedence*/

