/*
-- 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:CST_ATT_STRING.base_class*/


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


T6 r191is_merge_with(T191* 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){
r191merge_header_comments(C,a1);
}
/*FI]*/
return R;
}
/*No:CST_ATT_STRING.first_name*/
/*No:CST_ATT_STRING.first_value*/
/*No:CST_ATT_STRING.em1*/
/*No:CST_ATT_STRING.header_comment*/


void r191pretty_print_profile(T191* C){
r191pretty_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_STRING.names*/
/*No:CST_ATT_STRING.result_type*/
/*No:CST_ATT_STRING.code_require*/
/*No:CST_ATT_STRING.make_e_feature*/


void r191add_into(T191* 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 r191can_hide(T191* 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));
r191error(r191start_position(C),((T0*)ms75_64647));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(X75arguments(a1)))){
/*[IF*/
{/*AT*/r37add_position(X75start_position(a1));
r191error(r191start_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){
r191merge_header_comments(C,a1);
}
/*FI]*/
return R;
}
/*No:CST_ATT_STRING.ensure_assertion*/


T0* r191try_to_undefine(T191* 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=r191try_to_undefine_aux(C,a1,a2);
/*[IF*/
if((R)!=((void*)(NULL))){
/*X269set_clients*//*[IRF3.3set_clients*/((((T272*)(((T272*)R))))->_clients)=((C)->_clients/*16*/);
/*]*/
r191merge_header_comments(C,R);
}
else{
r41fatal_undefine(((T41*)a2),a1);
}
/*FI]*/
return R;
}
/*No:CST_ATT_STRING.is_deferred*/
/*No:CST_ATT_STRING.remainder*/
/*No:CST_ATT_STRING.set_clients*/


T0* r191value(T191* C,T2 a1){
T0* R=NULL;
/*[IF*/
if((a1)==(1)){
R=(C)->_first_value/*24*/;
}
else{
R=/*(IRF4.6item*/(((T192*)((C)->_remainder/*28*/))->_storage/*4*/)[(a1)-(2)]/*)*/;
}
/*FI]*/
return R;
}
/*No:CST_ATT_STRING.nb_errors*/


T0* r191to_run_feature(T191* 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 r191merge_header_comments(T191* 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_STRING.arguments*/
/*No:CST_ATT_STRING.require_assertion*/
/*No:CST_ATT_STRING.pretty_print_arguments*/


T0* r191try_to_undefine_aux(T191* C,T0* a1,T0* a2){
T0* R=NULL;
r37add_position(r191start_position(C));
r191error(X65start_position(a1),((T0*)ms185_99414));
r41fatal_undefine(((T41*)a2),a1);
return R;
}
/*No:CST_ATT_STRING.fz_dot*/


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


void r191make(T191* C,T0* a1,T0* a2,T0* a3){
T2 _i=0;
/*[IRF3.3make_e_feature*/((((T191*)(C)))->_names)=(a1);
/*]*/
C->_result_type=a2;
C->_first_value=a3;
_i=r67count((T67*)((C)->_names/*8*/));
/*[IF*/
if((_i)>(1)){
_i=(_i)-(1);
{T192*n=malloc(sizeof(*n));
*n=M192;
r192make(n,_i);
C->_remainder=(T0*)n;
}
while (!((_i)==(0))) {
_i=(_i)-(1);
/*[IRF3.5put*/(((T192*)((C)->_remainder/*28*/))->_storage/*4*/)[_i]=(r154twin(((T154*)a3)));
/*]*/
}
}
/*FI]*/
}


void r191pretty_print_names(T191* 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 r191pretty_print(T191* C){
r191pretty_print_profile(C);
r191pretty_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 r191collect_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_STRING.set_header_comment*/


void r191pretty_tail(T191* C){
r310put_string((T310*)(oBC11fmt),((T0*)ms184_1176));
r154pretty_print((T154*)(r191value(C,1)));
}
/*No:CST_ATT_STRING.clients*/
/*No:MANIFEST_ARRAY.nb_errors*/
/*No:MANIFEST_ARRAY.start_position*/


T0* r93add_comment(T93* 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 r93to_integer(T93* C){
T2 R=0;
r93error((C)->_start_position/*4*/,((T0*)ms12_45846));
return R;
}


void r93print_as_target(T93* C){
r310put_character((T310*)(oBC11fmt),'\50');
r93pretty_print(C);
r310put_character((T310*)(oBC11fmt),'\51');
r310put_character((T310*)(oBC11fmt),'\56');
}


void r93bracketed_pretty_print(T93* C){
r310put_character((T310*)(oBC11fmt),'\50');
r93pretty_print(C);
r310put_character((T310*)(oBC11fmt),'\51');
}


T0* r93type_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:MANIFEST_ARRAY.fz_c_shift_right*/
/*No:MANIFEST_ARRAY.fz_c_shift_left*/


T0* r93to_runnable(T93* C,T0* a1){
T0* R=NULL;
T0* _t=NULL;
T0* _e=NULL;
T2 _i=0;
/*[IF*/
if(((C)->_current_type/*16*/)==((void*)(NULL))){
C->_current_type=a1;
/*[IF*/
if(((C)->_list/*8*/)==((void*)(NULL))){
_t=r93type_any();
}
else{
_i=/*X94upper*/((T2)((T94*)((C)->_list/*8*/))->_upper/*12*/);
while (!((_i)==(0))) {
_e=X89to_runnable(/*X94item*/((T0*)r94item((T94*)((C)->_list/*8*/),_i)),a1);
/*[IF*/
if((_e)==((void*)(NULL))){
r37add_position((C)->_start_position/*4*/);
r93error(X89start_position(/*X94item*/((T0*)r94item((T94*)((C)->_list/*8*/),_i))),((T0*)ms93_63657));
_i=0;
}
else{
/*X94put*//*[IRF3.6put*/{T94* C1=(T94*)((C)->_list/*8*/);
T0* b1=_e;
T2 b2=_i;
((C1)->_storage/*4*/)[(b2)-((C1)->_lower/*16*/)]=(b1);
}/*]*/
/*[IF*/
if((_t)==((void*)(NULL))){
_t=X89result_type(_e);
}
else{
_t=X62smallest_ancestor(_t,X89result_type(_e));
}
/*FI]*/
_i=(_i)-(1);
}
/*FI]*/
}
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T37*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
_t=X62run_type(_t);
{T244*n=malloc(sizeof(*n));
*n=M244;
r244make(n,(C)->_start_position/*4*/,_t);
C->_result_type=(T0*)n;
}
r313set_at_run_time((T313*)(r244run_class((T244*)((C)->_result_type/*12*/))));
r244load_basic_features((T244*)((C)->_result_type/*12*/));
R=(T0*)C;
/*[IF*/
if((X62is_reference(_t))&&(((C)->_list/*8*/)!=((void*)(NULL)))){
_i=/*X94upper*/((T2)((T94*)((C)->_list/*8*/))->_upper/*12*/);
while (!((_i)==(0))) {
_t=X89result_type(/*X94item*/((T0*)r94item((T94*)((C)->_list/*8*/),_i)));
/*[IF*/
if(X62is_expanded(_t)){
X62used_as_reference(_t);
}
/*FI]*/
_i=(_i)-(1);
}
}
/*FI]*/
r350register((C)->_result_type/*12*/);
}
/*FI]*/
}
 else if(((C)->_list/*8*/)==((void*)(NULL))){
R=(T0*)C;
}
else{
{T93*n=malloc(sizeof(*n));
*n=M93;
r93make(n,(C)->_start_position/*4*/,X94twin((C)->_list/*8*/));
R=(T0*)n;
}
R=r93to_runnable(((T93*)R),a1);
}
/*FI]*/
return R;
}
/*No:MANIFEST_ARRAY.current_type*/
/*No:MANIFEST_ARRAY.fz_iinaiv*/
/*No:MANIFEST_ARRAY.result_type*/


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


void r93make(T93* C,T0* a1,T0* a2){
C->_start_position=a1;
C->_list=a2;
}
/*No:MANIFEST_ARRAY.is_current*/


void r93pretty_print(T93* C){
T2 _i=0;
r310put_string((T310*)(oBC11fmt),((T0*)ms12_246));
r310level_incr((T310*)(oBC11fmt));
/*[IF*/
if(((C)->_list/*8*/)!=((void*)(NULL))){
_i=1;
while (!((_i)>(/*X94upper*/((T2)((T94*)((C)->_list/*8*/))->_upper/*12*/)))) {
X89pretty_print(/*X94item*/((T0*)r94item((T94*)((C)->_list/*8*/),_i)));
_i=(_i)+(1);
/*[IF*/
if((_i)<=(/*X94upper*/((T2)((T94*)((C)->_list/*8*/))->_upper/*12*/))){
r310put_character((T310*)(oBC11fmt),'\54');
}
/*FI]*/
}
}
/*FI]*/
r310put_string((T310*)(oBC11fmt),((T0*)ms12_254));
r310level_decr((T310*)(oBC11fmt));
}
/*No:MANIFEST_ARRAY.is_void*/
/*No:MANIFEST_ARRAY.list*/


T0* r272run_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=r272runnable((((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;
}
/*No:DEFERRED_FUNCTION.base_class*/


void r272set_rescue_compound(T272* C,T0* a1){
/*[IF*/
if((a1)!=((void*)(NULL))){
r37add_position(r200start_position(((T200*)a1)));
}
else{
r37add_position(r272start_position(C));
}
/*FI]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms269_125161);
r7append((T7*)(oBC37explanation),b1);
}/*]*/
r37print_as_fatal_error((T37*)(oBC11eh));
}


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


T6 r272is_merge_with(T272* C,T0* a1,T0* a2){
T6 R=0;
R=1;
/*[IF*/
if(((C)->_result_type/*40*/)!=((void*)(X75result_type(a1)))){
/*[IF*/
if((((C)->_result_type/*40*/)==((void*)(NULL)))||((X75result_type(a1))==((void*)(NULL)))){
R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_arguments/*20*/)!=((void*)(X75arguments(a1)))){
/*[IF*/
if((((C)->_arguments/*20*/)==((void*)(NULL)))||((X75arguments(a1))==((void*)(NULL)))){
R=0;
}
 else if((/*(IRF4.6count*/(((T175*)(((T171*)((C)->_arguments/*20*/))->_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/*40*/)!=((void*)(NULL))){
R=X62is_a_in((C)->_result_type/*40*/,X75result_type(a1),a2);
}
/*FI]*/
/*[IF*/
if((R)&&(((C)->_arguments/*20*/)!=((void*)(NULL)))){
R=r171is_a_in((T171*)((C)->_arguments/*20*/),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/*40*/)!=((void*)(NULL))){
R=X62is_a_in(X75result_type(a1),(C)->_result_type/*40*/,a2);
}
/*FI]*/
/*[IF*/
if((R)&&(((C)->_arguments/*20*/)!=((void*)(NULL)))){
R=r171is_a_in((T171*)(X75arguments(a1)),(C)->_arguments/*20*/,a2);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
r272merge_header_comments(C,a1);
}
/*FI]*/
return R;
}


T0* r272runnable(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))){
r272error(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:DEFERRED_FUNCTION.first_name*/
/*No:DEFERRED_FUNCTION.em1*/
/*No:DEFERRED_FUNCTION.header_comment*/


void r272pretty_print_profile(T272* C){
r272pretty_print_names(C);
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r272pretty_print_arguments(C);
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(3);
/*]*/
/*[IF*/
if(((C)->_result_type/*40*/)!=((void*)(NULL))){
r310put_string((T310*)(oBC11fmt),((T0*)ms75_186));
X62pretty_print((C)->_result_type/*40*/);
}
/*FI]*/
}
/*No:DEFERRED_FUNCTION.names*/
/*No:DEFERRED_FUNCTION.fz_03*/
/*No:DEFERRED_FUNCTION.result_type*/
/*No:DEFERRED_FUNCTION.code_require*/
/*No:DEFERRED_FUNCTION.make_e_feature*/


void r272add_into(T272* 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 r272can_hide(T272* C,T0* a1,T0* a2){
T6 R=0;
/*[IF*/
if(((C)->_result_type/*40*/)!=((void*)(X75result_type(a1)))){
/*[IF*/
if((((C)->_result_type/*40*/)==((void*)(NULL)))||((X75result_type(a1))==((void*)(NULL)))){
r37add_position(X75start_position(a1));
r272error(r272start_position(C),((T0*)ms75_64647));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_arguments/*20*/)!=((void*)(X75arguments(a1)))){
/*[IF*/
if((((C)->_arguments/*20*/)==((void*)(NULL)))||((X75arguments(a1))==((void*)(NULL)))){
r37add_position(X75start_position(a1));
r272error(r272start_position(C),((T0*)ms75_83182));
}
 else if((/*(IRF4.6count*/(((T175*)(((T171*)((C)->_arguments/*20*/))->_flat_list/*8*/)))->_upper/*12*//*)*/)!=(/*(IRF4.6count*/(((T175*)(((T171*)(X75arguments(a1)))->_flat_list/*8*/)))->_upper/*12*//*)*/)){
r37add_position(X75start_position(a1));
r272error(r272start_position(C),((T0*)ms75_67155));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T37*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(((C)->_result_type/*40*/)!=((void*)(NULL))){
/*[IF*/
if(!(X62is_a_in((C)->_result_type/*40*/,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/*20*/)!=((void*)(NULL))){
/*[IF*/
if(!(r171is_a_in((T171*)((C)->_arguments/*20*/),X75arguments(a1),a2))){
r37add_position(X75start_position(a1));
r37add_position(r272start_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){
r272merge_header_comments(C,a1);
}
/*FI]*/
return R;
}
/*No:DEFERRED_FUNCTION.ensure_assertion*/


T0* r272run_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=r272runnable(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 r272check_obsolete(T272* C){
/*[IF*/
if(!(((T42*)(oBC11small_eiffel))->_short_flag/*0*/)){
/*[IF*/
if(((C)->_obsolete_mark/*24*/)!=((void*)(NULL))){
/*[IRF3.6append*/{T0* b1=((T0*)ms198_39396);
r7append((T7*)(oBC37explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T154*)((C)->_obsolete_mark/*24*/))->_to_string/*8*/;
r7append((T7*)(oBC37explanation),b1);
}/*]*/
r272warning(r272start_position(C),((T0*)ms12_166));
}
/*FI]*/
}
/*FI]*/
}
/*No:DEFERRED_FUNCTION.fz_is*/


T0* r272try_to_undefine(T272* 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=/*(IRF4.4try_to_undefine_aux*/((T0*)(C))/*)*/;
/*[IF*/
if((R)!=((void*)(NULL))){
/*X269set_clients*//*[IRF3.3set_clients*/((((T272*)(((T272*)R))))->_clients)=((C)->_clients/*16*/);
/*]*/
r272merge_header_comments(C,R);
}
else{
r41fatal_undefine(((T41*)a2),a1);
}
/*FI]*/
return R;
}
/*No:DEFERRED_FUNCTION.is_deferred*/
/*No:DEFERRED_FUNCTION.set_clients*/
/*No:DEFERRED_FUNCTION.code_ensure*/
/*No:DEFERRED_FUNCTION.nb_errors*/


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


T0* r272to_run_feature(T272* C,T0* a1,T0* a2){
T0* R=NULL;
r272check_obsolete(C);
{T329*n=malloc(sizeof(*n));
*n=M329;
r329make(n,a1,a2,(T0*)C);
R=(T0*)n;
}
return R;
}


void r272merge_header_comments(T272* 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:DEFERRED_FUNCTION.arguments*/
/*No:DEFERRED_FUNCTION.require_assertion*/
/*No:DEFERRED_FUNCTION.pretty_print_routine_body*/


void r272pretty_print_arguments(T272* C){
/*[IF*/
if(((C)->_arguments/*20*/)!=((void*)(NULL))){
r171pretty_print((T171*)((C)->_arguments/*20*/));
}
/*FI]*/
}
/*No:DEFERRED_FUNCTION.pretty_print_rescue*/


void r272warning(T0* a1,T0* a2){
r37add_position(a1);
r37warning((T37*)(oBC11eh),a2);
}
/*No:DEFERRED_FUNCTION.try_to_undefine_aux*/
/*No:DEFERRED_FUNCTION.set_ensure_assertion*/
/*No:DEFERRED_FUNCTION.fz_bad_assertion*/
/*No:DEFERRED_FUNCTION.fz_obsolete*/
/*No:DEFERRED_FUNCTION.fz_end*/
/*No:DEFERRED_FUNCTION.fz_dot*/


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


void r272make(T272* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5,T0* a6){
r272make_routine(C,a1,a2,a4,a5,a6);
C->_result_type=a3;
}


void r272pretty_print_names(T272* 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 r272pretty_print(T272* C){
T0* _fn=NULL;
r310indent((T310*)(oBC11fmt));
r272pretty_print_profile(C);
r310keyword((T310*)(oBC11fmt),((T0*)ms12_446));
/*[IF*/
if(((C)->_obsolete_mark/*24*/)!=((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/*24*/));
}
/*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/*28*/)!=((void*)(NULL))){
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r271pretty_print((T271*)((C)->_require_assertion/*28*/));
}
/*FI]*/
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r310indent((T310*)(oBC11fmt));
/*[IRF3.2pretty_print_routine_body*/r310put_string((T310*)(oBC11fmt),((T0*)ms269_5290));
/*]*/
/*[IF*/
if(((C)->_ensure_assertion/*32*/)!=((void*)(NULL))){
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r199pretty_print((T199*)((C)->_ensure_assertion/*32*/));
}
/*FI]*/
/*[IRF3.1pretty_print_rescue*//*]*/
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r310indent((T310*)(oBC11fmt));
r310keyword((T310*)(oBC11fmt),((T0*)ms12_951));
/*[IF*/
if((((C)->_end_comment/*36*/)!=((void*)(NULL)))&&(!(r64dummy((T64*)((C)->_end_comment/*36*/))))){
r64pretty_print((T64*)((C)->_end_comment/*36*/));
}
 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 r272collect_for(T272* C,T2 a1){
T0* _er=NULL;
/*[IF*/
if((a1)==(1)){
_er=(C)->_require_assertion/*28*/;
/*[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/*32*/)!=((void*)(NULL))){
/*[IRF3.3set_item*/((((T331*)((T331*)(oBC75header_comment_memory))))->_item)=(((T199*)((C)->_ensure_assertion/*32*/))->_header_comment/*4*/);
/*]*/
r199add_into((T199*)((C)->_ensure_assertion/*32*/),oBC75assertion_collector);
}
/*FI]*/
}
/*FI]*/
}
/*No:DEFERRED_FUNCTION.end_comment*/


void r272from_effective(T272* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5,T0* a6){
{T67*n=malloc(sizeof(*n));
*n=M67;
/*[IRF3.3make_1*/((((T67*)(n)))->_first)=(a1);
/*]*/
C->_names=(T0*)n;
}
r272make(C,(C)->_names/*8*/,a2,a3,NULL,NULL,a4);
/*[IRF3.3set_ensure_assertion*/((((T272*)(C)))->_ensure_assertion)=(a5);
/*]*/
C->_base_class=a6;
}


void r272set_header_comment(T272* C,T0* a1){
/*[IF*/
if(((a1)!=((void*)(NULL)))&&((/*(IRF4.6count*/r32count(((T32*)((((T64*)a1))->_list/*4*/)))/*)*/)>(1))){
C->_end_comment=a1;
}
/*FI]*/
}
/*No:DEFERRED_FUNCTION.clients*/
/*No:DEFERRED_FUNCTION.obsolete_mark*/


T0* r277language_name(void){
T0* R=NULL;
R=((T0*)ms12_18788);
return R;
}
/*No:NATIVE_SMALL_EIFFEL.fz_se*/
/*No:NATIVE_SMALL_EIFFEL.pretty_print*/


T6 r56has(T56* C,T0* a1){
T6 R=0;
/*[IF*/
if(((C)->_procedure_list/*12*/)!=((void*)(NULL))){
R=r67has((T67*)((C)->_procedure_list/*12*/),a1);
}
/*FI]*/
return R;
}
/*No:CREATION_CLAUSE.fz_cbe*/
/*No:CREATION_CLAUSE.fatal_error_vtec_2*/
/*No:CREATION_CLAUSE.start_position*/
/*No:CREATION_CLAUSE.procedure_list*/


T0* r56expanded_initializer(T56* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((C)->_procedure_list/*12*/)!=((void*)(NULL))){
R=r313get_feature((T313*)(X62run_class(a1)),r67item((T67*)((C)->_procedure_list/*12*/),1));
if(NULL!=(R))switch(((T0*)R)->id) {
case 314: 
break;
default:
R=NULL;
};}
/*FI]*/
return R;
}


void r56make(T56* C,T0* a1,T0* a2,T0* a3,T0* a4){
C->_start_position=a1;
C->_clients=a2;
C->_comment=a3;
C->_procedure_list=a4;
}


void r56pretty_print(T56* C){
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(0);
/*]*/
/*[IF*/
if(!(r310zen_mode((T310*)(oBC11fmt)))){
r310skip((T310*)(oBC11fmt),1);
}
else{
r310indent((T310*)(oBC11fmt));
}
/*FI]*/
r310keyword((T310*)(oBC11fmt),((T0*)ms56_11376));
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(1);
/*]*/
/*[IF*/
if(((C)->_clients/*4*/)!=((void*)(NULL))){
r83pretty_print((T83*)((C)->_clients/*4*/));
}
/*FI]*/
/*[IF*/
if(((C)->_comment/*8*/)!=((void*)(NULL))){
r64pretty_print((T64*)((C)->_comment/*8*/));
}
/*FI]*/
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(1);
/*]*/
/*[IF*/
if(!(r310zen_mode((T310*)(oBC11fmt)))){
r310indent((T310*)(oBC11fmt));
}
/*FI]*/
/*[IF*/
if(((C)->_procedure_list/*12*/)!=((void*)(NULL))){
r67pretty_print((T67*)((C)->_procedure_list/*12*/));
}
/*FI]*/
}
/*No:CREATION_CLAUSE.comment*/
/*No:CREATION_CLAUSE.clients*/
/*No:CREATION_CLAUSE.fatal_error*/


void r56check_expanded_with(T56* C,T0* a1){
T0* _rc=NULL;
T0* _rf3=NULL;
T0* _rf=NULL;
/*[IF*/
if(((C)->_procedure_list/*12*/)==((void*)(NULL))){
r37add_position((C)->_start_position/*0*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms56_140500);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
/*[IF*/
if((r67count((T67*)((C)->_procedure_list/*12*/)))>(1)){
r37add_type(a1,((T0*)ms12_23835));
r37add_position((C)->_start_position/*0*/);
/*[IRF3.2fatal_error_vtec_2*//*[IRF3.6fatal_error*/{T0* b1=((T0*)ms11_572294);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
/*]*/
}
/*FI]*/
_rc=X62run_class(a1);
_rf=r313get_feature(((T313*)_rc),r67item((T67*)((C)->_procedure_list/*12*/),1));
/*[IF*/
if((_rf)==((void*)(NULL))){
r37add_position((C)->_start_position/*0*/);
/*[IRF3.6append*/{T0* b1=((T0*)ms56_28658);
r7append((T7*)(oBC37explanation),b1);
}/*]*/
r37add_type(a1,((T0*)ms56_10142));
r37print_as_fatal_error((T37*)(oBC11eh));
}
/*FI]*/
_rf3=_rf;
if(NULL!=(_rf3))switch(((T0*)_rf3)->id) {
case 314: 
break;
default:
_rf3=NULL;
};/*[IF*/
if((_rf3)==((void*)(NULL))){
r37add_position((C)->_start_position/*0*/);
r37add_position(X312start_position(_rf));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms56_67122);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
/*[IF*/
if((r314arg_count(((T314*)_rf3)))>(0)){
r37add_type(a1,((T0*)ms12_23835));
r37add_position((C)->_start_position/*0*/);
r37add_position(r314start_position(((T314*)_rf3)));
/*[IRF3.6append*/{T0* b1=((T0*)ms56_46872);
r7append((T7*)(oBC37explanation),b1);
}/*]*/
/*[IRF3.2fatal_error_vtec_2*//*[IRF3.6fatal_error*/{T0* b1=((T0*)ms11_572294);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
/*]*/
}
/*FI]*/
}


T0* r224to_runnable_integer(T224* C,T0* a1){
T0* R=NULL;
T0* _e=NULL;
T0* _ct=NULL;
/*[IF*/
if(((C)->_e_when/*4*/)==((void*)(NULL))){
C->_e_when=a1;
_ct=/*X312current_type*/((T0*)((T325*)(r42top_rf((T42*)(oBC11small_eiffel))))->_current_type/*4*/);
_e=X89to_runnable((C)->_expression/*8*/,_ct);
/*[IF*/
if(((_e)!=((void*)(NULL)))&&(X62is_integer(X89result_type(_e)))){
C->_expression=_e;
C->_expression_value=X89to_integer((C)->_expression/*8*/);
r217add_when_item_1((T217*)((C)->_e_when/*4*/),(T0*)C);
}
else{
r224error(X89start_position((C)->_expression/*8*/),((T0*)ms12_21798));
}
/*FI]*/
R=(T0*)C;
}
else{
{T224*n=malloc(sizeof(*n));
*n=M224;
/*[IRF3.3make*/((((T224*)(n)))->_expression)=((C)->_expression/*8*/);
/*]*/
R=(T0*)n;
}
R=r224to_runnable_integer(((T224*)R),a1);
}
/*FI]*/
return R;
}


T0* r224start_position(T224* C){
T0* R=NULL;
R=X89start_position((C)->_expression/*8*/);
return R;
}


T0* r224twin(T224* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T224*)R)=*C;
return R;
}
/*No:WHEN_ITEM_1.expression_value*/
/*No:WHEN_ITEM_1.expression*/
/*No:WHEN_ITEM_1.fz_bcv*/


void r224error(T0* a1,T0* a2){
r37add_position(a1);
r37error((T37*)(oBC11eh),a2);
}
/*No:WHEN_ITEM_1.make*/
/*No:WHEN_ITEM_1.e_when*/
/*No:WHEN_ITEM_1.clear_e_when*/


void r224pretty_print(T224* C){
X89pretty_print((C)->_expression/*8*/);
}
/*No:WHEN_ITEM_1.fz_biv*/


T0* r224to_runnable_character(T224* C,T0* a1){
T0* R=NULL;
T0* _e=NULL;
T0* _ct=NULL;
/*[IF*/
if(((C)->_e_when/*4*/)==((void*)(NULL))){
C->_e_when=a1;
_ct=/*X312current_type*/((T0*)((T325*)(r42top_rf((T42*)(oBC11small_eiffel))))->_current_type/*4*/);
_e=X89to_runnable((C)->_expression/*8*/,_ct);
/*[IF*/
if(((_e)!=((void*)(NULL)))&&(X62is_character(X89result_type(_e)))){
C->_expression=_e;
C->_expression_value=X89to_integer((C)->_expression/*8*/);
r217add_when_item_1((T217*)((C)->_e_when/*4*/),(T0*)C);
}
else{
r224error(X89start_position((C)->_expression/*8*/),((T0*)ms12_25940));
}
/*FI]*/
R=(T0*)C;
}
else{
{T224*n=malloc(sizeof(*n));
*n=M224;
/*[IRF3.3make*/((((T224*)(n)))->_expression)=((C)->_expression/*8*/);
/*]*/
R=(T0*)n;
}
R=r224to_runnable_character(((T224*)R),a1);
}
/*FI]*/
return R;
}
/*No:EXCEPTIONS_HANDLER.set_used*/
/*No:EXCEPTIONS_HANDLER.used*/
/*No:EXCEPTIONS_HANDLER.make*/
/*No:CALL_1_C.feature_name*/


void r135run_feature_match(T135* C,T0* a1){
r135run_feature_has_result(C);
r132match_with((T132*)((C)->_arguments/*12*/),(C)->_run_feature/*16*/,a1);
}
/*No:CALL_1_C.arguments*/


T0* r135runnable_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;
}


T0* r135start_position(T135* C){
T0* R=NULL;
R=X65start_position((C)->_feature_name/*8*/);
return R;
}


T0* r135add_comment(T135* 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 r135to_integer(T135* C){
T2 R=0;
r135error(r135start_position(C),((T0*)ms12_45846));
return R;
}


void r135print_as_target(T135* C){
r135pretty_print(C);
r310put_character((T310*)(oBC11fmt),'\56');
}
/*No:CALL_1_C.dot_precedence*/


void r135bracketed_pretty_print(T135* C){
X89print_as_target((C)->_target/*4*/);
r310put_string((T310*)(oBC11fmt),X65to_string((C)->_feature_name/*8*/));
r310put_character((T310*)(oBC11fmt),'\50');
X89pretty_print(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*12*/)))->_first_one/*0*//*)*//*)*/);
r310put_character((T310*)(oBC11fmt),'\51');
}


T0* r135to_runnable(T135* C,T0* a1){
T0* R=NULL;
T0* _rf=NULL;
T0* _a=NULL;
T0* _t=NULL;
_t=r135runnable_expression((C)->_target/*4*/,a1);
_a=r135runnable_args((C)->_arguments/*12*/,a1);
_rf=r135run_feature_for(C,_t,a1);
/*[IF*/
if(((C)->_run_feature/*16*/)==((void*)(NULL))){
C->_target=_t;
C->_arguments=_a;
C->_run_feature=_rf;
r135run_feature_match(C,a1);
R=(T0*)C;
}
 else if(((_t)==((void*)((C)->_target/*4*/)))&&((_a)==((void*)((C)->_arguments/*12*/)))){
R=(T0*)C;
}
else{
{T135*n=malloc(sizeof(*n));
*n=M135;
r135with(n,_t,(C)->_feature_name/*8*/,_a,_rf,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}
/*No:CALL_1_C.fz_bad_argument*/
/*No:CALL_1_C.arg1*/


void r135run_feature_has_result(T135* C){
/*[IF*/
if((X312result_type((C)->_run_feature/*16*/))==((void*)(NULL))){
r37add_position(X312start_position((C)->_run_feature/*16*/));
r37add_position(X65start_position((C)->_feature_name/*8*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms100_53650);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
}
/*No:CALL_1_C.fz_iinaiv*/


T0* r135run_feature_for(T135* 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/*8*/,a2);
return R;
}


T0* r135result_type(T135* 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/*12*/)))->_first_one/*0*//*)*//*)*/));
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:CALL_1_C.target*/


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


void r135make(T135* C,T0* a1,T0* a2,T0* a3){
C->_target=a1;
C->_feature_name=a2;
C->_arguments=a3;
}


T0* r135runnable_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;
}
/*No:CALL_1_C.is_current*/


void r135pretty_print(T135* C){
X89print_as_target((C)->_target/*4*/);
r310put_string((T310*)(oBC11fmt),X65to_string((C)->_feature_name/*8*/));
r310put_character((T310*)(oBC11fmt),'\50');
X89pretty_print(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*12*/)))->_first_one/*0*//*)*//*)*/);
r310put_character((T310*)(oBC11fmt),'\51');
}
/*No:CALL_1_C.is_void*/


void r135with(T135* 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;
r135run_feature_match(C,a5);
}
/*No:CALL_1_C.fatal_error*/
/*No:CALL_0_C.feature_name*/


void r133run_feature_match(T133* C){
r133run_feature_has_result(C);
/*[IF*/
if((X312arg_count((C)->_run_feature/*12*/))>(0)){
r37add_position(X65start_position((C)->_feature_name/*8*/));
r37add_position(X312start_position((C)->_run_feature/*12*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms124_50512);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
}


T0* r133runnable_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;
}


T0* r133start_position(T133* C){
T0* R=NULL;
R=X65start_position((C)->_feature_name/*8*/);
return R;
}


T0* r133add_comment(T133* 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 r133to_integer(T133* C){
T2 R=0;
T0* _rf1=NULL;
_rf1=(C)->_run_feature/*12*/;
if(NULL!=(_rf1))switch(((T0*)_rf1)->id) {
case 325: 
break;
default:
_rf1=NULL;
};/*[IF*/
if((_rf1)==((void*)(NULL))){
r133error(r133start_position(C),((T0*)ms12_45846));
}
else{
R=X89to_integer((((T325*)_rf1))->_value/*28*/);
}
/*FI]*/
return R;
}


void r133print_as_target(T133* C){
r133pretty_print(C);
r310put_character((T310*)(oBC11fmt),'\56');
}
/*No:CALL_0_C.dot_precedence*/


void r133bracketed_pretty_print(T133* C){
X89print_as_target((C)->_target/*4*/);
r310put_string((T310*)(oBC11fmt),X65to_string((C)->_feature_name/*8*/));
}


T0* r133to_runnable(T133* C,T0* a1){
T0* R=NULL;
T0* _path=NULL;
T2 _line=0;
T0* _rf=NULL;
T0* _t=NULL;
_line=/*(IRF4.6line*/(((T39*)(X89start_position((C)->_target/*4*/)))->_mem_line_column/*4*/)/(1000)/*)*/;
_path=r39path((T39*)(X89start_position((C)->_target/*4*/)));
_t=r133runnable_expression((C)->_target/*4*/,a1);
_rf=r133run_feature_for(C,_t,a1);
/*[IF*/
if(((C)->_run_feature/*12*/)==((void*)(NULL))){
C->_target=_t;
C->_run_feature=_rf;
r133run_feature_match(C);
R=(T0*)C;
}
 else if((_t)==((void*)((C)->_target/*4*/))){
R=(T0*)C;
}
else{
{T133*n=malloc(sizeof(*n));
*n=M133;
r133with(n,_t,(C)->_feature_name/*8*/,_rf);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


void r133run_feature_has_result(T133* C){
/*[IF*/
if((X312result_type((C)->_run_feature/*12*/))==((void*)(NULL))){
r37add_position(X312start_position((C)->_run_feature/*12*/));
r37add_position(X65start_position((C)->_feature_name/*8*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms100_53650);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
}
/*No:CALL_0_C.fz_iinaiv*/


T0* r133run_feature_for(T133* 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/*8*/,a2);
return R;
}


T0* r133result_type(T133* C){
T0* R=NULL;
R=X312result_type((C)->_run_feature/*12*/);
/*[IF*/
if(X62is_like_current(R)){
R=/*X312current_type*/((T0*)((T325*)((C)->_run_feature/*12*/))->_current_type/*4*/);
}
/*FI]*/
return R;
}
/*No:CALL_0_C.target*/


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


void r133make(T133* C,T0* a1,T0* a2){
C->_target=a1;
C->_feature_name=a2;
}
/*No:CALL_0_C.is_current*/


void r133pretty_print(T133* C){
X89print_as_target((C)->_target/*4*/);
r310put_string((T310*)(oBC11fmt),X65to_string((C)->_feature_name/*8*/));
}
/*No:CALL_0_C.is_void*/


void r133with(T133* C,T0* a1,T0* a2,T0* a3){
C->_target=a1;
C->_feature_name=a2;
C->_run_feature=a3;
r133run_feature_match(C);
}
/*No:CALL_0_C.fatal_error*/
/*No:CREATION_CLAUSE_LIST.fz_cbe*/
/*No:CREATION_CLAUSE_LIST.fatal_error_vtec_2*/


T0* r55start_position(T55* C){
T0* R=NULL;
R=((T56*)(r57first((T57*)((C)->_list/*0*/))))->_start_position/*0*/;
return R;
}
/*No:CREATION_CLAUSE_LIST.add_last*/


T0* r55get_clause(T55* C,T0* a1){
T0* R=NULL;
T2 _i=0;
_i=1;
while (!(((_i)>(((T57*)((C)->_list/*0*/))->_upper/*8*/))||(r56has((T56*)(r57item((T57*)((C)->_list/*0*/),_i)),a1)))) {
_i=(_i)+(1);
}
/*[IF*/
if((_i)<=(((T57*)((C)->_list/*0*/))->_upper/*8*/)){
R=r57item((T57*)((C)->_list/*0*/),_i);
}
/*FI]*/
return R;
}


T0* r55expanded_initializer(T55* C,T0* a1){
T0* R=NULL;
R=r56expanded_initializer((T56*)(r57item((T57*)((C)->_list/*0*/),1)),a1);
return R;
}
/*No:CREATION_CLAUSE_LIST.make*/


void r55pretty_print(T55* C){
T2 _i=0;
_i=1;
while (!((_i)>(((T57*)((C)->_list/*0*/))->_upper/*8*/))) {
r56pretty_print((T56*)(r57item((T57*)((C)->_list/*0*/),_i)));
/*[IF*/
if(!(r310zen_mode((T310*)(oBC11fmt)))){
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(0);
/*]*/
r310skip((T310*)(oBC11fmt),1);
}
/*FI]*/
_i=(_i)+(1);
}
}
/*No:CREATION_CLAUSE_LIST.list*/
/*No:CREATION_CLAUSE_LIST.fatal_error*/


void r55check_expanded_with(T55* C,T0* a1){
/*[IF*/
if((((T57*)((C)->_list/*0*/))->_upper/*8*/)>(1)){
r37add_type(a1,((T0*)ms12_23835));
r37add_position(((T56*)(r57item((T57*)((C)->_list/*0*/),1)))->_start_position/*0*/);
r37add_position(((T56*)(r57item((T57*)((C)->_list/*0*/),2)))->_start_position/*0*/);
/*[IRF3.2fatal_error_vtec_2*//*[IRF3.6fatal_error*/{T0* b1=((T0*)ms11_572294);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
/*]*/
}
/*FI]*/
r56check_expanded_with((T56*)(r57item((T57*)((C)->_list/*0*/),1)),a1);
}

