/*
-- 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"
/*No:CALL_INFIX_AND_THEN.feature_name*/
/*No:CALL_INFIX_AND_THEN.right_brackets*/


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


T0* r106add_comment(T106* 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 r106to_integer(T106* C){
T2 R=0;
r106error(r106start_position(C),((T0*)ms12_45846));
return R;
}


void r106bracketed_pretty_print(T106* C){
r310put_character((T310*)(oBC11fmt),'\50');
r106pretty_print(C);
r310put_character((T310*)(oBC11fmt),'\51');
}


void r106print_op(T106* 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* r106to_runnable(T106* 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=r106runnable_expression((C)->_target/*4*/,a1);
_a=r106runnable_args((C)->_arguments/*8*/,a1);
_tt=X89result_type(_t);
_at=X89result_type(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
/*[IF*/
/*AF*//*AE*/
/*FI]*/
_rf=r106run_feature_for(C,_t,a1);
/*[IF*/
if(((C)->_run_feature/*16*/)==((void*)(NULL))){
C->_target=_t;
C->_arguments=_a;
C->_run_feature=_rf;
r106run_feature_match(C,a1);
R=(T0*)C;
}
 else if(((_t)==((void*)((C)->_target/*4*/)))&&((_a)==((void*)((C)->_arguments/*8*/)))){
R=(T0*)C;
}
else{
{T106*n=malloc(sizeof(*n));
*n=M106;
r106with(n,_t,(C)->_feature_name/*12*/,_a,_rf,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_AND_THEN.fz_bad_argument*/
/*No:CALL_INFIX_AND_THEN.fz_iinaiv*/


T0* r106result_type(T106* 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_AND_THEN.run_feature*/


T0* r106runnable_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 r106with(T106* 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;
r106run_feature_match(C,a5);
}
/*No:CALL_INFIX_AND_THEN.fatal_error*/


void r106run_feature_match(T106* C,T0* a1){
r106run_feature_has_result(C);
r132match_with((T132*)((C)->_arguments/*8*/),(C)->_run_feature/*16*/,a1);
}
/*No:CALL_INFIX_AND_THEN.arguments*/


T0* r106runnable_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_AND_THEN.left_brackets*/
/*No:CALL_INFIX_AND_THEN.implicit_cast*/


void r106print_as_target(T106* C){
r310put_character((T310*)(oBC11fmt),'\50');
r106pretty_print(C);
r310put_character((T310*)(oBC11fmt),'\51');
r310put_character((T310*)(oBC11fmt),'\56');
}
/*No:CALL_INFIX_AND_THEN.arg1*/
/*No:CALL_INFIX_AND_THEN.us_and_then*/


void r106run_feature_has_result(T106* 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* r106run_feature_for(T106* 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_AND_THEN.target*/


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


void r106make(T106* C,T0* a1,T0* a2,T0* a3){
C->_target=a1;
{T121*n=malloc(sizeof(*n));
*n=M121;
r121make(n,r106operator(),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_AND_THEN.is_current*/


void r106pretty_print(T106* C){
/*[IF*/
if((X89precedence((C)->_target/*4*/))==(13)){
X89pretty_print((C)->_target/*4*/);
}
 else if((5)>(X89precedence((C)->_target/*4*/))){
X89bracketed_pretty_print((C)->_target/*4*/);
}
 else if((5)<(X89precedence((C)->_target/*4*/))){
X89pretty_print((C)->_target/*4*/);
}
/*AF*/else{
X89pretty_print((C)->_target/*4*/);
}
/*FI]*/
r106print_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((5)>(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((5)<(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_AND_THEN.is_void*/


T0* r106operator(void){
T0* R=NULL;
R=((T0*)ms13_10800);
return R;
}
/*No:CALL_INFIX_AND_THEN.atomic_precedence*/
/*No:RUN_FEATURE_3.use_current_state*/
/*No:RUN_FEATURE_3.rescue_compound*/
/*No:RUN_FEATURE_3.actuals_clients*/
/*No:RUN_FEATURE_3.arguments*/


void r314initialize(T314* 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* r314start_position(T314* C){
T0* R=NULL;
R=r287start_position((T287*)((C)->_base_feature/*32*/));
return R;
}
/*No:RUN_FEATURE_3.require_assertion*/
/*No:RUN_FEATURE_3.clients_memory*/
/*No:RUN_FEATURE_3.ucs_not_computed*/
/*No:RUN_FEATURE_3.current_type*/


void r314add_client(T314* 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*)(r314run_class(C)),a1);
}


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


void r314make(T314* C,T0* a1,T0* a2,T0* a3){
C->_current_type=a1;
C->_name=a2;
C->_base_feature=a3;
/*[IRF3.5add_rf*/r315put(((T315*)(((T313*)(r314run_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);
r314initialize(C);
r42pop((T42*)(oBC11small_eiffel));
}
/*No:RUN_FEATURE_3.routine_body*/
/*No:RUN_FEATURE_3.name*/
/*No:RUN_FEATURE_3.local_vars*/


T2 r314arg_count(T314* 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* r314clients(T314* 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 r314is_exported_in(T314* C,T0* a1){
T6 R=0;
R=r83gives_permission_to((T83*)(r314clients(C)),a1);
return R;
}


T0* r281language_name(void){
T0* R=NULL;
R=((T0*)ms12_37456);
return R;
}
/*No:NATIVE_WITHOUT_CURRENT.fz_c_withoutcurrent*/
/*No:NATIVE_WITHOUT_CURRENT.pretty_print*/
/*No:SIMPLE_FEATURE_NAME.is_frozen*/
/*No:SIMPLE_FEATURE_NAME.declaration_pretty_print*/


void r131undefine_in(T131* C,T0* a1){
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}


T0* r131origin_base_class(T131* C){
T0* R=NULL;
T0* _sp=NULL;
_sp=(C)->_start_position/*8*/;
/*[IF*/
if((_sp)!=((void*)(NULL))){
R=r39base_class(((T39*)_sp));
}
/*FI]*/
return R;
}
/*No:SIMPLE_FEATURE_NAME.start_position*/
/*No:SIMPLE_FEATURE_NAME.to_string*/


T0* r131add_comment(T131* 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 r131to_integer(T131* C){
T2 R=0;
r131error((C)->_start_position/*8*/,((T0*)ms12_45846));
return R;
}


void r131print_as_target(T131* C){
r310put_string((T310*)(oBC11fmt),(C)->_to_string/*4*/);
r310put_character((T310*)(oBC11fmt),'\56');
}
/*No:SIMPLE_FEATURE_NAME.bracketed_pretty_print*/


T0* r131to_runnable(T131* C,T0* a1){
T0* R=NULL;
T0* _rf2=NULL;
T0* _new_name=NULL;
T0* _rf=NULL;
T0* _wbc=NULL;
_wbc=r39base_class((T39*)((C)->_start_position/*8*/));
_new_name=r41new_name_of((T41*)(X62base_class(a1)),_wbc,(T0*)C);
_rf=r313get_feature((T313*)(X62run_class(a1)),_new_name);
/*[IF*/
if((_rf)==((void*)(NULL))){
r131error((C)->_start_position/*8*/,((T0*)ms131_24192));
}
else{
_rf2=_rf;
if(NULL!=(_rf2))switch(((T0*)_rf2)->id) {
case 345: 
break;
default:
_rf2=NULL;
};/*[IF*/
if((_rf2)==((void*)(NULL))){
r37add_position(X312start_position(_rf));
r131error((C)->_start_position/*8*/,((T0*)ms131_56880));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_run_feature_2/*12*/)==((void*)(NULL))){
C->_run_feature_2=_rf2;
R=(T0*)C;
}
 else if(((C)->_run_feature_2/*12*/)==((void*)(_rf))){
R=(T0*)C;
}
else{
{T131*n=malloc(sizeof(*n));
*n=M131;
r131with(n,(T0*)C,_rf2);
R=(T0*)n;
}
}
/*FI]*/
return R;
}
/*No:SIMPLE_FEATURE_NAME.declaration_in*/
/*No:SIMPLE_FEATURE_NAME.to_key*/
/*No:SIMPLE_FEATURE_NAME.fz_iinaiv*/
/*No:SIMPLE_FEATURE_NAME.result_type*/


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


T0* r131run_feature(T131* C,T0* a1){
T0* R=NULL;
R=r313get_rf_with((T313*)(X62run_class(a1)),(T0*)C);
return R;
}
/*No:SIMPLE_FEATURE_NAME.precedence*/


void r131make(T131* C,T0* a1,T0* a2){
C->_to_string=r66item(a1);
C->_start_position=a2;
}
/*No:SIMPLE_FEATURE_NAME.is_current*/
/*No:SIMPLE_FEATURE_NAME.pretty_print*/
/*No:SIMPLE_FEATURE_NAME.is_void*/
/*No:SIMPLE_FEATURE_NAME.run_feature_2*/


void r131with(T131* C,T0* a1,T0* a2){
C->_to_string=(((T131*)a1))->_to_string/*4*/;
C->_start_position=(((T131*)a1))->_start_position/*8*/;
C->_run_feature_2=a2;
}
/*No:SIMPLE_FEATURE_NAME.atomic_precedence*/


T0* r257generic_list(T257* C){
T0* R=NULL;
r257fatal_error_generic_list(C);
return R;
}


T0* r257base_class(T257* C){
T0* R=NULL;
T0* _bcn=NULL;
_bcn=(C)->_base_class_name/*4*/;
/*[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;
}
/*No:TYPE_CLASS.base_class_name*/
/*No:TYPE_CLASS.start_position*/
/*No:TYPE_CLASS.is_formal_generic*/


void r257used_as_reference(T257* C){
/*[IF*/
if(r257is_expanded(C)){
r313used_as_reference((T313*)(r257run_class(C)));
}
/*FI]*/
}


T6 r257is_a_in(T257* C,T0* a1,T0* a2){
T6 R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*[IF*/
if((/*(IRF4.6written_mark*/(((T49*)((C)->_base_class_name/*4*/)))->_to_string/*0*//*)*/)==((void*)(X62written_mark(a1)))){
R=1;
}
else{
_ct=(((T313*)a2))->_current_type/*0*/;
_t1=r257to_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;
}


T2 r257id(T257* C){
T2 R=0;
R=((T41*)(r257base_class(C)))->_id/*0*/;
return R;
}
/*No:TYPE_CLASS.is_pointer*/


T0* r257look_up_for(T257* C,T0* a1,T0* a2){
T0* R=NULL;
R=r41look_up_for((T41*)(r257base_class(C)),a1,a2);
return R;
}


T0* r257to_runnable(T257* C,T0* a1){
T0* R=NULL;
T0* _bc=NULL;
_bc=r49base_class((T49*)((C)->_base_class_name/*4*/));
/*[IF*/
if(((((T41*)_bc))->_is_expanded/*20*/)&&(!(r47fast_has((T47*)(oBC257check_memory),_bc)))){
r47add_last((T47*)(oBC257check_memory),_bc);
r313set_at_run_time((T313*)(r257run_class(C)));
}
/*FI]*/
/*[IF*/
if(((((T41*)_bc))->_formal_generic_list/*28*/)!=((void*)(NULL))){
r37add_position(((T76*)((((T41*)_bc))->_formal_generic_list/*28*/))->_start_position/*0*/);
r37add_type((T0*)C,((T0*)ms257_50344));
r37print_as_fatal_error((T37*)(oBC11eh));
}
/*FI]*/
R=(T0*)C;
return R;
}
/*No:TYPE_CLASS.run_type*/


T0* r257run_class(T257* C){
T0* R=NULL;
R=r42run_class((T0*)C);
return R;
}


T6 r257has_creation(T257* C,T0* a1){
T6 R=0;
R=r41has_creation((T41*)(r257base_class(C)),a1);
return R;
}


T0* r257expanded_initializer(T257* C){
T0* R=NULL;
/*[IF*/
if(r257is_expanded(C)){
R=r41expanded_initializer((T41*)(r257base_class(C)),(T0*)C);
}
/*FI]*/
return R;
}
/*No:TYPE_CLASS.is_like_current*/
/*No:TYPE_CLASS.is_boolean*/
/*No:TYPE_CLASS.is_generic*/
/*No:TYPE_CLASS.is_bit*/
/*No:TYPE_CLASS.is_real*/


T0* r257smallest_ancestor(T257* C,T0* a1){
T0* R=NULL;
T0* _bc=NULL;
T0* _rto_bc=NULL;
T0* _pl2=NULL;
T0* _pl1=NULL;
T0* _rto=NULL;
_rto=X62run_type(a1);
/*[IF*/
if(X62is_none(a1)){
R=(T0*)C;
}
 else if(X62is_any(_rto)){
R=_rto;
}
else{
_rto_bc=X62base_class(_rto);
_bc=r257base_class(C);
/*[IF*/
if((_rto_bc)==((void*)(_bc))){
R=(T0*)C;
}
 else if(r41is_subclass_of(((T41*)_rto_bc),_bc)){
R=(T0*)C;
}
 else if(r41is_subclass_of(((T41*)_bc),_rto_bc)){
R=_rto;
}
 else if((X62is_expanded(_rto))&&(!(r257is_expanded(C)))){
R=X62smallest_ancestor(_rto,(T0*)C);
}
else{
_pl1=(((T41*)_bc))->_parent_list/*40*/;
_pl2=(((T41*)_rto_bc))->_parent_list/*40*/;
/*[IF*/
if(((_pl1)==((void*)(NULL)))||((_pl2)==((void*)(NULL)))){
R=r257type_any();
}
 else if((/*(IRF4.6count*/(((T61*)((((T59*)_pl2))->_list/*12*/)))->_upper/*8*//*)*/)==(1)){
R=X62smallest_ancestor(((T60*)(/*(IRF4.6super*/r61first(((T61*)((((T59*)_pl2))->_list/*12*/)))/*)*/))->_type/*4*/,(T0*)C);
}
 else if((/*(IRF4.6count*/(((T61*)((((T59*)_pl1))->_list/*12*/)))->_upper/*8*//*)*/)==(1)){
R=X62smallest_ancestor(((T60*)(/*(IRF4.6super*/r61first(((T61*)((((T59*)_pl1))->_list/*12*/)))/*)*/))->_type/*4*/,a1);
}
else{
R=r59smallest_ancestor(((T59*)_pl1),(T0*)C);
R=X62smallest_ancestor(R,a1);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:TYPE_CLASS.is_any*/
T0*oBC257check_memory=NULL;
/*No:TYPE_CLASS.run_time_mark*/


T6 r257is_expanded(T257* C){
T6 R=0;
R=((T41*)(r257base_class(C)))->_is_expanded/*20*/;
return R;
}
/*No:TYPE_CLASS.is_basic_eiffel_expanded*/


T0* r257type_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_CLASS.is_string*/
/*No:TYPE_CLASS.is_integer*/
/*No:TYPE_CLASS.is_like_feature*/
/*No:TYPE_CLASS.fz_dot*/
/*No:TYPE_CLASS.is_anchored*/
/*No:TYPE_CLASS.is_run_type*/


T6 r257is_a(T257* C,T0* a1){
T6 R=0;
T0* _obcn=NULL;
T0* _bcn=NULL;
_bcn=(C)->_base_class_name/*4*/;
_obcn=X62base_class_name(a1);
/*[IF*/
if(((((T49*)_bcn))->_to_string/*0*/)==((void*)((((T49*)_obcn))->_to_string/*0*/))){
R=1;
}
 else if(r49is_subclass_of(((T49*)_bcn),_obcn)){
/*[IF*/
if(X62is_generic(a1)){
R=r41is_a_vncg((T41*)(r49base_class(((T49*)_bcn))),(T0*)C,a1);
}
else{
R=1;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(!(R)){
r37add_type((T0*)C,((T0*)ms12_17730));
r37add_type(a1,((T0*)ms12_47));
}
/*FI]*/
return R;
}
/*No:TYPE_CLASS.is_character*/


T6 r257is_reference(T257* C){
T6 R=0;
R=!(((T41*)(r257base_class(C)))->_is_expanded/*20*/);
return R;
}
/*No:TYPE_CLASS.written_mark*/
/*No:TYPE_CLASS.make*/
/*No:TYPE_CLASS.is_none*/
/*No:TYPE_CLASS.pretty_print*/
/*No:TYPE_CLASS.is_array*/
/*No:TYPE_CLASS.fz_inako*/


void r257fatal_error_generic_list(T257* C){
r37add_type((T0*)C,((T0*)ms62_29184));
r37print_as_fatal_error((T37*)(oBC11eh));
}
/*No:TYPE_CLASS.is_like_argument*/
/*No:TYPE_CLASS.is_double*/
/*No:PREFIX_NAME.is_frozen*/


void r125declaration_pretty_print(T125* C){
r310keyword((T310*)(oBC11fmt),((T0*)ms12_7614a));
r310put_character((T310*)(oBC11fmt),'\42');
r310put_string((T310*)(oBC11fmt),(C)->_to_string/*4*/);
r310put_character((T310*)(oBC11fmt),'\42');
}


void r125undefine_in(T125* C,T0* a1){
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}


T0* r125origin_base_class(T125* C){
T0* R=NULL;
T0* _sp=NULL;
_sp=(C)->_start_position/*8*/;
/*[IF*/
if((_sp)!=((void*)(NULL))){
R=r39base_class(((T39*)_sp));
}
/*FI]*/
return R;
}
/*No:PREFIX_NAME.start_position*/
/*No:PREFIX_NAME.to_string*/


void r125declaration_in(T125* C,T0* a1){
r7append(((T7*)a1),((T0*)ms12_7614a));
r7extend(((T7*)a1),'\40');
r7extend(((T7*)a1),'\42');
r7append(((T7*)a1),(C)->_to_string/*4*/);
r7extend(((T7*)a1),'\42');
}
/*No:PREFIX_NAME.to_key*/


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


void r125make(T125* C,T0* a1,T0* a2){
C->_to_string=r66item(a1);
C->_start_position=a2;
C->_to_key=r66for_prefix((C)->_to_string/*4*/);
}
/*No:PREFIX_NAME.pretty_print*/
/*No:PREFIX_NAME.fz_prefix*/
/*No:E_VOID.start_position*/


T0* r140add_comment(T140* 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 r140to_integer(T140* C){
T2 R=0;
r140error((C)->_start_position/*4*/,((T0*)ms12_45846));
return R;
}
/*No:E_VOID.print_as_target*/
/*No:E_VOID.bracketed_pretty_print*/
/*No:E_VOID.to_runnable*/
/*No:E_VOID.fz_iinaiv*/
int fBC140result_type=0;
T0*oBC140result_type=NULL;


T0* r140result_type(void){
if(fBC140result_type==0){
fBC140result_type=1;
{T253*n=malloc(sizeof(*n));
*n=M253;
r253make(n,NULL);
oBC140result_type=(T0*)n;
}
}
return oBC140result_type;}


void r140error(T0* a1,T0* a2){
r37add_position(a1);
r37error((T37*)(oBC11eh),a2);
}
/*No:E_VOID.precedence*/
/*No:E_VOID.make*/
/*No:E_VOID.us_void*/
/*No:E_VOID.is_current*/
/*No:E_VOID.pretty_print*/
/*No:E_VOID.is_void*/
/*No:E_VOID.atomic_precedence*/
/*No:RENAME_PAIR.new_name*/
/*No:RENAME_PAIR.old_name*/


void r70make(T70* C,T0* a1,T0* a2){
/*[IF*/
if((X65to_string(a1))==((void*)(X65to_string(a2)))){
r37add_position(X65start_position(a1));
r37add_position(X65start_position(a2));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms70_91800);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
C->_old_name=a1;
C->_new_name=a2;
}


void r70pretty_print(T70* C){
X65declaration_pretty_print((C)->_old_name/*0*/);
r310keyword((T310*)(oBC11fmt),((T0*)ms70_430));
X65declaration_pretty_print((C)->_new_name/*4*/);
}
/*No:RENAME_PAIR.fatal_error*/
/*No:FROZEN_FEATURE_NAME.is_frozen*/


void r300declaration_pretty_print(T300* C){
r310keyword((T310*)(oBC11fmt),((T0*)ms300_7350));
X65declaration_pretty_print((C)->_feature_name/*4*/);
}
/*No:FROZEN_FEATURE_NAME.feature_name*/


void r300undefine_in(T300* C,T0* a1){
/*[IF*/
{/*AT*/r300error(r300start_position(C),((T0*)ms65_117530));
r41fatal_undefine(((T41*)a1),(T0*)C);
}
/*FI]*/
}


T0* r300origin_base_class(T300* C){
T0* R=NULL;
T0* _sp=NULL;
_sp=r300start_position(C);
/*[IF*/
if((_sp)!=((void*)(NULL))){
R=r39base_class(((T39*)_sp));
}
/*FI]*/
return R;
}


T0* r300start_position(T300* C){
T0* R=NULL;
R=X65start_position((C)->_feature_name/*4*/);
return R;
}


T0* r300to_string(T300* C){
T0* R=NULL;
R=X65to_string((C)->_feature_name/*4*/);
return R;
}


void r300declaration_in(T300* C,T0* a1){
X65declaration_in((C)->_feature_name/*4*/,a1);
}


T0* r300to_key(T300* C){
T0* R=NULL;
R=X65to_key((C)->_feature_name/*4*/);
return R;
}


void r300error(T0* a1,T0* a2){
r37add_position(a1);
r37error((T37*)(oBC11eh),a2);
}
/*No:FROZEN_FEATURE_NAME.make*/


void r300pretty_print(T300* C){
X65pretty_print((C)->_feature_name/*4*/);
}
/*No:STD_OUTPUT.flush*/


void r36put_string(T36* C,T0* a1){
T2 _i=0;
_i=1;
while (!((_i)>((((T7*)a1))->_count/*4*/))) {
/*[IRF3.6put_character*/{T36* C1=C;
T3 b1=/*(IRF4.6item*/((((T7*)a1))->_storage/*0*/)[(_i)-(1)]/*)*/;
putc(b1,((FILE*)(stdout)));
}/*]*/
_i=(_i)+(1);
}
}
/*No:STD_OUTPUT.make*/
/*No:STD_OUTPUT.put_character*/
T0*oBC35tmp_string=NULL;


void r36put_integer(T36* C,T2 a1){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC35tmp_string))))->_count)=(0);
/*]*/
r2append_in(a1,oBC35tmp_string);
r36put_string(C,oBC35tmp_string);
}

