/*
-- 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* r49base_class(T49* C){
T0* R=NULL;
R=r42base_class((T42*)(oBC11small_eiffel),(T0*)C);
return R;
}
/*No:CLASS_NAME.start_position*/
/*No:CLASS_NAME.to_string*/


T6 r49is_subclass_of(T49* C,T0* a1){
T6 R=0;
/*[IF*/
if((((T0*)ms13_1256))==((void*)((C)->_to_string/*0*/))){
R=1;
}
 else if((((T0*)ms13_714))==((void*)((((T49*)a1))->_to_string/*0*/))){
R=1;
}
 else if((((T0*)ms13_1256))==((void*)((((T49*)a1))->_to_string/*0*/))){
}
else{
R=r41is_subclass_of((T41*)(r49base_class(C)),r49base_class(((T49*)a1)));
}
/*FI]*/
return R;
}


void r49identify(T49* C,T0* a1){
C->_to_string=r66item(a1);
}


void r49make_unknown(T49* C){
{T39*n=malloc(sizeof(*n));
*n=M39;
r39with(n,1,1,(T0*)C);
C->_start_position=(T0*)n;
}
C->_to_string=((T0*)ms49_702);
}
/*No:CLASS_NAME.us_none*/


void r49make(T49* C,T0* a1,T0* a2){
C->_start_position=a2;
C->_to_string=r66item(a1);
}
/*No:CLASS_NAME.us_any*/
/*No:CLASS_NAME.pretty_print*/
/*No:CLASS_NAME.unknown_name*/
/*No:CALL_INFIX_FREEOP.feature_name*/
/*No:CALL_INFIX_FREEOP.right_brackets*/


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


