/*
-- 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 "short.h"
/*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 r319initialize(T319* C){
C->_arguments=((T288*)((C)->_base_feature/*32*/))->_arguments/*24*/;
/*[IF*/
if(((C)->_arguments/*36*/)!=((void*)(NULL))){
/*[IF*/
if(!(r175is_runnable((T175*)((C)->_arguments/*36*/),(C)->_current_type/*4*/))){
{T175*n=malloc(sizeof(*n));
*n=M175;
r175with(n,(C)->_arguments/*36*/,(C)->_current_type/*4*/);
C->_arguments=(T0*)n;
}
}
/*FI]*/
}
/*FI]*/
C->_local_vars=((T288*)((C)->_base_feature/*32*/))->_local_vars/*16*/;
/*[IF*/
if(((C)->_local_vars/*40*/)!=((void*)(NULL))){
C->_local_vars=r166to_runnable((T166*)((C)->_local_vars/*40*/),(C)->_current_type/*4*/);
}
/*FI]*/
C->_routine_body=((T288*)((C)->_base_feature/*32*/))->_routine_body/*44*/;
/*[IF*/
if(((C)->_routine_body/*44*/)!=((void*)(NULL))){
C->_routine_body=r204to_runnable((T204*)((C)->_routine_body/*44*/),(C)->_current_type/*4*/);
}
/*FI]*/
/*[IF*/
if(r73require_check((T73*)(oBC11run_control))){
C->_require_assertion=r288run_require((T0*)C);
}
/*FI]*/
/*[IF*/
if(r73ensure_check((T73*)(oBC11run_control))){
C->_ensure_assertion=r288run_ensure((T0*)C);
}
/*FI]*/
C->_rescue_compound=((T288*)((C)->_base_feature/*32*/))->_rescue_compound/*48*/;
/*[IF*/
if(((C)->_rescue_compound/*48*/)!=((void*)(NULL))){
/*[IRF3.3set_used*/((((T334*)((T334*)(oBC11exceptions_handler))))->_used)=(1);
/*]*/
C->_rescue_compound=r204to_runnable((T204*)((C)->_rescue_compound/*48*/),(C)->_current_type/*4*/);
}
/*FI]*/
}