T0* r120add_comment(T120* 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 r120to_integer(T120* C){
T2 R=0;
r120error(r120start_position(C),((T0*)ms12_45846));
return R;
}


void r120bracketed_pretty_print(T120* C){
r310put_character((T310*)(oBC11fmt),'\50');
r120pretty_print(C);
r310put_character((T310*)(oBC11fmt),'\51');
}


void r120print_op(T120* 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* r120to_runnable(T120* 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=r120runnable_expression((C)->_target/*4*/,a1);
_a=r120runnable_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=r120run_feature_for(C,_t,a1);
/*[IF*/
if(((C)->_run_feature/*16*/)==((void*)(NULL))){
C->_target=_t;
C->_arguments=_a;
C->_run_feature=_rf;
r120run_feature_match(C,a1);
R=(T0*)C;
}
 else if(((_t)==((void*)((C)->_target/*4*/)))&&((_a)==((void*)((C)->_arguments/*8*/)))){
R=(T0*)C;
}
else{
{T120*n=malloc(sizeof(*n));
*n=M120;
r120with(n,_t,(C)->_feature_name/*12*/,_a,_rf,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_FREEOP.fz_bad_argument*/
/*No:CALL_INFIX_FREEOP.fz_iinaiv*/


T0* r120result_type(T120* 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_FREEOP.run_feature*/


T0* r120runnable_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 r120with(T120* 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;
r120run_feature_match(C,a5);
}
/*No:CALL_INFIX_FREEOP.fatal_error*/


void r120run_feature_match(T120* C,T0* a1){
r120run_feature_has_result(C);
r132match_with((T132*)((C)->_arguments/*8*/),(C)->_run_feature/*16*/,a1);
}
/*No:CALL_INFIX_FREEOP.arguments*/


T0* r120runnable_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_FREEOP.left_brackets*/
/*No:CALL_INFIX_FREEOP.implicit_cast*/


void r120print_as_target(T120* C){
r310put_character((T310*)(oBC11fmt),'\50');
r120pretty_print(C);
r310put_character((T310*)(oBC11fmt),'\51');
r310put_character((T310*)(oBC11fmt),'\56');
}
/*No:CALL_INFIX_FREEOP.arg1*/


void r120run_feature_has_result(T120* 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* r120run_feature_for(T120* 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_FREEOP.target*/


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


void r120make(T120* C,T0* a1,T0* a2,T0* a3){
C->_target=a1;
C->_feature_name=a2;
{T132*n=malloc(sizeof(*n));
*n=M132;
/*[IRF3.3make_1*/((((T132*)(n)))->_first_one)=(a3);
/*]*/
C->_arguments=(T0*)n;
}
}
/*No:CALL_INFIX_FREEOP.is_current*/


void r120pretty_print(T120* C){
/*[IF*/
if((X89precedence((C)->_target/*4*/))==(13)){
X89pretty_print((C)->_target/*4*/);
}
 else if((10)>(X89precedence((C)->_target/*4*/))){
X89bracketed_pretty_print((C)->_target/*4*/);
}
 else if((10)<(X89precedence((C)->_target/*4*/))){
X89pretty_print((C)->_target/*4*/);
}
/*AF*/else{
X89pretty_print((C)->_target/*4*/);
}
/*FI]*/
r120print_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((10)>(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((10)<(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_FREEOP.is_void*/
/*No:CALL_INFIX_FREEOP.atomic_precedence*/
/*No:E_PRECURSOR_PROCEDURE.us_precursor*/
/*No:E_PRECURSOR_PROCEDURE.nb_errors*/
/*No:E_PRECURSOR_PROCEDURE.arguments*/
/*No:E_PRECURSOR_PROCEDURE.start_position*/


T0* r161add_comment(T161* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r32count(((T32*)((((T64*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
/*AF*/else{
{T209*n=malloc(sizeof(*n));
*n=M209;
r209make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


T0* r161to_runnable(T161* C,T0* a1){
T0* R=NULL;
T0* _pn=NULL;
T0* _super=NULL;
T0* _wrf=NULL;
/*[IF*/
if(((C)->_current_type/*12*/)==((void*)(NULL))){
C->_current_type=a1;
R=(T0*)C;
_wrf=r42top_rf((T42*)(oBC11small_eiffel));
/*[IF*/
if((X312result_type(_wrf))!=((void*)(NULL))){
r37add_position((C)->_start_position/*4*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms161_359888);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
_super=r161super_feature(C,_wrf);
if(NULL!=(_super))switch(((T0*)_super)->id) {
case 287: 
break;
default:
_super=NULL;
};_pn=r161precursor_name(/*X312name*/((T0*)(((T325*)_wrf))->_name/*16*/),_super);
{T347*n=malloc(sizeof(*n));
*n=M347;
r347make(n,a1,_pn,_super);
C->_run_feature=(T0*)n;
}
r161prepare_arguments(C,a1);
}
else{
{T161*n=malloc(sizeof(*n));
*n=M161;
r161make(n,(C)->_start_position/*4*/,(C)->_parent/*8*/,(C)->_arguments/*16*/);
R=(T0*)n;
}
R=r161to_runnable(((T161*)R),a1);
}
/*FI]*/
return R;
}
/*No:E_PRECURSOR_PROCEDURE.current_type*/


T0* r161super_feature(T161* C,T0* a1){
T0* R=NULL;
T0* _pl=NULL;
T0* _wbc=NULL;
T0* _e_feature=NULL;
_e_feature=X312base_feature(a1);
_wbc=/*X75base_class*/((T0*)(((T183*)_e_feature))->_base_class/*4*/);
_pl=(((T41*)_wbc))->_parent_list/*40*/;
/*[IF*/
if((_pl)==((void*)(NULL))){
r37add_position((C)->_start_position/*4*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms160_269232);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
else{
R=r59precursor_for(((T59*)_pl),(T0*)C,a1);
}
/*FI]*/
return R;
}


T0* r161precursor_name(T0* a1,T0* a2){
T0* R=NULL;
{T346*n=malloc(sizeof(*n));
*n=M346;
r346refer_to(n,((T41*)(/*X75base_class*/((T0*)(((T183*)a2))->_base_class/*4*/)))->_id/*0*/,a1);
R=(T0*)n;
}
return R;
}


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


void r161make(T161* C,T0* a1,T0* a2,T0* a3){
C->_start_position=a1;
C->_parent=a2;
C->_arguments=a3;
}
/*No:E_PRECURSOR_PROCEDURE.put_semi_colon*/


void r161pretty_print(T161* C){
/*[IF*/
if(((C)->_parent/*8*/)!=((void*)(NULL))){
r310put_string((T310*)(oBC11fmt),((T0*)ms160_852));
/*[IRF3.6pretty_print*/{T49* C1=(T49*)((C)->_parent/*8*/);
r310put_string((T310*)(oBC11fmt),(C1)->_to_string/*0*/);
}/*]*/
r310put_string((T310*)(oBC11fmt),((T0*)ms160_1296));
}
/*FI]*/
r310put_string((T310*)(oBC11fmt),((T0*)ms13_13968));
/*[IF*/
if(((C)->_arguments/*16*/)!=((void*)(NULL))){
r310level_incr((T310*)(oBC11fmt));
r132pretty_print((T132*)((C)->_arguments/*16*/));
r310level_decr((T310*)(oBC11fmt));
}
/*FI]*/
/*[IRF3.2put_semi_colon*//*[IF*/
if(((T310*)(oBC11fmt))->_semi_colon_flag/*25*/){
r310put_character((T310*)(oBC11fmt),'\73');
}
/*FI]*/
/*]*/
}


void r161prepare_arguments(T161* C,T0* a1){
T0* _a=NULL;
/*[IF*/
if(((C)->_arguments/*16*/)!=((void*)(NULL))){
_a=r132to_runnable((T132*)((C)->_arguments/*16*/),a1);
/*[IF*/
if((_a)==((void*)(NULL))){
r161error(r132start_position((T132*)((C)->_arguments/*16*/)),((T0*)ms12_14714));
}
else{
C->_arguments=_a;
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T37*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
r132match_with((T132*)((C)->_arguments/*16*/),(C)->_run_feature/*20*/,a1);
}
/*FI]*/
}
 else if((((T347*)((C)->_run_feature/*20*/))->_arguments/*36*/)!=((void*)(NULL))){
r37add_position(r347start_position((T347*)((C)->_run_feature/*20*/)));
r37add_position((C)->_start_position/*4*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms160_63936);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
}
/*No:E_PRECURSOR_PROCEDURE.parent*/
/*No:E_PRECURSOR_PROCEDURE.fz_bad_arguments*/
/*No:E_PRECURSOR_PROCEDURE.fatal_error*/
/*No:ID_PROVIDER.us_double*/
/*No:ID_PROVIDER.us_character*/
/*No:ID_PROVIDER.us_native_array_character*/


T2 r84max_id(T84* C){
T2 R=0;
T2 _i=0;
_i=((T45*)((C)->_mem_id/*0*/))->_upper/*8*/;
while (!((_i)<(0))) {
/*[IF*/
if((/*(IRF4.6item*/(((T45*)((C)->_mem_id/*0*/))->_storage/*0*/)[_i]/*)*/)>(R)){
R=/*(IRF4.6item*/(((T45*)((C)->_mem_id/*0*/))->_storage/*0*/)[_i]/*)*/;
}
/*FI]*/
_i=(_i)-(1);
}
return R;
}


T2 r84item(T84* C,T0* a1){
T2 R=0;
T2 _index=0;
_index=r23fast_index_of((T23*)((C)->_mem_str/*4*/),a1);
/*[IF*/
if((_index)<=(((T23*)((C)->_mem_str/*4*/))->_upper/*8*/)){
R=/*(IRF4.6item*/(((T45*)((C)->_mem_id/*0*/))->_storage/*0*/)[_index]/*)*/;
}
 else if(r54boost((T54*)(oBC11run_control))){
R=(r84max_id(C))+(1);
r84add2(C,a1,R);
}
else{
R=r84hash_code(a1);
/*[IF*/
if(r45fast_has((T45*)((C)->_mem_id/*0*/),R)){
R=10;
while (!(!(r45fast_has((T45*)((C)->_mem_id/*0*/),R)))) {
R=(R)+(1);
}
}
/*FI]*/
r84add2(C,a1,R);
}
/*FI]*/
return R;
}
/*No:ID_PROVIDER.us_general*/
/*No:ID_PROVIDER.us_pointer*/
/*No:ID_PROVIDER.us_string*/


void r84make(T84* C){
{T45*n=malloc(sizeof(*n));
*n=M45;
r45with_capacity(n,1024);
C->_mem_id=(T0*)n;
}
{T23*n=malloc(sizeof(*n));
*n=M23;
r23with_capacity(n,1024);
C->_mem_str=(T0*)n;
}
r84add2(C,((T0*)ms13_1990),0);
r84add2(C,((T0*)ms13_6412),1);
r84add2(C,((T0*)ms13_6748),2);
r84add2(C,((T0*)ms13_9936),3);
r84add2(C,((T0*)ms13_1208),4);
r84add2(C,((T0*)ms13_4818),5);
r84add2(C,((T0*)ms13_6510),6);
r84add2(C,((T0*)ms13_5046),7);
r84add2(C,((T0*)ms13_6881),8);
r84add2(C,((T0*)ms13_58420),9);
}
/*No:ID_PROVIDER.us_real*/
/*No:ID_PROVIDER.us_array*/
/*No:ID_PROVIDER.us_integer*/
/*No:ID_PROVIDER.mem_str*/
/*No:ID_PROVIDER.mem_id*/


void r84add2(T84* C,T0* a1,T2 a2){
r23add_last((T23*)((C)->_mem_str/*4*/),a1);
r45add_last((T45*)((C)->_mem_id/*0*/),a2);
}


T2 r84hash_code(T0* a1){
T2 R=0;
T2 _max=0;
T2 _val=0;
T3 _c=0;
T2 _i=0;
_i=1;
while (!((_i)>((((T7*)a1))->_count/*4*/))) {
_c=r3to_upper(/*(IRF4.6item*/((((T7*)a1))->_storage/*0*/)[(_i)-(1)]/*)*/);
{int z1=_c;

if(((65<=z1)&&(z1<=90))){
_val=(((unsigned char)_c))-(((unsigned char)'A'));
}
 else 
if(((48<=z1)&&(z1<=57))){
_val=((25)+(((unsigned char)_c)))-(((unsigned char)'0'));
}
 else{_val=0;
}}
R=(R)+((_i)*(_val));
_i=(_i)+(1);
}
/*[IF*/
if((R)<(0)){
R=-(R);
}
/*FI]*/
/*[IF*/
if(r54boost((T54*)(oBC11run_control))){
_max=2048;
}
else{
_max=8192;
}
/*FI]*/
while (!((R)<=(_max))) {
R=(R)-(999);
}
return R;
}
/*No:ID_PROVIDER.us_boolean*/
/*No:E_WHEN.nb_errors*/


void r217add_when_item_1(T217* C,T0* a1){
T2 _v=0;
_v=(((T224*)a1))->_expression_value/*12*/;
/*[IF*/
if(/*(IRF4.6includes*/r218includes_integer(((T218*)(((T216*)(/*(IRF4.6e_inspect*/(((T218*)((C)->_when_list/*16*/)))->_e_inspect/*0*//*)*/))->_when_list/*12*/)),_v)/*)*/){
r217err_occ(C,_v,r224start_position(((T224*)a1)));
}
 else if(((C)->_values/*20*/)==((void*)(NULL))){
{T348*n=malloc(sizeof(*n));
*n=M348;
r348make(n,_v,_v);
C->_values=(T0*)n;
}
/*[IRF3.6put*/{T348* C1=(T348*)((C)->_values/*20*/);
T6 b1=1;
T2 b2=_v;
((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
}/*]*/
}
else{
r348force((T348*)((C)->_values/*20*/),1,_v);
}
/*FI]*/
}
/*No:E_WHEN.compound*/


T0* r217to_runnable_integer(T217* C,T0* a1){
T0* R=NULL;
T0* _when_item=NULL;
T2 _i=0;
T2 _ne=0;
T0* _ct=NULL;
/*[IF*/
if(((C)->_when_list/*16*/)==((void*)(NULL))){
_ne=/*(IRF4.9nb_errors*/((T37*)(oBC11eh))->_nb_errors/*4*//*)*/;
C->_when_list=a1;
/*[IF*/
if(((C)->_list/*4*/)==((void*)(NULL))){
r37add_position(((T216*)(/*(IRF4.6e_inspect*/(((T218*)((C)->_when_list/*16*/)))->_e_inspect/*0*//*)*/))->_start_position/*4*/);
r217error((C)->_start_position/*0*/,((T0*)ms217_54404));
}
else{
_i=((T222*)((C)->_list/*4*/))->_lower/*12*/;
while (!(((_i)>(((T222*)((C)->_list/*4*/))->_upper/*8*/))||(((/*(IRF4.9nb_errors*/((T37*)(oBC11eh))->_nb_errors/*4*//*)*/)-(_ne))>(0)))) {
_when_item=X221to_runnable_integer(r222item((T222*)((C)->_list/*4*/),_i),(T0*)C);
/*[IF*/
if((_when_item)==((void*)(NULL))){
r217error((C)->_start_position/*0*/,((T0*)ms217_18640));
}
else{
/*[IRF3.6put*/{T222* C1=(T222*)((C)->_list/*4*/);
T0* b1=_when_item;
T2 b2=_i;
((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
}/*]*/
}
/*FI]*/
_i=(_i)+(1);
}
}
/*FI]*/
/*[IF*/
if(((C)->_compound/*12*/)!=((void*)(NULL))){
_ct=/*X312current_type*/((T0*)((T325*)(r42top_rf((T42*)(oBC11small_eiffel))))->_current_type/*4*/);
C->_compound=r200to_runnable((T200*)((C)->_compound/*12*/),_ct);
/*[IF*/
if(((C)->_compound/*12*/)==((void*)(NULL))){
r217error((C)->_start_position/*0*/,((T0*)ms217_18640));
}
/*FI]*/
}
/*FI]*/
R=(T0*)C;
}
else{
{T217*n=malloc(sizeof(*n));
*n=M217;
r217from_e_when(n,(T0*)C);
R=(T0*)n;
}
R=r217to_runnable_integer(((T217*)R),a1);
}
/*FI]*/
return R;
}
/*No:E_WHEN.start_position*/


void r217add_slice(T217* C,T0* a1,T0* a2){
T0* _element=NULL;
{T225*n=malloc(sizeof(*n));
*n=M225;
r225make(n,a1,a2);
_element=(T0*)n;
}
/*[IF*/
if(((C)->_list/*4*/)==((void*)(NULL))){
C->_list=se_ma222(1,
_element);
}
else{
r222add_last((T222*)((C)->_list/*4*/),_element);
}
/*FI]*/
}


void r217from_e_when(T217* C,T0* a1){
T0* _when_item=NULL;
T2 _i=0;
C->_start_position=(((T217*)a1))->_start_position/*0*/;
C->_list=r222twin((T222*)((((T217*)a1))->_list/*4*/));
_i=((T222*)((C)->_list/*4*/))->_lower/*12*/;
while (!((_i)>(((T222*)((C)->_list/*4*/))->_upper/*8*/))) {
_when_item=X221twin(r222item((T222*)((C)->_list/*4*/),_i));
/*X221clear_e_when*//*[IRF3.3clear_e_when*/((((T224*)(((T224*)_when_item))))->_e_when)=(NULL);
/*]*/
/*[IRF3.6put*/{T222* C1=(T222*)((C)->_list/*4*/);
T0* b1=_when_item;
T2 b2=_i;
((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
}/*]*/
_i=(_i)+(1);
}
C->_header_comment=(((T217*)a1))->_header_comment/*8*/;
C->_compound=(((T217*)a1))->_compound/*12*/;
}
/*No:E_WHEN.em1*/
/*No:E_WHEN.em2*/


T6 r217includes_integer(T217* C,T2 a1){
T6 R=0;
R=((((C)->_values/*20*/)!=((void*)(NULL)))&&(r348valid_index((T348*)((C)->_values/*20*/),a1)))&&(r348item((T348*)((C)->_values/*20*/),a1));
return R;
}


void r217add_when_item_2(T217* C,T0* a1){
T2 _i=0;
T2 _u=0;
T2 _l=0;
_l=(((T225*)a1))->_lower_value/*20*/;
_u=(((T225*)a1))->_upper_value/*16*/;
/*[IF*/
if((_l)>=(_u)){
r217error(r225start_position(((T225*)a1)),((T0*)ms217_20927));
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T37*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
_i=_l;
while (!((_i)>(_u))) {
/*[IF*/
if(/*(IRF4.6includes*/r218includes_integer(((T218*)(((T216*)(/*(IRF4.6e_inspect*/(((T218*)((C)->_when_list/*16*/)))->_e_inspect/*0*//*)*/))->_when_list/*12*/)),_i)/*)*/){
r217err_occ(C,_i,r225start_position(((T225*)a1)));
_i=(_u)+(1);
}
else{
_i=(_i)+(1);
}
/*FI]*/
}
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T37*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(((C)->_values/*20*/)==((void*)(NULL))){
{T348*n=malloc(sizeof(*n));
*n=M348;
r348make(n,_l,_u);
C->_values=(T0*)n;
}
/*[IRF3.6set_all_with*/{T348* C1=(T348*)((C)->_values/*20*/);
T6 b1=1;
r349set_all_with((C1)->_storage/*0*/,b1,((C1)->_upper/*8*/)-((C1)->_lower/*12*/));
}/*]*/
}
else{
r348force((T348*)((C)->_values/*20*/),1,_l);
r348force((T348*)((C)->_values/*20*/),1,_u);
r348set_slice_with((T348*)((C)->_values/*20*/),1,_l,_u);
}
/*FI]*/
}
/*FI]*/
}
/*No:E_WHEN.header_comment*/


void r217add_value(T217* C,T0* a1){
T0* _element=NULL;
{T224*n=malloc(sizeof(*n));
*n=M224;
/*[IRF3.3make*/((((T224*)(n)))->_expression)=(a1);
/*]*/
_element=(T0*)n;
}
/*[IF*/
if(((C)->_list/*4*/)==((void*)(NULL))){
C->_list=se_ma222(1,
_element);
}
else{
r222add_last((T222*)((C)->_list/*4*/),_element);
}
/*FI]*/
}
/*No:E_WHEN.fz_then*/
/*No:E_WHEN.e_inspect*/
/*No:E_WHEN.set_compound*/


void r217err_occ(T217* C,T2 a1,T0* a2){
r37add_position(((T216*)(/*(IRF4.6e_inspect*/(((T218*)((C)->_when_list/*16*/)))->_e_inspect/*0*//*)*/))->_start_position/*4*/);
/*[IRF3.6append*/{T0* b1=((T0*)ms217_63886);
r7append((T7*)(oBC37explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=r2to_string(a1);
r7append((T7*)(oBC37explanation),b1);
}/*]*/
r217error(a2,((T0*)ms217_29634));
}


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


void r217make(T217* C,T0* a1,T0* a2){
C->_start_position=a1;
C->_header_comment=a2;
}


void r217pretty_print(T217* C){
T2 _i=0;
r310keyword((T310*)(oBC11fmt),((T0*)ms12_1776));
r310level_incr((T310*)(oBC11fmt));
/*[IF*/
if(((C)->_header_comment/*8*/)!=((void*)(NULL))){
r64pretty_print((T64*)((C)->_header_comment/*8*/));
}
/*FI]*/
/*[IF*/
if(((C)->_list/*4*/)!=((void*)(NULL))){
_i=((T222*)((C)->_list/*4*/))->_lower/*12*/;
while (!((_i)>(((T222*)((C)->_list/*4*/))->_upper/*8*/))) {
X221pretty_print(r222item((T222*)((C)->_list/*4*/),_i));
_i=(_i)+(1);
/*[IF*/
if((_i)<=(((T222*)((C)->_list/*4*/))->_upper/*8*/)){
r310put_character((T310*)(oBC11fmt),'\54');
}
/*FI]*/
}
}
/*FI]*/
r310level_decr((T310*)(oBC11fmt));
r310keyword((T310*)(oBC11fmt),((T0*)ms12_1764));
r310level_incr((T310*)(oBC11fmt));
/*[IF*/
if(((C)->_compound/*12*/)!=((void*)(NULL))){
r200pretty_print((T200*)((C)->_compound/*12*/));
}
/*FI]*/
r310level_decr((T310*)(oBC11fmt));
}
/*No:E_WHEN.fz_when*/
/*No:E_WHEN.values*/
/*No:E_WHEN.when_list*/
/*No:E_WHEN.list*/


T0* r217to_runnable_character(T217* C,T0* a1){
T0* R=NULL;
T0* _when_item=NULL;
T2 _i=0;
T2 _ne=0;
T0* _ct=NULL;
/*[IF*/
if(((C)->_when_list/*16*/)==((void*)(NULL))){
_ne=/*(IRF4.9nb_errors*/((T37*)(oBC11eh))->_nb_errors/*4*//*)*/;
C->_when_list=a1;
/*[IF*/
if(((C)->_list/*4*/)==((void*)(NULL))){
r37add_position(((T216*)(/*(IRF4.6e_inspect*/(((T218*)((C)->_when_list/*16*/)))->_e_inspect/*0*//*)*/))->_start_position/*4*/);
r217error((C)->_start_position/*0*/,((T0*)ms217_54404));
}
else{
_i=((T222*)((C)->_list/*4*/))->_lower/*12*/;
while (!(((_i)>(((T222*)((C)->_list/*4*/))->_upper/*8*/))||(((/*(IRF4.9nb_errors*/((T37*)(oBC11eh))->_nb_errors/*4*//*)*/)-(_ne))>(0)))) {
_when_item=X221to_runnable_character(r222item((T222*)((C)->_list/*4*/),_i),(T0*)C);
/*[IF*/
if((_when_item)==((void*)(NULL))){
r217error((C)->_start_position/*0*/,((T0*)ms217_18640));
}
else{
/*[IRF3.6put*/{T222* C1=(T222*)((C)->_list/*4*/);
T0* b1=_when_item;
T2 b2=_i;
((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
}/*]*/
}
/*FI]*/
_i=(_i)+(1);
}
}
/*FI]*/
/*[IF*/
if(((C)->_compound/*12*/)!=((void*)(NULL))){
_ct=/*X312current_type*/((T0*)((T325*)(r42top_rf((T42*)(oBC11small_eiffel))))->_current_type/*4*/);
C->_compound=r200to_runnable((T200*)((C)->_compound/*12*/),_ct);
/*[IF*/
if(((C)->_compound/*12*/)==((void*)(NULL))){
r217error((C)->_start_position/*0*/,((T0*)ms217_18640));
}
/*FI]*/
}
/*FI]*/
R=(T0*)C;
}
else{
{T217*n=malloc(sizeof(*n));
*n=M217;
r217from_e_when(n,(T0*)C);
R=(T0*)n;
}
R=r217to_runnable_character(((T217*)R),a1);
}
/*FI]*/
return R;
}
/*No:CST_ATT_BOOLEAN.base_class*/
/*No:CST_ATT_BOOLEAN.value_mem*/


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


T6 r189is_merge_with(T189* C,T0* a1,T0* a2){
T6 R=0;
R=1;
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(X75result_type(a1)))){
/*[IF*/
if((((C)->_result_type/*20*/)==((void*)(NULL)))||((X75result_type(a1))==((void*)(NULL)))){
R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(X75arguments(a1)))){
/*[IF*/
{/*AT*/R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(NULL))){
R=X62is_a_in((C)->_result_type/*20*/,X75result_type(a1),a2);
}
/*FI]*/
/*[IF*/
if((R)&&((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(NULL)))){
R=r171is_a_in((T171*)(/*(IRF4.1arguments*/NULL/*)*/),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/*20*/)!=((void*)(NULL))){
R=X62is_a_in(X75result_type(a1),(C)->_result_type/*20*/,a2);
}
/*FI]*/
/*[IF*/
if((R)&&((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(NULL)))){
R=r171is_a_in((T171*)(X75arguments(a1)),/*(IRF4.1arguments*/NULL/*)*/,a2);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
r189merge_header_comments(C,a1);
}
/*FI]*/
return R;
}
/*No:CST_ATT_BOOLEAN.first_name*/
/*No:CST_ATT_BOOLEAN.em1*/
/*No:CST_ATT_BOOLEAN.header_comment*/


void r189pretty_print_profile(T189* C){
r189pretty_print_names(C);
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
/*[IRF3.1pretty_print_arguments*//*]*/
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(3);
/*]*/
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(NULL))){
r310put_string((T310*)(oBC11fmt),((T0*)ms75_186));
X62pretty_print((C)->_result_type/*20*/);
}
/*FI]*/
}
/*No:CST_ATT_BOOLEAN.names*/
/*No:CST_ATT_BOOLEAN.result_type*/
/*No:CST_ATT_BOOLEAN.code_require*/
/*No:CST_ATT_BOOLEAN.make_e_feature*/


void r189add_into(T189* 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);
}
}


T6 r189can_hide(T189* C,T0* a1,T0* a2){
T6 R=0;
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(X75result_type(a1)))){
/*[IF*/
if((((C)->_result_type/*20*/)==((void*)(NULL)))||((X75result_type(a1))==((void*)(NULL)))){
r37add_position(X75start_position(a1));
r189error(r189start_position(C),((T0*)ms75_64647));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(X75arguments(a1)))){
/*[IF*/
{/*AT*/r37add_position(X75start_position(a1));
r189error(r189start_position(C),((T0*)ms75_83182));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T37*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(NULL))){
/*[IF*/
if(!(X62is_a_in((C)->_result_type/*20*/,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*/
/*AF*//*AE*/
/*FI]*/
}
/*FI]*/
R=(/*(IRF4.9nb_errors*/((T37*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0);
/*[IF*/
if(R){
r189merge_header_comments(C,a1);
}
/*FI]*/
return R;
}
/*No:CST_ATT_BOOLEAN.ensure_assertion*/


T0* r189try_to_undefine(T189* 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=r189try_to_undefine_aux(C,a1,a2);
/*[IF*/
if((R)!=((void*)(NULL))){
/*X269set_clients*//*[IRF3.3set_clients*/((((T272*)(((T272*)R))))->_clients)=((C)->_clients/*16*/);
/*]*/
r189merge_header_comments(C,R);
}
else{
r41fatal_undefine(((T41*)a2),a1);
}
/*FI]*/
return R;
}
/*No:CST_ATT_BOOLEAN.is_deferred*/
/*No:CST_ATT_BOOLEAN.set_clients*/
/*No:CST_ATT_BOOLEAN.value*/
/*No:CST_ATT_BOOLEAN.nb_errors*/


T0* r189to_run_feature(T189* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _rc=NULL;
_rc=X62run_class(a1);
R=r313at(((T313*)_rc),a2);
if(NULL!=(R))switch(((T0*)R)->id) {
case 325: 
break;
default:
R=NULL;
};/*[IF*/
if((R)==((void*)(NULL))){
{T325*n=malloc(sizeof(*n));
*n=M325;
r325make(n,a1,a2,(T0*)C);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


void r189merge_header_comments(T189* 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:CST_ATT_BOOLEAN.arguments*/
/*No:CST_ATT_BOOLEAN.require_assertion*/
/*No:CST_ATT_BOOLEAN.pretty_print_arguments*/


T0* r189try_to_undefine_aux(T189* C,T0* a1,T0* a2){
T0* R=NULL;
r37add_position(r189start_position(C));
r189error(X65start_position(a1),((T0*)ms185_99414));
r41fatal_undefine(((T41*)a2),a1);
return R;
}
/*No:CST_ATT_BOOLEAN.fz_dot*/


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


void r189make(T189* C,T0* a1,T0* a2,T0* a3){
/*[IRF3.3make_e_feature*/((((T189*)(C)))->_names)=(a1);
/*]*/
C->_result_type=a2;
C->_value_mem=a3;
}


void r189pretty_print_names(T189* 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);
}
}


void r189pretty_print(T189* C){
r189pretty_print_profile(C);
r189pretty_tail(C);
r310put_character((T310*)(oBC11fmt),'\73');
/*[IF*/
if(((C)->_header_comment/*12*/)!=((void*)(NULL))){
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r310indent((T310*)(oBC11fmt));
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(1);
/*]*/
r64pretty_print((T64*)((C)->_header_comment/*12*/));
}
else{
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(1);
/*]*/
}
/*FI]*/
}


void r189collect_for(T2 a1){
T0* _er=NULL;
/*[IF*/
if((a1)==(1)){
_er=/*(IRF4.1require_assertion*/NULL/*)*/;
/*[IF*/
if((_er)!=((void*)(NULL))){
/*[IF*/
if(!(r332fast_has((T332*)(oBC75require_collector),_er))){
r332add_last((T332*)(oBC75require_collector),_er);
}
/*FI]*/
}
/*FI]*/
}
else{
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*FI]*/
}
/*No:CST_ATT_BOOLEAN.set_header_comment*/


void r189pretty_tail(T189* C){
r310put_string((T310*)(oBC11fmt),((T0*)ms184_1176));
X149pretty_print(/*(IRF4.3value*/(C)->_value_mem/*24*//*)*/);
}
/*No:CST_ATT_BOOLEAN.clients*/
/*No:RUN_FEATURE_5.use_current_state*/
/*No:RUN_FEATURE_5.rescue_compound*/
/*No:RUN_FEATURE_5.actuals_clients*/
/*No:RUN_FEATURE_5.arguments*/


void r338initialize(T338* C){
C->_arguments=((T290*)((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=((T290*)((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=((T290*)((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=r290run_require((T0*)C);
}
/*FI]*/
/*[IF*/
if(r54ensure_check((T54*)(oBC11run_control))){
C->_ensure_assertion=r290run_ensure((T0*)C);
}
/*FI]*/
C->_rescue_compound=((T290*)((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]*/
r339add_procedure((T0*)C);
}


T0* r338start_position(T338* C){
T0* R=NULL;
R=r290start_position((T290*)((C)->_base_feature/*32*/));
return R;
}
T0*oBC11once_routine_pool=NULL;
/*No:RUN_FEATURE_5.require_assertion*/
/*No:RUN_FEATURE_5.clients_memory*/
/*No:RUN_FEATURE_5.ucs_not_computed*/
/*No:RUN_FEATURE_5.current_type*/


void r338add_client(T338* 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*)(r338run_class(C)),a1);
}


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


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


T2 r338arg_count(T338* 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* r338clients(T338* 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=((T290*)((C)->_base_feature/*32*/))->_base_class/*4*/;
/*[IF*/
if((_bc)==((void*)(_bfbc))){
R=((T290*)((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 r338is_exported_in(T338* C,T0* a1){
T6 R=0;
R=r83gives_permission_to((T83*)(r338clients(C)),a1);
return R;
}
/*No:COMMENT.start_position*/
/*No:COMMENT.add_last*/


void r64good_end(T64* C,T0* a1){
/*[IF*/
if(!(r7has_string((T7*)(r32item((T32*)((C)->_list/*4*/),1)),(((T49*)a1))->_to_string/*0*/))){
r37add_position((((T49*)a1))->_start_position/*4*/);
r64warning((C)->_start_position/*0*/,((T0*)ms64_44577));
}
/*FI]*/
}


void r64warning(T0* a1,T0* a2){
r37add_position(a1);
r37warning((T37*)(oBC11eh),a2);
}
/*No:COMMENT.count*/


void r64make(T64* C,T0* a1,T0* a2){
C->_start_position=a1;
C->_list=a2;
}


void r64append(T64* C,T0* a1){
T2 _i=0;
_i=1;
while (!((_i)>(((T32*)((((T64*)a1))->_list/*4*/))->_upper/*8*/))) {
/*[IRF3.5add_last*/r32add_last(((T32*)((C)->_list/*4*/)),r32item((T32*)((((T64*)a1))->_list/*4*/),_i));
/*]*/
_i=(_i)+(1);
}
}


T6 r64dummy(T64* C){
T6 R=0;
/*[IF*/
if((r32count((T32*)((C)->_list/*4*/)))==(1)){
R=(((T7*)(r32first((T32*)((C)->_list/*4*/))))->_count/*4*/)<(40);
}
/*FI]*/
return R;
}


void r64pretty_print(T64* C){
T2 _column=0;
T2 _i=0;
/*[IF*/
if(r6_px_and((((T310*)(oBC11fmt))->_column/*8*/)>(1),(((T310*)(oBC11fmt))->_last_character/*20*/)!=('\40'))){
r310put_character((T310*)(oBC11fmt),'\40');
}
/*FI]*/
_column=((T310*)(oBC11fmt))->_column/*8*/;
_i=((T32*)((C)->_list/*4*/))->_lower/*12*/;
while (!((_i)>(((T32*)((C)->_list/*4*/))->_upper/*8*/))) {
r310put_string((T310*)(oBC11fmt),((T0*)ms64_186));
r310put_string((T310*)(oBC11fmt),r32item((T32*)((C)->_list/*4*/),_i));
_i=(_i)+(1);
/*[IF*/
if((_i)<=(((T32*)((C)->_list/*4*/))->_upper/*8*/)){
r310put_character((T310*)(oBC11fmt),'\n');
while (!((((T310*)(oBC11fmt))->_column/*8*/)==(_column))) {
r310put_character((T310*)(oBC11fmt),'\40');
}
}
/*FI]*/
}
r310put_character((T310*)(oBC11fmt),'\n');
r310indent((T310*)(oBC11fmt));
}
/*No:COMMENT.list*/
/*No:PRECURSOR_NAME.us_precursor*/
/*No:PRECURSOR_NAME.declaration_pretty_print*/


T6 r346is_frozen(T346* C){
T6 R=0;
R=X65is_frozen((C)->_enclosing/*4*/);
return R;
}


void r346undefine_in(T346* C,T0* a1){
/*[IF*/
if(r346is_frozen(C)){
r346error(r346start_position(C),((T0*)ms65_117530));
r41fatal_undefine(((T41*)a1),(T0*)C);
}
/*FI]*/
}


T0* r346origin_base_class(T346* C){
T0* R=NULL;
T0* _sp=NULL;
_sp=r346start_position(C);
/*[IF*/
if((_sp)!=((void*)(NULL))){
R=r39base_class(((T39*)_sp));
}
/*FI]*/
return R;
}


T0* r346start_position(T346* C){
T0* R=NULL;
R=X65start_position((C)->_enclosing/*4*/);
return R;
}


T0* r346to_string(T346* C){
T0* R=NULL;
R=X65to_string((C)->_enclosing/*4*/);
return R;
}
/*No:PRECURSOR_NAME.declaration_in*/
/*No:PRECURSOR_NAME.to_key*/


void r346refer_to(T346* C,T2 a1,T0* a2){
C->_enclosing=a2;
C->_to_key=r66for_precursor(a1,X65to_key(a2));
}


void r346error(T0* a1,T0* a2){
r37add_position(a1);
r37error((T37*)(oBC11eh),a2);
}
/*No:PRECURSOR_NAME.pretty_print*/
/*No:PRECURSOR_NAME.enclosing*/


void r298append_in(T298* C,T0* a1){
X163add_last(a1,(C)->_name/*4*/);
}
/*No:DECLARATION_1.count*/


void r298make(T298* C,T0* a1,T0* a2){
C->_name=a1;
/*X168set_result_type*//*[IRF3.3set_result_type*/((((T167*)((T167*)((C)->_name/*4*/))))->_result_type)=(a2);
/*]*/
}


void r298pretty_print(T298* C){
X168pretty_print((C)->_name/*4*/);
r310put_string((T310*)(oBC11fmt),((T0*)ms298_186));
X62pretty_print(/*X168result_type*/((T0*)((T167*)((C)->_name/*4*/))->_result_type/*12*/));
}
/*No:DECLARATION_1.name*/