T0* r319start_position(T319* C){
T0* R=NULL;
R=r288start_position((T288*)((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 r319add_client(T319* C,T0* a1){
T2 _i=0;
/*[IF*/
if(((C)->_actuals_clients/*12*/)==((void*)(NULL))){
{T321*n=malloc(sizeof(*n));
*n=M321;
r321with_capacity(n,4);
C->_actuals_clients=(T0*)n;
}
r321add_last((T321*)((C)->_actuals_clients/*12*/),a1);
}
else{
_i=r321fast_index_of((T321*)((C)->_actuals_clients/*12*/),a1);
/*[IF*/
if((_i)>(((T321*)((C)->_actuals_clients/*12*/))->_upper/*8*/)){
r321add_last((T321*)((C)->_actuals_clients/*12*/),a1);
}
/*FI]*/
}
/*FI]*/
r310add_client((T310*)(r319run_class(C)),a1);
}


T0* r319run_class(T319* C){
T0* R=NULL;
R=X46run_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 r319make(T319* C,T0* a1,T0* a2,T0* a3){
C->_current_type=a1;
C->_name=a2;
C->_base_feature=a3;
/*[IRF3.5add_rf*/r317put(((T317*)(((T310*)(r319run_class(C)))->_feature_dictionary/*24*/)),(T0*)C,X77to_key(a2));
/*]*/
r59incr_magic_count((T59*)(oBC11small_eiffel));
C->_use_current_state=15;
r59push((T59*)(oBC11small_eiffel),(T0*)C);
r319initialize(C);
r59pop((T59*)(oBC11small_eiffel));
}
/*No:RUN_FEATURE_3.routine_body*/
/*No:RUN_FEATURE_3.name*/
/*No:RUN_FEATURE_3.local_vars*/


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


T0* r319clients(T319* C){
T0* R=NULL;
T0* _bfbc=NULL;
T0* _bc=NULL;
/*[IF*/
if(((C)->_clients_memory/*8*/)==((void*)(NULL))){
_bc=X46base_class((C)->_current_type/*4*/);
_bfbc=((T288*)((C)->_base_feature/*32*/))->_base_class/*4*/;
/*[IF*/
if((_bc)==((void*)(_bfbc))){
R=((T288*)((C)->_base_feature/*32*/))->_clients/*20*/;
}
else{
R=r22clients_for(((T22*)_bc),(C)->_name/*16*/);
}
/*FI]*/
C->_clients_memory=R;
}
else{
R=(C)->_clients_memory/*8*/;
}
/*FI]*/
return R;
}


T6 r319is_exported_in(T319* C,T0* a1){
T6 R=0;
R=r94gives_permission_to((T94*)(r319clients(C)),a1);
return R;
}
/*No:SIMPLE_FEATURE_NAME.is_frozen*/


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


T0* r135origin_base_class(T135* C){
T0* R=NULL;
T0* _sp=NULL;
_sp=(C)->_start_position/*8*/;
/*[IF*/
if((_sp)!=((void*)(NULL))){
R=r69base_class(((T69*)_sp));
}
/*FI]*/
return R;
}
/*No:SIMPLE_FEATURE_NAME.start_position*/
/*No:SIMPLE_FEATURE_NAME.to_string*/


T0* r135add_comment(T135* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r34count(((T34*)((((T52*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
else{
{T218*n=malloc(sizeof(*n));
*n=M218;
r218make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


T2 r135to_integer(T135* C){
T2 R=0;
r135error((C)->_start_position/*8*/,((T0*)ms12_45846));
return R;
}


T0* r135to_runnable(T135* C,T0* a1){
T0* R=NULL;
T0* _rf2=NULL;
T0* _new_name=NULL;
T0* _rf=NULL;
T0* _wbc=NULL;
_wbc=r69base_class((T69*)((C)->_start_position/*8*/));
_new_name=r22new_name_of((T22*)(X46base_class(a1)),_wbc,(T0*)C);
_rf=r310get_feature((T310*)(X46run_class(a1)),_new_name);
/*[IF*/
if((_rf)==((void*)(NULL))){
r135error((C)->_start_position/*8*/,((T0*)ms135_24192));
}
else{
_rf2=_rf;
if(NULL!=(_rf2))switch(((T0*)_rf2)->id) {
case 343: 
break;
default:
_rf2=NULL;
};/*[IF*/
if((_rf2)==((void*)(NULL))){
r67add_position(X312start_position(_rf));
r135error((C)->_start_position/*8*/,((T0*)ms135_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{
{T135*n=malloc(sizeof(*n));
*n=M135;
r135with(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 r135error(T0* a1,T0* a2){
r67add_position(a1);
r67error((T67*)(oBC11eh),a2);
}


T0* r135run_feature(T135* C,T0* a1){
T0* R=NULL;
R=r310get_rf_with((T310*)(X46run_class(a1)),(T0*)C);
return R;
}
/*No:SIMPLE_FEATURE_NAME.precedence*/


void r135make(T135* C,T0* a1,T0* a2){
C->_to_string=r78item(a1);
C->_start_position=a2;
}


void r135bracketed_short(T135* C){
r39hook_or((T39*)(oBC11short_print),((T0*)ms53_6792),((T0*)ms53_41));
r135short(C);
r39hook_or((T39*)(oBC11short_print),((T0*)ms53_8645),((T0*)ms53_42));
}
/*No:SIMPLE_FEATURE_NAME.is_current*/
/*No:SIMPLE_FEATURE_NAME.is_void*/


void r135short_target(T135* C){
r135short(C);
/*[IRF3.6a_dot*/{T39* C1=(T39*)(oBC11short_print);
r39hook_or(C1,((T0*)ms39_999a),((T0*)ms12_47));
}/*]*/
}
/*No:SIMPLE_FEATURE_NAME.run_feature_2*/


void r135with(T135* C,T0* a1,T0* a2){
C->_to_string=(((T135*)a1))->_to_string/*4*/;
C->_start_position=(((T135*)a1))->_start_position/*8*/;
C->_run_feature_2=a2;
}


void r135short(T135* C){
T3 _c=0;
T2 _i=0;
r39hook((T39*)(oBC11short_print),((T0*)ms135_1612));
_i=1;
while (!((_i)>(((T7*)((C)->_to_string/*4*/))->_count/*4*/))) {
_c=/*(IRF4.6item*/(((T7*)((C)->_to_string/*4*/))->_storage/*0*/)[(_i)-(1)]/*)*/;
/*[IF*/
if((_c)==('\137')){
r39hook_or((T39*)(oBC11short_print),((T0*)ms135_1688),((T0*)ms135_96));
}
else{
/*[IRF3.6a_character*/{T3 b1=_c;
/*[IRF3.6put_character*/{T38* C2=(T38*)(oBC1std_output);
T3 c1=b1;
putc(c1,((FILE*)(stdout)));
}/*]*/
}/*]*/
}
/*FI]*/
_i=(_i)+(1);
}
r39hook((T39*)(oBC11short_print),((T0*)ms135_1608));
}
/*No:SIMPLE_FEATURE_NAME.atomic_precedence*/


T0* r261generic_list(T261* C){
T0* R=NULL;
r261fatal_error_generic_list(C);
return R;
}


T0* r261base_class(T261* C){
T0* R=NULL;
T0* _bcn=NULL;
_bcn=(C)->_base_class_name/*4*/;
/*[IF*/
if((_bcn)!=((void*)(NULL))){
R=r47base_class(((T47*)_bcn));
}
else{
/*[IRF3.6append*/{T0* b1=((T0*)ms46_37098);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
r67add_type((T0*)C,((T0*)ms12_47));
r67print_as_fatal_error((T67*)(oBC11eh));
}
/*FI]*/
return R;
}
/*No:TYPE_CLASS.base_class_name*/
/*No:TYPE_CLASS.start_position*/
/*No:TYPE_CLASS.is_formal_generic*/


void r261used_as_reference(T261* C){
/*[IF*/
if(r261is_expanded(C)){
r310used_as_reference((T310*)(r261run_class(C)));
}
/*FI]*/
}


T6 r261is_a_in(T261* C,T0* a1,T0* a2){
T6 R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*[IF*/
if((/*(IRF4.6written_mark*/(((T47*)((C)->_base_class_name/*4*/)))->_to_string/*0*//*)*/)==((void*)(X46written_mark(a1)))){
R=1;
}
else{
_ct=(((T310*)a2))->_current_type/*0*/;
_t1=r261to_runnable(C,_ct);
_t2=X46to_runnable(a1,_ct);
/*[IF*/
if((X46run_time_mark(_t1))==((void*)(X46run_time_mark(_t2)))){
R=1;
}
else{
R=X46is_a(_t1,_t2);
}
/*FI]*/
}
/*FI]*/
return R;
}


T2 r261id(T261* C){
T2 R=0;
R=((T22*)(r261base_class(C)))->_id/*0*/;
return R;
}
/*No:TYPE_CLASS.is_pointer*/


T0* r261look_up_for(T261* C,T0* a1,T0* a2){
T0* R=NULL;
R=r22look_up_for((T22*)(r261base_class(C)),a1,a2);
return R;
}


T0* r261to_runnable(T261* C,T0* a1){
T0* R=NULL;
T0* _bc=NULL;
_bc=r47base_class((T47*)((C)->_base_class_name/*4*/));
/*[IF*/
if(((((T22*)_bc))->_is_expanded/*20*/)&&(!(r64fast_has((T64*)(oBC261check_memory),_bc)))){
r64add_last((T64*)(oBC261check_memory),_bc);
r310set_at_run_time((T310*)(r261run_class(C)));
}
/*FI]*/
/*[IF*/
if(((((T22*)_bc))->_formal_generic_list/*28*/)!=((void*)(NULL))){
r67add_position(((T42*)((((T22*)_bc))->_formal_generic_list/*28*/))->_start_position/*0*/);
r67add_type((T0*)C,((T0*)ms261_50344));
r67print_as_fatal_error((T67*)(oBC11eh));
}
/*FI]*/
R=(T0*)C;
return R;
}
/*No:TYPE_CLASS.run_type*/


T0* r261run_class(T261* C){
T0* R=NULL;
R=r59run_class((T0*)C);
return R;
}


T6 r261has_creation(T261* C,T0* a1){
T6 R=0;
R=r22has_creation((T22*)(r261base_class(C)),a1);
return R;
}


T0* r261expanded_initializer(T261* C){
T0* R=NULL;
/*[IF*/
if(r261is_expanded(C)){
R=r22expanded_initializer((T22*)(r261base_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* r261smallest_ancestor(T261* C,T0* a1){
T0* R=NULL;
T0* _bc=NULL;
T0* _rto_bc=NULL;
T0* _pl2=NULL;
T0* _pl1=NULL;
T0* _rto=NULL;
_rto=X46run_type(a1);
/*[IF*/
if(X46is_none(a1)){
R=(T0*)C;
}
 else if(X46is_any(_rto)){
R=_rto;
}
else{
_rto_bc=X46base_class(_rto);
_bc=r261base_class(C);
/*[IF*/
if((_rto_bc)==((void*)(_bc))){
R=(T0*)C;
}
 else if(r22is_subclass_of(((T22*)_rto_bc),_bc)){
R=(T0*)C;
}
 else if(r22is_subclass_of(((T22*)_bc),_rto_bc)){
R=_rto;
}
 else if((X46is_expanded(_rto))&&(!(r261is_expanded(C)))){
R=X46smallest_ancestor(_rto,(T0*)C);
}
else{
_pl1=(((T22*)_bc))->_parent_list/*40*/;
_pl2=(((T22*)_rto_bc))->_parent_list/*40*/;
/*[IF*/
if(((_pl1)==((void*)(NULL)))||((_pl2)==((void*)(NULL)))){
R=r261type_any();
}
 else if((/*(IRF4.6count*/(((T57*)((((T55*)_pl2))->_list/*12*/)))->_upper/*8*//*)*/)==(1)){
R=X46smallest_ancestor(((T56*)(/*(IRF4.6super*/r57first(((T57*)((((T55*)_pl2))->_list/*12*/)))/*)*/))->_type/*4*/,(T0*)C);
}
 else if((/*(IRF4.6count*/(((T57*)((((T55*)_pl1))->_list/*12*/)))->_upper/*8*//*)*/)==(1)){
R=X46smallest_ancestor(((T56*)(/*(IRF4.6super*/r57first(((T57*)((((T55*)_pl1))->_list/*12*/)))/*)*/))->_type/*4*/,a1);
}
else{
R=r55smallest_ancestor(((T55*)_pl1),(T0*)C);
R=X46smallest_ancestor(R,a1);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:TYPE_CLASS.is_any*/
T0*oBC261check_memory=NULL;
/*No:TYPE_CLASS.run_time_mark*/


T6 r261is_expanded(T261* C){
T6 R=0;
R=((T22*)(r261base_class(C)))->_is_expanded/*20*/;
return R;
}
/*No:TYPE_CLASS.is_basic_eiffel_expanded*/


T0* r261type_any(void){
if(fBC11type_any==0){
fBC11type_any=1;
{T247*n=malloc(sizeof(*n));
*n=M247;
r247make(n,NULL);
oBC11type_any=(T0*)n;
}
}
return oBC11type_any;}
/*No:TYPE_CLASS.short_hook*/
/*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 r261is_a(T261* C,T0* a1){
T6 R=0;
T0* _obcn=NULL;
T0* _bcn=NULL;
_bcn=(C)->_base_class_name/*4*/;
_obcn=X46base_class_name(a1);
/*[IF*/
if(((((T47*)_bcn))->_to_string/*0*/)==((void*)((((T47*)_obcn))->_to_string/*0*/))){
R=1;
}
 else if(r47is_subclass_of(((T47*)_bcn),_obcn)){
/*[IF*/
if(X46is_generic(a1)){
R=r22is_a_vncg((T22*)(r47base_class(((T47*)_bcn))),(T0*)C,a1);
}
else{
R=1;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(!(R)){
r67add_type((T0*)C,((T0*)ms12_17730));
r67add_type(a1,((T0*)ms12_47));
}
/*FI]*/
return R;
}
/*No:TYPE_CLASS.is_character*/


T6 r261is_reference(T261* C){
T6 R=0;
R=!(((T22*)(r261base_class(C)))->_is_expanded/*20*/);
return R;
}
/*No:TYPE_CLASS.written_mark*/
/*No:TYPE_CLASS.make*/
/*No:TYPE_CLASS.is_none*/
/*No:TYPE_CLASS.is_array*/
/*No:TYPE_CLASS.fz_inako*/


void r261fatal_error_generic_list(T261* C){
r67add_type((T0*)C,((T0*)ms46_29184));
r67print_as_fatal_error((T67*)(oBC11eh));
}
/*No:TYPE_CLASS.is_like_argument*/
/*No:TYPE_CLASS.is_double*/


void r261short(T261* C){
r39hook((T39*)(oBC11short_print),((T0*)ms46_891));
/*[IRF3.6short_hook*/{T261* C1=C;
r39a_class_name((T39*)(oBC11short_print),(C1)->_base_class_name/*4*/);
}/*]*/
r39hook((T39*)(oBC11short_print),((T0*)ms46_888));
}
/*No:PREFIX_NAME.is_frozen*/


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


T0* r129origin_base_class(T129* C){
T0* R=NULL;
T0* _sp=NULL;
_sp=(C)->_start_position/*8*/;
/*[IF*/
if((_sp)!=((void*)(NULL))){
R=r69base_class(((T69*)_sp));
}
/*FI]*/
return R;
}
/*No:PREFIX_NAME.start_position*/
/*No:PREFIX_NAME.to_string*/


void r129declaration_in(T129* 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 r129error(T0* a1,T0* a2){
r67add_position(a1);
r67error((T67*)(oBC11eh),a2);
}


void r129make(T129* C,T0* a1,T0* a2){
C->_to_string=r78item(a1);
C->_start_position=a2;
C->_to_key=r78for_prefix((C)->_to_string/*4*/);
}
/*No:PREFIX_NAME.fz_prefix*/


void r129short(T129* C){
T3 _c=0;
T2 _i=0;
r39hook_or((T39*)(oBC11short_print),((T0*)ms129_1600),((T0*)ms129_6568));
_i=1;
while (!((_i)>(((T7*)((C)->_to_string/*4*/))->_count/*4*/))) {
_c=/*(IRF4.6item*/(((T7*)((C)->_to_string/*4*/))->_storage/*0*/)[(_i)-(1)]/*)*/;
/*[IRF3.6a_character*/{T3 b1=_c;
/*[IRF3.6put_character*/{T38* C2=(T38*)(oBC1std_output);
T3 c1=b1;
putc(c1,((FILE*)(stdout)));
}/*]*/
}/*]*/
_i=(_i)+(1);
}
r39hook_or((T39*)(oBC11short_print),((T0*)ms129_1596),((T0*)ms129_35));
}
/*No:E_VOID.start_position*/


T0* r144add_comment(T144* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r34count(((T34*)((((T52*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
else{
{T218*n=malloc(sizeof(*n));
*n=M218;
r218make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


T2 r144to_integer(T144* C){
T2 R=0;
r144error((C)->_start_position/*4*/,((T0*)ms12_45846));
return R;
}
/*No:E_VOID.to_runnable*/
/*No:E_VOID.fz_iinaiv*/
int fBC144result_type=0;
T0*oBC144result_type=NULL;


T0* r144result_type(void){
if(fBC144result_type==0){
fBC144result_type=1;
{T257*n=malloc(sizeof(*n));
*n=M257;
r257make(n,NULL);
oBC144result_type=(T0*)n;
}
}
return oBC144result_type;}


void r144error(T0* a1,T0* a2){
r67add_position(a1);
r67error((T67*)(oBC11eh),a2);
}
/*No:E_VOID.precedence*/
/*No:E_VOID.make*/
/*No:E_VOID.us_void*/
/*No:E_VOID.bracketed_short*/
/*No:E_VOID.is_current*/
/*No:E_VOID.is_void*/
/*No:E_VOID.short_target*/
/*No:E_VOID.short*/
/*No:E_VOID.atomic_precedence*/
/*No:RENAME_PAIR.new_name*/
/*No:RENAME_PAIR.old_name*/


void r82make(T82* C,T0* a1,T0* a2){
/*[IF*/
if((X77to_string(a1))==((void*)(X77to_string(a2)))){
r67add_position(X77start_position(a1));
r67add_position(X77start_position(a2));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms82_91800);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
C->_old_name=a1;
C->_new_name=a2;
}
/*No:RENAME_PAIR.fatal_error*/
/*No:FROZEN_FEATURE_NAME.is_frozen*/
/*No:FROZEN_FEATURE_NAME.feature_name*/


void r301undefine_in(T301* C,T0* a1){
/*[IF*/
{/*AT*/r301error(r301start_position(C),((T0*)ms77_117530));
r22fatal_undefine(((T22*)a1),(T0*)C);
}
/*FI]*/
}


T0* r301origin_base_class(T301* C){
T0* R=NULL;
T0* _sp=NULL;
_sp=r301start_position(C);
/*[IF*/
if((_sp)!=((void*)(NULL))){
R=r69base_class(((T69*)_sp));
}
/*FI]*/
return R;
}


T0* r301start_position(T301* C){
T0* R=NULL;
R=X77start_position((C)->_feature_name/*4*/);
return R;
}


T0* r301to_string(T301* C){
T0* R=NULL;
R=X77to_string((C)->_feature_name/*4*/);
return R;
}


void r301declaration_in(T301* C,T0* a1){
X77declaration_in((C)->_feature_name/*4*/,a1);
}


T0* r301to_key(T301* C){
T0* R=NULL;
R=X77to_key((C)->_feature_name/*4*/);
return R;
}


void r301error(T0* a1,T0* a2){
r67add_position(a1);
r67error((T67*)(oBC11eh),a2);
}
/*No:FROZEN_FEATURE_NAME.make*/


void r301short(T301* C){
X77short((C)->_feature_name/*4*/);
}
/*No:STD_OUTPUT.flush*/


void r38put_string(T38* C,T0* a1){
T2 _i=0;
_i=1;
while (!((_i)>((((T7*)a1))->_count/*4*/))) {
/*[IRF3.6put_character*/{T38* 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*oBC37tmp_string=NULL;


void r38put_integer(T38* C,T2 a1){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC37tmp_string))))->_count)=(0);
/*]*/
r2append_in(a1,oBC37tmp_string);
r38put_string(C,oBC37tmp_string);
}
/*No:LOOP_VARIANT_2.nb_errors*/
/*No:LOOP_VARIANT_2.tag*/


T0* r233start_position(T233* C){
T0* R=NULL;
R=X53start_position((C)->_expression/*8*/);
return R;
}


T0* r233twin(T233* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T233*)R)=*C;
return R;
}
/*No:LOOP_VARIANT_2.expression*/


T0* r233to_runnable(T233* C,T0* a1){
T0* R=NULL;
T0* _e=NULL;
/*[IF*/
if(((C)->_current_type/*12*/)==((void*)(NULL))){
C->_current_type=a1;
_e=X53to_runnable((C)->_expression/*8*/,a1);
/*[IF*/
if((_e)==((void*)(NULL))){
r233error(r233start_position(C),((T0*)ms230_20400));
}
else{
C->_expression=_e;
/*[IF*/
if(!(X46is_integer(X53result_type((C)->_expression/*8*/)))){
r233error(X53start_position((C)->_expression/*8*/),((T0*)ms230_86602));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T67*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
R=(T0*)C;
}
/*FI]*/
}
else{
R=r233twin(C);
/*[IRF3.3set_current_type*/((((T233*)(((T233*)R))))->_current_type)=(NULL);
/*]*/
R=r233to_runnable(((T233*)R),a1);
}
/*FI]*/
return R;
}
/*No:LOOP_VARIANT_2.set_current_type*/
/*No:LOOP_VARIANT_2.current_type*/


void r233error(T0* a1,T0* a2){
r67add_position(a1);
r67error((T67*)(oBC11eh),a2);
}


void r233make(T233* C,T0* a1,T0* a2,T0* a3){
C->_comment=a3;
C->_tag=a1;
C->_expression=a2;
}
/*No:LOOP_VARIANT_2.comment*/
/*No:CALL_INFIX_EQ.feature_name*/


T0* r117start_position(T117* C){
T0* R=NULL;
R=((T125*)((C)->_feature_name/*12*/))->_start_position/*8*/;
return R;
}


void r117error_comparison(T117* C,T0* a1,T0* a2){
r67add_position(((T125*)((C)->_feature_name/*12*/))->_start_position/*8*/);
/*[IRF3.6append*/{T0* b1=((T0*)ms116_9960);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=a1;
r7append((T7*)(oBC67explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms116_88736);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
r67add_type(a2,((T0*)ms12_47));
r67print_as_fatal_error((T67*)(oBC11eh));
}


T0* r117add_comment(T117* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r34count(((T34*)((((T52*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
else{
{T218*n=malloc(sizeof(*n));
*n=M218;
r218make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


T2 r117to_integer(T117* C){
T2 R=0;
r117error(r117start_position(C),((T0*)ms12_45846));
return R;
}


T0* r117to_runnable(T117* C,T0* a1){
T0* R=NULL;
T0* _a=NULL;
T0* _t=NULL;
_t=r117runnable_expression((C)->_target/*4*/,a1);
_a=r117runnable_args((C)->_arguments/*8*/,a1);
/*[IF*/
if(((_t)==((void*)((C)->_target/*4*/)))&&((_a)==((void*)((C)->_arguments/*8*/)))){
R=(T0*)C;
}
else{
{T117*n=malloc(sizeof(*n));
*n=M117;
r117with(n,_t,(C)->_feature_name/*12*/,_a);
R=(T0*)n;
}
}
/*FI]*/
r117check_comparison(((T117*)R),a1);
return R;
}
/*No:CALL_INFIX_EQ.fz_bad_argument*/
/*No:CALL_INFIX_EQ.fz_iinaiv*/
/*No:CALL_INFIX_EQ.result_type*/


T0* r117runnable_args(T0* a1,T0* a2){
T0* R=NULL;
R=r136to_runnable(((T136*)a1),a2);
/*[IF*/
if((R)==((void*)(NULL))){
r67add_position(r136start_position(((T136*)a1)));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms12_13065);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
return R;
}


void r117bracketed_short(T117* C){
r39hook_or((T39*)(oBC11short_print),((T0*)ms53_6792),((T0*)ms53_41));
r117short(C);
r39hook_or((T39*)(oBC11short_print),((T0*)ms53_8645),((T0*)ms53_42));
}


void r117check_comparison(T117* C,T0* a1){
T0* _at=NULL;
T0* _tt=NULL;
/*[IF*/
if((/*(IRF4.9nb_errors*/((T67*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
_tt=X46run_type(X53result_type((C)->_target/*4*/));
_at=X46run_type(X53result_type(/*(IRF4.6arg1*//*(IRF4.3first*/(((T136*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/));
/*[IF*/
if(X46is_none(_tt)){
/*[IF*/
if(X46is_expanded(_at)){
X46used_as_reference(_at);
}
/*FI]*/
}
 else if(X46is_none(_at)){
/*[IF*/
if(X46is_expanded(_tt)){
X46used_as_reference(_tt);
}
/*FI]*/
}
 else if(X46is_reference(_tt)){
/*[IF*/
if(X46is_reference(_at)){
/*[IF*/
if(X46is_a(_tt,_at)){
}
else{
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC67explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T68*)((T68*)(oBC67positions))))->_upper)=(-(1));
/*]*/
/*]*/
/*[IF*/
if(X46is_a(_at,_tt)){
}
else{
r117error_comparison(C,((T0*)ms116_46246),a1);
}
/*FI]*/
}
/*FI]*/
}
 else if(!(X46is_a(_at,_tt))){
r117error_comparison(C,((T0*)ms116_41670),a1);
}
else{
X46used_as_reference(_at);
}
/*FI]*/
}
else{
/*[IF*/
if(X46is_expanded(_at)){
/*[IF*/
if(X46is_basic_eiffel_expanded(_at)){
/*[IF*/
if(X46is_a(_tt,_at)){
}
else{
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC67explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T68*)((T68*)(oBC67positions))))->_upper)=(-(1));
/*]*/
/*]*/
/*[IF*/
if(X46is_a(_at,_tt)){
}
else{
r117error_comparison(C,((T0*)ms116_37791),a1);
}
/*FI]*/
}
/*FI]*/
}
 else if(X46is_bit(_tt)){
r117bit_limitation(C,_tt,_at);
}
 else if(!(X46is_a(_at,_tt))){
r117error_comparison(C,((T0*)ms116_37791a),a1);
}
/*FI]*/
}
 else if(!(X46is_a(_tt,_at))){
r117error_comparison(C,((T0*)ms116_42138),a1);
}
else{
X46used_as_reference(_tt);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}


void r117bit_limitation(T117* C,T0* a1,T0* a2){
T0* _b2=NULL;
T0* _b1=NULL;
_b1=a1;
if(NULL!=(_b1))switch(((T0*)_b1)->id) {
case 264: case 266: 
break;
default:
_b1=NULL;
};_b2=a2;
if(NULL!=(_b2))switch(((T0*)_b2)->id) {
case 264: case 266: 
break;
default:
_b2=NULL;
};/*[IF*/
if((X265nb(_b1))!=(X265nb(_b2))){
r67add_position(((T125*)((C)->_feature_name/*12*/))->_start_position/*8*/);
/*[IRF3.6append*/{T0* b1=((T0*)ms116_21261);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
r67add_type(_b1,((T0*)ms116_1930));
r67add_type(_b2,((T0*)ms116_383757));
r67print_as_fatal_error((T67*)(oBC11eh));
}
/*FI]*/
}


void r117with(T117* C,T0* a1,T0* a2,T0* a3){
C->_target=a1;
C->_feature_name=a2;
C->_arguments=a3;
}
/*No:CALL_INFIX_EQ.us_eq*/
/*No:CALL_INFIX_EQ.fatal_error*/
int fBC11type_boolean=0;
T0*oBC11type_boolean=NULL;


T0* r117type_boolean(void){
if(fBC11type_boolean==0){
fBC11type_boolean=1;
{T252*n=malloc(sizeof(*n));
*n=M252;
r252make(n,NULL);
oBC11type_boolean=(T0*)n;
}
}
return oBC11type_boolean;}
/*No:CALL_INFIX_EQ.nb_errors*/
/*No:CALL_INFIX_EQ.arguments*/


T0* r117runnable_expression(T0* a1,T0* a2){
T0* R=NULL;
R=X53to_runnable(a1,a2);
/*[IF*/
if((R)==((void*)(NULL))){
r67add_position(X53start_position(a1));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms105_16515);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_EQ.arg1*/
/*No:CALL_INFIX_EQ.fz_dot*/
/*No:CALL_INFIX_EQ.target*/


void r117error(T0* a1,T0* a2){
r67add_position(a1);
r67error((T67*)(oBC11eh),a2);
}
/*No:CALL_INFIX_EQ.precedence*/


void r117make(T117* C,T0* a1,T0* a2,T0* a3){
C->_target=a1;
{T125*n=malloc(sizeof(*n));
*n=M125;
r125make(n,r117operator(),a2);
C->_feature_name=(T0*)n;
}
{T136*n=malloc(sizeof(*n));
*n=M136;
/*[IRF3.3make_1*/((((T136*)(n)))->_first_one)=(a3);
/*]*/
C->_arguments=(T0*)n;
}
}
/*No:CALL_INFIX_EQ.is_current*/
/*No:CALL_INFIX_EQ.short_print_feature_name*/
/*No:CALL_INFIX_EQ.is_void*/


T0* r117operator(void){
T0* R=NULL;
R=((T0*)ms13_62);
return R;
}


void r117short_target(T117* C){
r117bracketed_short(C);
/*[IRF3.6a_dot*/{T39* C1=(T39*)(oBC11short_print);
r39hook_or(C1,((T0*)ms39_999a),((T0*)ms12_47));
}/*]*/
}


void r117short(T117* C){
/*[IF*/
if((X53precedence((C)->_target/*4*/))==(13)){
X53short((C)->_target/*4*/);
/*[IRF3.6short_print_feature_name*/{T117* C1=C;
r39a_infix_name((T39*)(oBC11short_print),((T0*)ms102_7338),((T0*)ms102_33a),((T0*)ms102_7332),((T0*)ms102_33),(C1)->_feature_name/*12*/);
}/*]*/
/*[IF*/
if((X53precedence(/*(IRF4.6arg1*//*(IRF4.3first*/(((T136*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/))==(13)){
X53short(/*(IRF4.6arg1*//*(IRF4.3first*/(((T136*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
}
 else if((6)>=(X53precedence(/*(IRF4.6arg1*//*(IRF4.3first*/(((T136*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/))){
X53bracketed_short(/*(IRF4.6arg1*//*(IRF4.3first*/(((T136*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
}
else{
X53short(/*(IRF4.6arg1*//*(IRF4.3first*/(((T136*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
}
/*FI]*/
}
 else if((X53precedence((C)->_target/*4*/))<(6)){
X53bracketed_short((C)->_target/*4*/);
/*[IRF3.6short_print_feature_name*/{T117* C1=C;
r39a_infix_name((T39*)(oBC11short_print),((T0*)ms102_7338),((T0*)ms102_33a),((T0*)ms102_7332),((T0*)ms102_33),(C1)->_feature_name/*12*/);
}/*]*/
X53short(/*(IRF4.6arg1*//*(IRF4.3first*/(((T136*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
}
else{
X53short((C)->_target/*4*/);
/*[IRF3.6short_print_feature_name*/{T117* C1=C;
r39a_infix_name((T39*)(oBC11short_print),((T0*)ms102_7338),((T0*)ms102_33a),((T0*)ms102_7332),((T0*)ms102_33),(C1)->_feature_name/*12*/);
}/*]*/
X53short(/*(IRF4.6arg1*//*(IRF4.3first*/(((T136*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
}
/*FI]*/
}
/*No:CALL_INFIX_EQ.atomic_precedence*/

