/*
-- 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 "compile_to_c.h"
/*No:PARSER_BUFFER.is_ready*/


T0* r72get_line(T2 a1){
T0* R=NULL;
/*[IF*/
if((a1)<=(((T62*)(oBC72text))->_upper/*8*/)){
R=/*(IRF4.6item*/(((T62*)(oBC72text))->_storage/*0*/)[a1]/*)*/;
/*[IRF3.3clear*/((((T7*)(((T7*)R))))->_count)=(0);
/*]*/
}
else{
{T7*n=malloc(sizeof(*n));
*n=M7;
r7make(n,80);
R=(T0*)n;
}
r62add_last((T62*)(oBC72text),R);
}
/*FI]*/
return R;
}
T0*oBC72text=NULL;
/*No:PARSER_BUFFER.path*/


T0* r72item(T2 a1){
T0* R=NULL;
R=/*(IRF4.6item*/(((T62*)(oBC72text))->_storage/*0*/)[a1]/*)*/;
return R;
}
/*No:PARSER_BUFFER.medium_line_size*/


void r72load_file(T72* C,T0* a1){
T2 _i=0;
r37connect_to((T37*)(oBC12tmp_file_read),a1);
/*[IF*/
if(/*(IRF4.7is_connected*/(((T37*)(oBC12tmp_file_read))->_path/*4*/)!=(NULL)/*)*/){
C->_path=a1;
/*[IF*/
if((r72get_line(0))!=((void*)(NULL))){
}
/*FI]*/
_i=1;
r37read_line_in((T37*)(oBC12tmp_file_read),r72get_line(_i));
while (!(r37end_of_input((T37*)(oBC12tmp_file_read)))) {
_i=(_i)+(1);
r37read_line_in((T37*)(oBC12tmp_file_read),r72get_line(_i));
}
/*[IF*/
if(/*(IRF4.7empty*/(((T7*)(/*(IRF4.6item*/(((T62*)(oBC72text))->_storage/*0*/)[_i]/*)*/))->_count/*4*/)==(0)/*)*/){
C->_count=(_i)-(1);
}
else{
C->_count=_i;
}
/*FI]*/
r37disconnect((T37*)(oBC12tmp_file_read));
}
else{
C->_path=NULL;
}
/*FI]*/
}
/*No:PARSER_BUFFER.count*/
/*No:PARSER_BUFFER.make*/
/*No:PARSER_BUFFER.unset_is_ready*/
/*No:CALL_INFIX_OR.static_value*/
/*No:CALL_INFIX_OR.call_proc_call_c2c*/
/*No:CALL_INFIX_OR.feature_name*/


void r120finalize(T120* C){
T0* _rf=NULL;
T0* _rc=NULL;
_rf=(C)->_run_feature/*16*/;
_rc=X54run_class(/*X51current_type*/((T0*)(((T324*)_rf))->_current_type/*4*/));
C->_run_feature=r24dynamic((T24*)(r328first((T328*)((((T24*)_rc))->_running/*12*/))),_rf);
}


T6 r120is_static(T120* C){
T6 R=0;
/*[IF*/
if(X54is_boolean(X56result_type((C)->_target/*4*/))){
/*[IF*/
if((X56is_static((C)->_target/*4*/))&&(X56is_static(r120arg1(C)))){
R=1;
C->_static_value_mem=(X56static_value((C)->_target/*4*/))+(X56static_value(r120arg1(C)));
/*[IF*/
if(((C)->_static_value_mem/*20*/)==(2)){
C->_static_value_mem=1;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_OR.is_manifest_string*/


T0* r120start_position(T120* C){
T0* R=NULL;
R=((T138*)((C)->_feature_name/*12*/))->_start_position/*8*/;
return R;
}
/*No:CALL_INFIX_OR.c_simple*/


T0* r120add_comment(T120* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r39count(((T39*)((((T82*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
else{
{T230*n=malloc(sizeof(*n));
*n=M230;
r230make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


T2 r120to_integer(T120* C){
T2 R=0;
r120error(r120start_position(C),((T0*)ms13_45846));
return R;
}


T6 r120use_current(T120* C){
T6 R=0;
/*[IF*/
{/*AT*/R=X149use_current((C)->_arguments/*8*/);
}
/*FI]*/
/*[IF*/
if(R){
}
 else if(X56is_current((C)->_target/*4*/)){
R=X51use_current((C)->_run_feature/*16*/);
}
else{
R=X56use_current((C)->_target/*4*/);
}
/*FI]*/
return R;
}


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=X56result_type(_t);
_at=X56result_type(r120arg1(C));
/*[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;
}


void r120compile_to_c_old(T120* C){
X56compile_to_c_old((C)->_target/*4*/);
/*[IF*/
{/*AT*/X149compile_to_c_old((C)->_arguments/*8*/);
}
/*FI]*/
}
/*No:CALL_INFIX_OR.is_pre_computable*/
/*No:CALL_INFIX_OR.fz_bad_argument*/


void r120collect_c_tmp(T120* C){
/*[IF*/
if(((C)->_run_feature/*16*/)!=((void*)(NULL))){
X51collect_c_tmp((C)->_run_feature/*16*/);
}
/*FI]*/
X56collect_c_tmp((C)->_target/*4*/);
/*[IF*/
if(((C)->_arguments/*8*/)!=((void*)(NULL))){
X149collect_c_tmp((C)->_arguments/*8*/);
}
/*FI]*/
}
/*No:CALL_INFIX_OR.fz_iinaiv*/


T0* r120result_type(T120* C){
T0* R=NULL;
T0* _tla=NULL;
R=X51result_type((C)->_run_feature/*16*/);
/*[IF*/
if(X54is_like_current(R)){
R=/*X51current_type*/((T0*)((T324*)((C)->_run_feature/*16*/))->_current_type/*4*/);
}
else{
_tla=R;
if(NULL!=(_tla))switch(((T0*)_tla)->id) {
case 258: 
break;
default:
_tla=NULL;
};/*[IF*/
if((_tla)!=((void*)(NULL))){
R=X54run_type(X56result_type(r120arg1(C)));
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_OR.static_value_mem*/
/*No:CALL_INFIX_OR.run_feature*/


T0* r120runnable_args(T0* a1,T0* a2){
T0* R=NULL;
R=X149to_runnable(a1,a2);
/*[IF*/
if((R)==((void*)(NULL))){
r21add_position(X149start_position(a1));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms13_13065);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_OR.fz_07*/
/*No:CALL_INFIX_OR.arg_count*/


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_OR.is_result*/
/*No:CALL_INFIX_OR.fatal_error*/


void r120mapping_c_target(T120* C,T0* a1){
T0* _actual_type=NULL;
T6 _flag=0;
_flag=r25call_invariant_start(a1);
_actual_type=X54run_type(r120result_type(C));
/*[IF*/
if(X54is_reference(_actual_type)){
/*[IF*/
if(X54is_reference(a1)){
X54mapping_cast(a1);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T120* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
X54to_expanded(_actual_type);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T120* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}
else{
/*[IF*/
if(X54is_reference(a1)){
X54to_reference(_actual_type);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T120* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
/*[IF*/
if(X54need_c_struct(a1)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\46';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T120* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T120* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(_flag){
/*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T45* C1=(T45*)(oBC25out_c);
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}


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


T0* r120runnable_expression(T0* a1,T0* a2){
T0* R=NULL;
R=X56to_runnable(a1,a2);
/*[IF*/
if((R)==((void*)(NULL))){
r21add_position(X56start_position(a1));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms118_16515);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_OR.can_be_dropped*/


void r120c_declare_for_old(T120* C){
X56c_declare_for_old((C)->_target/*4*/);
/*[IF*/
{/*AT*/X149c_declare_for_old((C)->_arguments/*8*/);
}
/*FI]*/
}
/*No:CALL_INFIX_OR.implicit_cast*/
/*No:CALL_INFIX_OR.dca_inline_argument*/
/*No:CALL_INFIX_OR.compile_to_c*/
/*No:CALL_INFIX_OR.isa_dca_inline_argument*/
/*No:CALL_INFIX_OR.us_or*/


T0* r120arg1(T120* C){
T0* R=NULL;
R=/*X149first*/((T0*)/*(IRF4.3first*/((T149*)((C)->_arguments/*8*/))->_first_one/*4*//*)*/);
return R;
}


void r120run_feature_has_result(T120* C){
/*[IF*/
if((X51result_type((C)->_run_feature/*16*/))==((void*)(NULL))){
r21add_position(X51start_position((C)->_run_feature/*16*/));
r21add_position(((T138*)((C)->_feature_name/*12*/))->_start_position/*8*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms117_53650);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
}


T0* r120run_feature_for(T120* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _rc=NULL;
_rc=X54run_class(X56result_type(a1));
R=r24get_rf(((T24*)_rc),a1,(C)->_feature_name/*12*/,a2);
return R;
}
/*No:CALL_INFIX_OR.target*/


void r120error(T0* a1,T0* a2){
r21add_position(a1);
r21error((T21*)(oBC12eh),a2);
}


void r120make(T120* C,T0* a1,T0* a2,T0* a3){
C->_target=a1;
{T138*n=malloc(sizeof(*n));
*n=M138;
r138make(n,r120operator(),a2);
C->_feature_name=(T0*)n;
}
{T149*n=malloc(sizeof(*n));
*n=M149;
/*[IRF3.3make_1*/((((T149*)(n)))->_first_one)=(a3);
/*]*/
C->_arguments=(T0*)n;
}
}
/*No:CALL_INFIX_OR.is_current*/


void r120mapping_c_arg(T120* C,T0* a1){
T0* _actual_type=NULL;
_actual_type=X54run_type(r120result_type(C));
/*[IF*/
if(X54is_reference(_actual_type)){
/*[IF*/
if(X54is_reference(a1)){
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T120* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
}
else{
X54to_expanded(_actual_type);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T120* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}
else{
/*[IF*/
if(X54is_reference(a1)){
X54to_reference(_actual_type);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T120* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
/*[IF*/
if(X54need_c_struct(a1)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\46';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T120* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T120* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*No:CALL_INFIX_OR.is_void*/


T0* r120operator(void){
T0* R=NULL;
R=((T0*)ms14_456);
return R;
}


void r120afd_check(T120* C){
T0* _running=NULL;
T0* _rc=NULL;
_rc=X54run_class(X56result_type((C)->_target/*4*/));
_running=(((T24*)_rc))->_running/*12*/;
/*[IF*/
if((_running)==((void*)(NULL))){
r21add_position(X56start_position((C)->_target/*4*/));
/*[IRF3.6append*/{T0* b1=((T0*)ms118_181815);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X54run_time_mark((((T24*)_rc))->_current_type/*0*/);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms13_20094);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21print_as_warning((T21*)(oBC12eh));
r24set_at_run_time(((T24*)_rc));
}
 else if((r328count(((T328*)_running)))>(1)){
r331update((C)->_target/*4*/,(C)->_run_feature/*16*/);
}
/*FI]*/
X56afd_check((C)->_target/*4*/);
/*[IF*/
{/*AT*/X149afd_check((C)->_arguments/*8*/);
}
/*FI]*/
}


T2 r153static_value(T153* C){
T2 R=0;
T0* _rf=NULL;
T0* _running=NULL;
_running=((T24*)(X51run_class((C)->_run_feature/*16*/)))->_running/*12*/;
/*[IF*/
if(((_running)!=((void*)(NULL)))&&((r328count(((T328*)_running)))==(1))){
_rf=r24dynamic((T24*)(r328first(((T328*)_running))),(C)->_run_feature/*16*/);
/*[IF*/
if(X51is_static(_rf)){
R=X51static_value_mem(_rf);
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:CALL_N.call_proc_call_c2c*/
/*No:CALL_N.feature_name*/


void r153finalize(T153* C){
T0* _rf=NULL;
T0* _rc=NULL;
_rf=(C)->_run_feature/*16*/;
_rc=X54run_class(/*X51current_type*/((T0*)(((T324*)_rf))->_current_type/*4*/));
C->_run_feature=r24dynamic((T24*)(r328first((T328*)((((T24*)_rc))->_running/*12*/))),_rf);
}


T6 r153is_static(T153* C){
T6 R=0;
T0* _rf=NULL;
T0* _running=NULL;
_running=((T24*)(X51run_class((C)->_run_feature/*16*/)))->_running/*12*/;
/*[IF*/
if(((_running)!=((void*)(NULL)))&&((r328count(((T328*)_running)))==(1))){
_rf=r24dynamic((T24*)(r328first(((T328*)_running))),(C)->_run_feature/*16*/);
/*[IF*/
if(X51is_static(_rf)){
R=1;
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:CALL_N.is_manifest_string*/


T0* r153start_position(T153* C){
T0* R=NULL;
R=X83start_position((C)->_feature_name/*8*/);
return R;
}
/*No:CALL_N.c_simple*/


T0* r153add_comment(T153* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r39count(((T39*)((((T82*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
else{
{T230*n=malloc(sizeof(*n));
*n=M230;
r230make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


T2 r153to_integer(T153* C){
T2 R=0;
r153error(r153start_position(C),((T0*)ms13_45846));
return R;
}


T6 r153use_current(T153* C){
T6 R=0;
/*[IF*/
if((r153arg_count(C))>(0)){
R=X149use_current((C)->_arguments/*12*/);
}
/*FI]*/
/*[IF*/
if(R){
}
 else if(X56is_current((C)->_target/*4*/)){
R=X51use_current((C)->_run_feature/*16*/);
}
else{
R=X56use_current((C)->_target/*4*/);
}
/*FI]*/
return R;
}


T0* r153to_runnable(T153* C,T0* a1){
T0* R=NULL;
T0* _rf=NULL;
T0* _a=NULL;
T0* _t=NULL;
_t=r153runnable_expression((C)->_target/*4*/,a1);
_a=r153runnable_args((C)->_arguments/*12*/,a1);
_rf=r153run_feature_for(C,_t,a1);
/*[IF*/
if(((C)->_run_feature/*16*/)==((void*)(NULL))){
C->_target=_t;
C->_arguments=_a;
C->_run_feature=_rf;
r153run_feature_match(C,a1);
R=(T0*)C;
}
 else if(((_t)==((void*)((C)->_target/*4*/)))&&((_a)==((void*)((C)->_arguments/*12*/)))){
R=(T0*)C;
}
else{
{T153*n=malloc(sizeof(*n));
*n=M153;
r153with(n,_t,(C)->_feature_name/*8*/,_a,_rf,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


void r153compile_to_c_old(T153* C){
X56compile_to_c_old((C)->_target/*4*/);
/*[IF*/
if((r153arg_count(C))>(0)){
X149compile_to_c_old((C)->_arguments/*12*/);
}
/*FI]*/
}
/*No:CALL_N.is_pre_computable*/
/*No:CALL_N.fz_bad_argument*/


void r153collect_c_tmp(T153* C){
/*[IF*/
if(((C)->_run_feature/*16*/)!=((void*)(NULL))){
X51collect_c_tmp((C)->_run_feature/*16*/);
}
/*FI]*/
X56collect_c_tmp((C)->_target/*4*/);
/*[IF*/
if(((C)->_arguments/*12*/)!=((void*)(NULL))){
X149collect_c_tmp((C)->_arguments/*12*/);
}
/*FI]*/
}
/*No:CALL_N.fz_iinaiv*/


T0* r153result_type(T153* C){
T0* R=NULL;
T0* _e=NULL;
T0* _tla=NULL;
R=X51result_type((C)->_run_feature/*16*/);
/*[IF*/
if(X54is_like_current(R)){
R=/*X51current_type*/((T0*)((T324*)((C)->_run_feature/*16*/))->_current_type/*4*/);
}
else{
_tla=R;
if(NULL!=(_tla))switch(((T0*)_tla)->id) {
case 258: 
break;
default:
_tla=NULL;
};/*[IF*/
if((_tla)!=((void*)(NULL))){
_e=X149expression((C)->_arguments/*12*/,/*(IRF4.6rank*/(((T188*)((((T258*)_tla))->_like_what/*8*/)))->_rank/*8*//*)*/);
R=X54run_type(X56result_type(_e));
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:CALL_N.run_feature*/


T0* r153runnable_args(T0* a1,T0* a2){
T0* R=NULL;
R=X149to_runnable(a1,a2);
/*[IF*/
if((R)==((void*)(NULL))){
r21add_position(X149start_position(a1));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms13_13065);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
return R;
}
/*No:CALL_N.fz_07*/


T2 r153arg_count(T153* C){
T2 R=0;
R=X149count((C)->_arguments/*12*/);
return R;
}


void r153with(T153* 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;
r153run_feature_match(C,a5);
}
/*No:CALL_N.is_result*/
/*No:CALL_N.fatal_error*/


void r153mapping_c_target(T153* C,T0* a1){
T0* _actual_type=NULL;
T6 _flag=0;
_flag=r25call_invariant_start(a1);
_actual_type=X54run_type(r153result_type(C));
/*[IF*/
if(X54is_reference(_actual_type)){
/*[IF*/
if(X54is_reference(a1)){
X54mapping_cast(a1);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T153* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
X54to_expanded(_actual_type);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T153* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}
else{
/*[IF*/
if(X54is_reference(a1)){
X54to_reference(_actual_type);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T153* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
/*[IF*/
if(X54need_c_struct(a1)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\46';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T153* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T153* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(_flag){
/*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T45* C1=(T45*)(oBC25out_c);
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}


void r153run_feature_match(T153* C,T0* a1){
r153run_feature_has_result(C);
X149match_with((C)->_arguments/*12*/,(C)->_run_feature/*16*/,a1);
}
/*No:CALL_N.arguments*/


T0* r153runnable_expression(T0* a1,T0* a2){
T0* R=NULL;
R=X56to_runnable(a1,a2);
/*[IF*/
if((R)==((void*)(NULL))){
r21add_position(X56start_position(a1));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms118_16515);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
return R;
}
/*No:CALL_N.can_be_dropped*/


void r153c_declare_for_old(T153* C){
X56c_declare_for_old((C)->_target/*4*/);
/*[IF*/
if((r153arg_count(C))>(0)){
X149c_declare_for_old((C)->_arguments/*12*/);
}
/*FI]*/
}
/*No:CALL_N.dca_inline_argument*/
/*No:CALL_N.compile_to_c*/
/*No:CALL_N.isa_dca_inline_argument*/


void r153run_feature_has_result(T153* C){
/*[IF*/
if((X51result_type((C)->_run_feature/*16*/))==((void*)(NULL))){
r21add_position(X51start_position((C)->_run_feature/*16*/));
r21add_position(X83start_position((C)->_feature_name/*8*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms117_53650);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
}


T0* r153run_feature_for(T153* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _rc=NULL;
_rc=X54run_class(X56result_type(a1));
R=r24get_rf(((T24*)_rc),a1,(C)->_feature_name/*8*/,a2);
return R;
}
/*No:CALL_N.target*/


void r153error(T0* a1,T0* a2){
r21add_position(a1);
r21error((T21*)(oBC12eh),a2);
}


void r153make(T153* C,T0* a1,T0* a2,T0* a3){
C->_target=a1;
C->_feature_name=a2;
C->_arguments=a3;
}
/*No:CALL_N.is_current*/


void r153mapping_c_arg(T153* C,T0* a1){
T0* _actual_type=NULL;
_actual_type=X54run_type(r153result_type(C));
/*[IF*/
if(X54is_reference(_actual_type)){
/*[IF*/
if(X54is_reference(a1)){
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T153* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
}
else{
X54to_expanded(_actual_type);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T153* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}
else{
/*[IF*/
if(X54is_reference(a1)){
X54to_reference(_actual_type);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T153* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
/*[IF*/
if(X54need_c_struct(a1)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\46';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T153* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T153* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*No:CALL_N.is_void*/


void r153afd_check(T153* C){
T0* _running=NULL;
T0* _rc=NULL;
_rc=X54run_class(X56result_type((C)->_target/*4*/));
_running=(((T24*)_rc))->_running/*12*/;
/*[IF*/
if((_running)==((void*)(NULL))){
r21add_position(X56start_position((C)->_target/*4*/));
/*[IRF3.6append*/{T0* b1=((T0*)ms118_181815);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X54run_time_mark((((T24*)_rc))->_current_type/*0*/);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms13_20094);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21print_as_warning((T21*)(oBC12eh));
r24set_at_run_time(((T24*)_rc));
}
 else if((r328count(((T328*)_running)))>(1)){
r331update((C)->_target/*4*/,(C)->_run_feature/*16*/);
}
/*FI]*/
X56afd_check((C)->_target/*4*/);
/*[IF*/
if((r153arg_count(C))>(0)){
X149afd_check((C)->_arguments/*12*/);
}
/*FI]*/
}


T0* r87to_old_name(T87* C,T0* a1){
T0* R=NULL;
T0* _fn_to_key=NULL;
T2 _i=0;
_i=1;
_fn_to_key=X83to_key(a1);
while (!(((R)!=((void*)(NULL)))||((_i)>(((T89*)((C)->_list/*0*/))->_upper/*8*/)))) {
/*[IF*/
if((X83to_key(((T88*)(r89item((T89*)((C)->_list/*0*/),_i)))->_new_name/*4*/))==((void*)(_fn_to_key))){
R=((T88*)(r89item((T89*)((C)->_list/*0*/),_i)))->_old_name/*0*/;
}
/*FI]*/
_i=(_i)+(1);
}
/*[IF*/
if((R)==((void*)(NULL))){
R=a1;
}
/*FI]*/
return R;
}


T0* r87to_new_name(T87* C,T0* a1){
T0* R=NULL;
T0* _fn_to_key=NULL;
T2 _i=0;
_i=1;
_fn_to_key=X83to_key(a1);
while (!(((R)!=((void*)(NULL)))||((_i)>(((T89*)((C)->_list/*0*/))->_upper/*8*/)))) {
/*[IF*/
if((X83to_key(((T88*)(r89item((T89*)((C)->_list/*0*/),_i)))->_old_name/*0*/))==((void*)(_fn_to_key))){
R=((T88*)(r89item((T89*)((C)->_list/*0*/),_i)))->_new_name/*4*/;
}
/*FI]*/
_i=(_i)+(1);
}
/*[IF*/
if((R)==((void*)(NULL))){
R=a1;
}
/*FI]*/
return R;
}
/*No:RENAME_LIST.add_last*/


void r87get_started(T87* C,T0* a1){
T0* _rp2=NULL;
T0* _rp1=NULL;
T2 _j=0;
T2 _i=0;
_i=((T89*)((C)->_list/*0*/))->_upper/*8*/;
while (!((_i)==(0))) {
_rp1=r89item((T89*)((C)->_list/*0*/),_i);
/*[IF*/
if(!(r63has(((T63*)a1),(((T88*)_rp1))->_old_name/*0*/))){
r21add_position(X83start_position((((T88*)_rp1))->_old_name/*0*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms87_102564);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
_i=(_i)-(1);
_j=_i;
while (!((_j)==(0))) {
_rp2=r89item((T89*)((C)->_list/*0*/),_j);
/*[IF*/
if((X83to_key((((T88*)_rp2))->_old_name/*0*/))==((void*)(X83to_key((((T88*)_rp1))->_old_name/*0*/)))){
r21add_position(X83start_position((((T88*)_rp1))->_old_name/*0*/));
r21add_position(X83start_position((((T88*)_rp2))->_old_name/*0*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms87_122084);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
_j=(_j)-(1);
}
}
}
/*No:RENAME_LIST.make*/


T6 r87affect(T87* C,T0* a1){
T6 R=0;
T0* _fn_to_key=NULL;
T0* _rp=NULL;
T2 _i=0;
_i=((T89*)((C)->_list/*0*/))->_upper/*8*/;
while (!((R)||((_i)==(0)))) {
_rp=r89item((T89*)((C)->_list/*0*/),_i);
_fn_to_key=X83to_key(a1);
/*[IF*/
if(((X83to_key((((T88*)_rp))->_new_name/*4*/))==((void*)(_fn_to_key)))||((X83to_key((((T88*)_rp))->_old_name/*0*/))==((void*)(_fn_to_key)))){
R=1;
}
else{
_i=(_i)-(1);
}
/*FI]*/
}
return R;
}
/*No:RENAME_LIST.list*/
/*No:RENAME_LIST.fatal_error*/
/*No:TYPE_CHARACTER.fz_void*/
/*No:TYPE_CHARACTER.start_position*/
int fBC266used_as_reference=0;


void r266used_as_reference(void){
if (fBC266used_as_reference==0){
fBC266used_as_reference=1;
r266load_ref(((T0*)ms14_16588));
}}
/*No:TYPE_CHARACTER.id*/
/*No:TYPE_CHARACTER.is_user_expanded*/
/*No:TYPE_CHARACTER.is_pointer*/


T0* r266to_runnable(T266* C,T0* a1){
T0* R=NULL;
R=(T0*)C;
r266check_type(C);
return R;
}
/*No:TYPE_CHARACTER.c_initialize_in*/
/*No:TYPE_CHARACTER.gc_define1*/
/*No:TYPE_CHARACTER.to_reference*/


void r266gc_mark_in(T0* a1){
r7append(((T7*)a1),((T0*)ms13_8869));
r2append_in(3,a1);
}


T0* r266run_class(T266* C){
T0* R=NULL;
R=r22run_class((T0*)C);
return R;
}
/*No:TYPE_CHARACTER.c_header_pass2*/
/*No:TYPE_CHARACTER.c_header_pass4*/
/*No:TYPE_CHARACTER.us_item*/
/*No:TYPE_CHARACTER.is_like_current*/
/*No:TYPE_CHARACTER.is_bit*/


T0* r266smallest_ancestor(T266* C,T0* a1){
T0* R=NULL;
T0* _rto=NULL;
_rto=X54run_type(a1);
/*[IF*/
if(X54is_character(_rto)){
R=(T0*)C;
}
else{
R=r273smallest_ancestor((T273*)(r266type_character_ref()),_rto);
}
/*FI]*/
return R;
}


T0* r266run_time_mark(void){
T0* R=NULL;
R=((T0*)ms14_9936);
return R;
}
/*No:TYPE_CHARACTER.is_expanded*/
int fBC12type_character_ref=0;
T0*oBC12type_character_ref=NULL;


T0* r266type_character_ref(void){
if(fBC12type_character_ref==0){
T0* _character_ref=NULL;
fBC12type_character_ref=1;
{T64*n=malloc(sizeof(*n));
*n=M64;
r64make(n,((T0*)ms14_16588),NULL);
_character_ref=(T0*)n;
}
{T273*n=malloc(sizeof(*n));
*n=M273;
/*[IRF3.3make*/((((T273*)(n)))->_base_class_name)=(_character_ref);
/*]*/
oBC12type_character_ref=(T0*)n;
}
}
return oBC12type_character_ref;}
/*No:TYPE_CHARACTER.gc_info_in*/
/*No:TYPE_CHARACTER.gc_define2*/
/*No:TYPE_CHARACTER.fz_dot*/
/*No:TYPE_CHARACTER.is_like_feature*/


T6 r266is_a(T266* C,T0* a1){
T6 R=0;
/*[IF*/
if(X54is_character(a1)){
R=1;
}
else{
R=r63is_subclass_of((T63*)(r266base_class(C)),X54base_class(a1));
/*[IF*/
if(R){
r266used_as_reference();
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(!(R)){
r21add_type((T0*)C,((T0*)ms13_17730));
r21add_type(a1,((T0*)ms13_47));
}
/*FI]*/
return R;
}
/*No:TYPE_CHARACTER.c_initialize*/
/*No:TYPE_CHARACTER.is_character*/


T0* r266written_mark(void){
T0* R=NULL;
R=((T0*)ms14_9936);
return R;
}


void r266error(T0* a1,T0* a2){
r21add_position(a1);
r21error((T21*)(oBC12eh),a2);
}


void r266make(T266* C,T0* a1){
{T64*n=malloc(sizeof(*n));
*n=M64;
r64make(n,((T0*)ms14_9936),a1);
C->_base_class_name=(T0*)n;
}
}


void r266demangling_in(T0* a1){
/*[IF*/
/*AF*//*AE*/
r7extend(((T7*)a1),'E');
/*FI]*/
r7extend(((T7*)a1),'\40');
r7append(((T7*)a1),r266run_time_mark());
}


void r266fatal_error_generic_list(T266* C){
r21add_type((T0*)C,((T0*)ms54_29184));
r21print_as_fatal_error((T21*)(oBC12eh));
}
/*No:TYPE_CHARACTER.is_array*/
/*No:TYPE_CHARACTER.is_dummy_expanded*/
/*No:TYPE_CHARACTER.space_for_variable*/
/*No:TYPE_CHARACTER.to_expanded*/


T0* r266generic_list(T266* C){
T0* R=NULL;
r266fatal_error_generic_list(C);
return R;
}


T0* r266base_class(T266* C){
T0* R=NULL;
T0* _bcn=NULL;
_bcn=(C)->_base_class_name/*4*/;
/*[IF*/
if((_bcn)!=((void*)(NULL))){
R=r64base_class(((T64*)_bcn));
}
else{
/*[IRF3.6append*/{T0* b1=((T0*)ms54_37098);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21add_type((T0*)C,((T0*)ms13_47));
r21print_as_fatal_error((T21*)(oBC12eh));
}
/*FI]*/
return R;
}
/*No:TYPE_CHARACTER.cast_to_ref*/
/*No:TYPE_CHARACTER.base_class_name*/
/*No:TYPE_CHARACTER.is_formal_generic*/


T6 r266is_a_in(T266* C,T0* a1,T0* a2){
T6 R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*[IF*/
if((r266written_mark())==((void*)(X54written_mark(a1)))){
R=1;
}
else{
_ct=(((T24*)a2))->_current_type/*0*/;
_t1=r266to_runnable(C,_ct);
_t2=X54to_runnable(a1,_ct);
/*[IF*/
if((X54run_time_mark(_t1))==((void*)(X54run_time_mark(_t2)))){
R=1;
}
else{
R=X54is_a(_t1,_t2);
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r266look_up_for(T266* C,T0* a1,T0* a2){
T0* R=NULL;
R=r63look_up_for((T63*)(r266base_class(C)),a1,a2);
return R;
}


void r266c_type_for_external_in(T0* a1){
/*[IF*/
/*AF*//*AE*/
/*[IRF3.6c_type_for_result_in*/{T0* b1=a1;
r266c_type_for_argument_in(b1);
}/*]*/
/*FI]*/
}


void r266c_type_for_argument_in(T0* a1){
r7extend(((T7*)a1),'T');
r7extend(((T7*)a1),'3');
}
/*No:TYPE_CHARACTER.c_header_pass1*/
/*No:TYPE_CHARACTER.run_type*/
/*No:TYPE_CHARACTER.c_type_for_target_in*/
/*No:TYPE_CHARACTER.c_type_for_result_in*/
/*No:TYPE_CHARACTER.expanded_initializer*/
/*No:TYPE_CHARACTER.c_frame_descriptor*/


T6 r266has_creation(T266* C,T0* a1){
T6 R=0;
r21add_position(X83start_position(a1));
r266error(/*(IRF4.6start_position*/(((T64*)((C)->_base_class_name/*4*/)))->_start_position/*4*//*)*/,((T0*)ms265_100044));
return R;
}
/*No:TYPE_CHARACTER.c_header_pass3*/


void r266gc_call_new_in(T0* a1){
r7append(((T7*)a1),((T0*)ms13_1008));
r2append_in(3,a1);
r7extend(((T7*)a1),'\50');
r7extend(((T7*)a1),'\51');
}
/*No:TYPE_CHARACTER.fz_new*/
/*No:TYPE_CHARACTER.is_boolean*/
/*No:TYPE_CHARACTER.mapping_cast*/
/*No:TYPE_CHARACTER.is_generic*/
/*No:TYPE_CHARACTER.us_character_ref*/
/*No:TYPE_CHARACTER.is_real*/
/*No:TYPE_CHARACTER.need_c_struct*/
/*No:TYPE_CHARACTER.is_any*/
/*No:TYPE_CHARACTER.nb_errors*/
/*No:TYPE_CHARACTER.us_character*/
/*No:TYPE_CHARACTER.is_basic_eiffel_expanded*/
/*No:TYPE_CHARACTER.fz_gc_mark*/
/*No:TYPE_CHARACTER.need_gc_mark_function*/


T6 r266is_native_array(T266* C){
T6 R=0;
T0* _tna=NULL;
_tna=(T0*)C;
if(NULL!=(_tna))switch(((T0*)_tna)->id) {
case 263: 
break;
default:
_tna=NULL;
};R=(_tna)!=((void*)(NULL));
return R;
}
/*No:TYPE_CHARACTER.is_string*/
/*No:TYPE_CHARACTER.is_integer*/
/*No:TYPE_CHARACTER.is_anchored*/
/*No:TYPE_CHARACTER.is_run_type*/
/*No:TYPE_CHARACTER.is_reference*/
/*No:TYPE_CHARACTER.is_none*/
/*No:TYPE_CHARACTER.fz_inako*/
/*No:TYPE_CHARACTER.is_like_argument*/
/*No:TYPE_CHARACTER.just_before_gc_mark_in*/


void r266load_ref(T0* a1){
T0* _rf=NULL;
T0* _rc=NULL;
T0* _cn=NULL;
{T64*n=malloc(sizeof(*n));
*n=M64;
r64make(n,a1,NULL);
_cn=(T0*)n;
}
_rc=r63run_class((T63*)(r64base_class(((T64*)_cn))));
r24set_at_run_time(((T24*)_rc));
_rf=r24get_feature_with(((T24*)_rc),((T0*)ms14_1764));
}
/*No:TYPE_CHARACTER.mapping_cast_memory*/
int fBC266check_type=0;


void r266check_type(T266* C){
if (fBC266check_type==0){
T0* _rc=NULL;
T0* _bc=NULL;
fBC266check_type=1;
_bc=r266base_class(C);
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
_rc=r266run_class(C);
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(!((((T63*)_bc))->_is_expanded/*20*/)){
r266error(/*(IRF4.6start_position*/(((T64*)((C)->_base_class_name/*4*/)))->_start_position/*4*//*)*/,((T0*)ms266_43416));
}
/*FI]*/
}
/*FI]*/
}}
/*No:TYPE_CHARACTER.is_double*/


T6 r78has_redefine(T78* C,T0* a1){
T6 R=0;
T2 _i=0;
_i=1;
while (!((R)||((_i)>(((T80*)((C)->_list/*12*/))->_upper/*8*/)))) {
R=r79has_redefine((T79*)(r80item((T80*)((C)->_list/*12*/),_i)),a1);
_i=(_i)+(1);
}
return R;
}


void r78inherit_cycle_check(T78* C){
T0* _bc=NULL;
T0* _p=NULL;
T2 _i=0;
_i=((T80*)((C)->_list/*12*/))->_upper/*8*/;
while (!((_i)==(0))) {
_p=r80item((T80*)((C)->_list/*12*/),_i);
_bc=X54base_class((((T79*)_p))->_type/*4*/);
/*[IF*/
if((_bc)==((void*)(NULL))){
r21add_position(r79start_position(((T79*)_p)));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms13_20048);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
else{
r63inherit_cycle_check(((T63*)_bc));
}
/*FI]*/
_i=(_i)-(1);
}
}


T0* r78up_to_original(T78* C,T0* a1,T0* a2){
T0* R=NULL;
T2 _i=0;
T0* _new_fn=NULL;
T0* _fn2=NULL;
T0* _fn1=NULL;
T0* _p2=NULL;
T0* _p1=NULL;
_i=((T80*)((C)->_list/*12*/))->_upper/*8*/;
while (!(((_i)==(0))||((_fn1)!=((void*)(NULL))))) {
_p1=r80item((T80*)((C)->_list/*12*/),_i);
_fn1=r79up_to_original(((T79*)_p1),a1,a2);
_i=(_i)-(1);
}
while (!((_i)==(0))) {
_p2=r80item((T80*)((C)->_list/*12*/),_i);
_fn2=r79up_to_original(((T79*)_p2),a1,a2);
/*[IF*/
if((_fn2)!=((void*)(NULL))){
_new_fn=r79do_rename(((T79*)_p2),a2);
/*[IF*/
if(r79has_select_for(((T79*)_p2),_new_fn)){
_p1=_p2;
_fn1=_fn2;
}
/*FI]*/
}
/*FI]*/
_i=(_i)-(1);
}
/*[IF*/
if((_fn1)!=((void*)(NULL))){
/*[IF*/
if((X83to_string(_fn1))!=((void*)(X83to_string(a2)))){
R=r78repeated_inheritance(C,_p1,_fn1,a2);
}
else{
R=_fn1;
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:PARENT_LIST.base_class*/


T6 r78has(T78* C,T0* a1){
T6 R=0;
T2 _i=0;
_i=((T80*)((C)->_list/*12*/))->_upper/*8*/;
while (!((R)||((_i)==(0)))) {
R=r79has((T79*)(r80item((T80*)((C)->_list/*12*/),_i)),a1);
_i=(_i)-(1);
}
return R;
}
/*No:PARENT_LIST.start_position*/


void r78collect_invariant(T78* C,T0* a1){
T2 _i=0;
_i=((T80*)((C)->_list/*12*/))->_upper/*8*/;
while (!((_i)==(0))) {
r63collect_invariant((T63*)(X54base_class(((T79*)(r80item((T80*)((C)->_list/*12*/),_i)))->_type/*4*/)),a1);
_i=(_i)-(1);
}
}
/*No:PARENT_LIST.fz_cnf*/


T0* r78next_parent_for(T78* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _pbc=NULL;
T2 _i=0;
_i=1;
while (!((R)==((void*)(a2)))) {
R=r80item((T80*)((C)->_list/*12*/),_i);
_i=(_i)+(1);
}
R=NULL;
while (!(((R)!=((void*)(NULL)))||((_i)>(r80count((T80*)((C)->_list/*12*/)))))) {
R=r80item((T80*)((C)->_list/*12*/),_i);
_pbc=X54base_class((((T79*)R))->_type/*4*/);
/*[IF*/
if((_pbc)==((void*)(a1))){
}
 else if(r63is_subclass_of(((T63*)_pbc),a1)){
}
else{
R=NULL;
}
/*FI]*/
_i=(_i)+(1);
}
return R;
}


T0* r78precursor_for(T78* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _f2=NULL;
T0* _parent=NULL;
T2 _i=0;
_i=((T80*)((C)->_list/*12*/))->_upper/*8*/;
while (!(((R)!=((void*)(NULL)))||((_i)==(0)))) {
_parent=r80item((T80*)((C)->_list/*12*/),_i);
R=r79precursor_for(((T79*)_parent),a1,a2);
_i=(_i)-(1);
}
/*[IF*/
if((R)==((void*)(NULL))){
r21add_position(/*X176start_position*/((T0*)(((T177*)a1))->_start_position/*4*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms78_50792);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
/*[IF*/
if(r43all_check((T43*)(oBC12run_control))){
while (!((_i)==(0))) {
_parent=r80item((T80*)((C)->_list/*12*/),_i);
_f2=r79precursor_for(((T79*)_parent),a1,a2);
/*[IF*/
if(((_f2)!=((void*)(NULL)))&&((_f2)!=((void*)(R)))){
r21add_position(/*X176start_position*/((T0*)(((T177*)a1))->_start_position/*4*/));
r21add_position(X93start_position(R));
r21add_position(X93start_position(_f2));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms78_163188);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
_i=(_i)-(1);
}
}
/*FI]*/
return R;
}


T0* r78going_up(T78* C,T0* a1,T0* a2,T0* a3){
T0* R=NULL;
T0* _fn2=NULL;
T0* _fn1=NULL;
T0* _p2=NULL;
T0* _p1=NULL;
T2 _i=0;
_i=((T80*)((C)->_list/*12*/))->_upper/*8*/;
while (!(((_fn1)!=((void*)(NULL)))||((_i)==(0)))) {
_p1=r80item((T80*)((C)->_list/*12*/),_i);
_fn1=r79going_up(((T79*)_p1),a1,a2,a3);
_i=(_i)-(1);
}
while (!((_i)==(0))) {
_p2=r80item((T80*)((C)->_list/*12*/),_i);
_fn2=r79going_up(((T79*)_p2),a1,a2,a3);
/*[IF*/
if((_fn2)!=((void*)(NULL))){
/*[IF*/
if(r79has_select_for(((T79*)_p2),_fn2)){
_p1=_p2;
_fn1=_fn2;
}
/*FI]*/
}
/*FI]*/
_i=(_i)-(1);
}
R=_fn1;
return R;
}
/*No:PARENT_LIST.em1*/


T0* r78clients_for(T78* C,T0* a1){
T0* R=NULL;
T0* _cl=NULL;
T2 _i=0;
_i=((T80*)((C)->_list/*12*/))->_upper/*8*/;
while (!((_i)==(0))) {
_cl=r79clients_for((T79*)(r80item((T80*)((C)->_list/*12*/),_i)),a1);
/*[IF*/
if((R)==((void*)(NULL))){
R=_cl;
}
 else if((_cl)!=((void*)(NULL))){
R=r101append(((T101*)R),_cl);
}
/*FI]*/
/*[IF*/
if((R)==((void*)(NULL))){
_i=(_i)-(1);
}
 else if(r101gives_permission_to_any(((T101*)R))){
_i=0;
}
else{
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T69*)((T69*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
_i=(_i)-(1);
}
/*FI]*/
}
return R;
}


T0* r78repeated_inheritance(T78* C,T0* a1,T0* a2,T0* a3){
T0* R=NULL;
T0* _bc1=NULL;
T0* _p2=NULL;
T2 _i=0;
_bc1=X54base_class((((T79*)a1))->_type/*4*/);
_i=((T80*)((C)->_list/*12*/))->_upper/*8*/;
while (!((_i)==(0))) {
_p2=r80item((T80*)((C)->_list/*12*/),_i);
/*[IF*/
if((a1)!=((void*)(_p2))){
/*[IF*/
if((_bc1)==((void*)(X54base_class((((T79*)_p2))->_type/*4*/)))){
/*[IF*/
if((X83to_string(r79do_rename(((T79*)_p2),a2)))==((void*)(X83to_string(a3)))){
R=a3;
}
 else if((X83to_string(r79do_rename(((T79*)a1),a2)))==((void*)(X83to_string(a3)))){
R=a3;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
_i=(_i)-(1);
}
/*[IF*/
if((R)==((void*)(NULL))){
R=a2;
}
/*FI]*/
return R;
}


T0* r78look_up_for(T78* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _f2=NULL;
T0* _f1=NULL;
T0* _p2=NULL;
T0* _p1=NULL;
T2 _i=0;
_i=((T80*)((C)->_list/*12*/))->_upper/*8*/;
while (!(((_f1)!=((void*)(NULL)))||((_i)==(0)))) {
_p1=r80item((T80*)((C)->_list/*12*/),_i);
_f1=r79look_up_for(((T79*)_p1),a1,a2);
_i=(_i)-(1);
}
while (!((_i)==(0))) {
_p2=r80item((T80*)((C)->_list/*12*/),_i);
_f2=r79look_up_for(((T79*)_p2),a1,a2);
/*[IF*/
if((_f2)==((void*)(NULL))){
}
 else if((_f1)==((void*)(_f2))){
}
 else if(!(X93is_merge_with(_f2,_f1,a1))){
r21add_position((C)->_start_position/*4*/);
r21add_position(X93start_position(_f1));
r21add_position(X93start_position(_f2));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms13_33638);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
 else if(X93is_deferred(_f2)){
}
 else if(X93is_deferred(_f1)){
_f1=_f2;
_p1=_p2;
}
 else if(r79has_redefine(((T79*)_p1),a2)){
/*[IF*/
if(r79has_redefine(((T79*)_p2),a2)){
}
else{
r21add_position(X83start_position(a2));
r21add_position(r79start_position(((T79*)_p2)));
r21add_position(X93start_position(_f2));
/*[IRF3.6append*/{T0* b1=((T0*)ms78_24210);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21print_as_fatal_error((T21*)(oBC12eh));
}
/*FI]*/
}
 else if(r79has_redefine(((T79*)_p2),a2)){
r21add_position(X83start_position(a2));
r21add_position(r79start_position(((T79*)_p1)));
r21add_position(X93start_position(_f1));
/*[IRF3.6append*/{T0* b1=((T0*)ms78_24210);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21print_as_fatal_error((T21*)(oBC12eh));
}
else{
r21add_position(r79start_position(((T79*)_p2)));
r21add_position(r79start_position(((T79*)_p1)));
r21add_position(X93start_position(_f1));
r21add_position(X93start_position(_f2));
/*[IRF3.6append*/{T0* b1=((T0*)ms78_24210);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21print_as_fatal_error((T21*)(oBC12eh));
}
/*FI]*/
_i=(_i)-(1);
}
R=_f1;
return R;
}
/*No:PARENT_LIST.heading_comment*/


void r78get_started(T78* C){
T0* _p2=NULL;
T0* _p1=NULL;
T2 _i2=0;
T2 _i1=0;
_i1=((T80*)((C)->_list/*12*/))->_upper/*8*/;
while (!((_i1)==(0))) {
r79get_started((T79*)(r80item((T80*)((C)->_list/*12*/),_i1)),(T0*)C);
_i1=(_i1)-(1);
}
/*[IF*/
if((((T80*)((C)->_list/*12*/))->_upper/*8*/)>(1)){
_i2=((T80*)((C)->_list/*12*/))->_upper/*8*/;
while (!((_i2)==(1))) {
_i1=1;
while (!((_i1)==(_i2))) {
_p1=r80item((T80*)((C)->_list/*12*/),_i1);
_p2=r80item((T80*)((C)->_list/*12*/),_i2);
r79multiple_check(((T79*)_p1),_p2);
r79multiple_check(((T79*)_p2),_p1);
_i1=(_i1)+(1);
}
_i2=(_i2)-(1);
}
}
/*FI]*/
}


T0* r78first_parent_for(T78* C,T0* a1){
T0* R=NULL;
T0* _pbc=NULL;
T2 _i=0;
_i=1;
while (!((R)!=((void*)(NULL)))) {
R=r80item((T80*)((C)->_list/*12*/),_i);
_pbc=X54base_class((((T79*)R))->_type/*4*/);
/*[IF*/
if((_pbc)==((void*)(a1))){
}
 else if(r63is_subclass_of(((T63*)_pbc),a1)){
}
else{
R=NULL;
}
/*FI]*/
_i=(_i)+(1);
}
return R;
}
/*No:PARENT_LIST.count*/
/*No:PARENT_LIST.fz_ich*/


void r78make(T78* C,T0* a1,T0* a2,T0* a3,T0* a4){
C->_base_class=a1;
C->_heading_comment=a3;
C->_start_position=a2;
C->_list=a4;
}


void r78collect_for(T78* C,T2 a1,T0* a2){
T2 _i=0;
_i=((T80*)((C)->_list/*12*/))->_upper/*8*/;
while (!((_i)==(0))) {
r79collect_for((T79*)(r80item((T80*)((C)->_list/*12*/),_i)),a1,a2);
_i=(_i)-(1);
}
}


T6 r78is_a_vncg(T78* C,T0* a1,T0* a2){
T6 R=0;
T2 _i=0;
_i=((T80*)((C)->_list/*12*/))->_upper/*8*/;
while (!((R)||((_i)==(0)))) {
R=r79is_a_vncg((T79*)(r80item((T80*)((C)->_list/*12*/),_i)),a1,a2);
_i=(_i)-(1);
}
return R;
}


T6 r78has_parent(T78* C,T0* a1){
T6 R=0;
T0* _bc=NULL;
T2 _i=0;
_i=((T80*)((C)->_list/*12*/))->_upper/*8*/;
while (!((_i)==(0))) {
_bc=X54base_class(((T79*)(r80item((T80*)((C)->_list/*12*/),_i)))->_type/*4*/);
/*[IF*/
if((a1)==((void*)(_bc))){
R=1;
_i=0;
}
 else if(r63is_subclass_of_aux(((T63*)_bc),a1)){
R=1;
_i=0;
}
else{
_i=(_i)-(1);
}
/*FI]*/
}
return R;
}
/*No:PARENT_LIST.super*/
/*No:PARENT_LIST.list*/


T0* r78smallest_ancestor(T78* C,T0* a1){
T0* R=NULL;
T0* _sa=NULL;
T0* _p=NULL;
T2 _i=0;
_i=((T80*)((C)->_list/*12*/))->_upper/*8*/;
while (!((_i)==(0))) {
_p=r80item((T80*)((C)->_list/*12*/),_i);
_sa=X54run_type(r79smallest_ancestor(((T79*)_p),a1));
/*[IF*/
if((R)==((void*)(NULL))){
R=_sa;
}
else{
R=X54smallest_ancestor(_sa,R);
}
/*FI]*/
/*[IF*/
if(X54is_any(R)){
_i=0;
}
else{
_i=(_i)-(1);
}
/*FI]*/
}
return R;
}
/*No:PARENT_LIST.fatal_error*/


T0* r70base_class(T70* C){
T0* R=NULL;
/*[IF*/
if(((T34*)(oBC12eiffel_parser))->_is_running/*8*/){
/*[IF*/
if(/*(IRF4.7empty*/(((T7*)(((T64*)((C)->_base_class_name/*0*/))->_to_string/*0*/))->_count/*4*/)==(0)/*)*/){
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms70_57270);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
 else if(r22is_used(((T64*)((C)->_base_class_name/*0*/))->_to_string/*0*/)){
R=r64base_class((T64*)((C)->_base_class_name/*0*/));
}
else{
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms70_57270a);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
}
else{
R=r64base_class((T64*)((C)->_base_class_name/*0*/));
}
/*FI]*/
return R;
}
/*No:POSITION.line*/
/*No:POSITION.base_class_name*/


void r70show(T70* C){
T0* _the_line=NULL;
T0* _str=NULL;
T0* _n=NULL;
T2 _nb=0;
T2 _c=0;
_n=((T64*)((C)->_base_class_name/*0*/))->_to_string/*0*/;
r35put_string((T35*)(oBC1std_error),((T0*)ms70_2195));
r35put_integer((T35*)(oBC1std_error),/*(IRF4.6line*/((C)->_mem_line_column/*4*/)/(1000)/*)*/);
r35put_string((T35*)(oBC1std_error),((T0*)ms70_5904));
r35put_integer((T35*)(oBC1std_error),/*(IRF4.6column*/((C)->_mem_line_column/*4*/)%(1000)/*)*/);
r35put_string((T35*)(oBC1std_error),((T0*)ms70_1156));
r35put_string((T35*)(oBC1std_error),_n);
_str=r70path(C);
/*[IF*/
if((_str)!=((void*)(NULL))){
r35put_string((T35*)(oBC1std_error),((T0*)ms70_150));
r35put_string((T35*)(oBC1std_error),_str);
/*[IRF3.6put_character*/{T35* C1=(T35*)(oBC1std_error);
T3 b1='\51';
putc(b1,((FILE*)(stderr)));
}/*]*/
}
/*FI]*/
r35put_string((T35*)(oBC1std_error),((T0*)ms70_318));
_the_line=r70get_line(C);
/*[IF*/
if((_the_line)!=((void*)(NULL))){
_c=/*(IRF4.6column*/((C)->_mem_line_column/*4*/)%(1000)/*)*/;
r35put_string((T35*)(oBC1std_error),_the_line);
/*[IRF3.4put_new_line*//*[IRF3.6put_character*/{T35* C1=(T35*)(oBC1std_error);
T3 b1='\n';
putc(b1,((FILE*)(stderr)));
}/*]*/
/*]*/
_nb=1;
while (!((_nb)==(_c))) {
/*[IF*/
if((/*(IRF4.6item*/((((T7*)_the_line))->_storage/*0*/)[(_nb)-(1)]/*)*/)==('\11')){
/*[IRF3.6put_character*/{T35* C1=(T35*)(oBC1std_error);
T3 b1='\11';
putc(b1,((FILE*)(stderr)));
}/*]*/
}
else{
/*[IRF3.6put_character*/{T35* C1=(T35*)(oBC1std_error);
T3 b1='\40';
putc(b1,((FILE*)(stderr)));
}/*]*/
}
/*FI]*/
_nb=(_nb)+(1);
}
r35put_string((T35*)(oBC1std_error),((T0*)ms70_214));
}
else{
r35put_string((T35*)(oBC1std_error),((T0*)ms70_63048));
r35put_string((T35*)(oBC1std_error),_n);
r35put_string((T35*)(oBC1std_error),((T0*)ms70_11));
}
/*FI]*/
}


T0* r70get_line(T70* C){
T0* R=NULL;
T2 _i=0;
T0* _p=NULL;
_p=r70path(C);
/*[IF*/
if((_p)!=((void*)(NULL))){
r37connect_to((T37*)(oBC12tmp_file_read),_p);
while (!((_i)==(/*(IRF4.6line*/((C)->_mem_line_column/*4*/)/(1000)/*)*/))) {
r37read_line((T37*)(oBC12tmp_file_read));
_i=(_i)+(1);
}
R=oBC38last_string;
r37disconnect((T37*)(oBC12tmp_file_read));
}
/*FI]*/
return R;
}
/*No:POSITION.column*/


T0* r70path(T70* C){
T0* R=NULL;
T0* _bc=NULL;
T0* _bcn=NULL;
_bcn=((T64*)((C)->_base_class_name/*0*/))->_to_string/*0*/;
/*[IF*/
if((_bcn)!=((void*)(NULL))){
/*[IF*/
if(r22is_used(_bcn)){
_bc=r64base_class((T64*)((C)->_base_class_name/*0*/));
}
 else if(((T34*)(oBC12eiffel_parser))->_is_running/*8*/){
/*[IF*/
if((((T64*)(/*(IRF4.6current_class_name*/(((T63*)(((T34*)(oBC12eiffel_parser))->_last_base_class/*65*/)))->_name/*24*//*)*/))->_to_string/*0*/)==((void*)(_bcn))){
_bc=/*(IRF4.3current_class*/((T34*)(oBC12eiffel_parser))->_last_base_class/*65*//*)*/;
}
/*FI]*/
}
else{
_bc=r64base_class((T64*)((C)->_base_class_name/*0*/));
}
/*FI]*/
/*[IF*/
if((_bc)!=((void*)(NULL))){
R=(((T63*)_bc))->_path/*4*/;
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r70is_equal(T70* C,T0* a1){
T6 R=0;
R=(((((/*(IRF4.6line*/((C)->_mem_line_column/*4*/)/(1000)/*)*/)==(/*(IRF4.6line*/((((T70*)a1))->_mem_line_column/*4*/)/(1000)/*)*/))&&((/*(IRF4.6column*/((C)->_mem_line_column/*4*/)%(1000)/*)*/)==(/*(IRF4.6column*/((((T70*)a1))->_mem_line_column/*4*/)%(1000)/*)*/)))&&(((C)->_base_class_name/*0*/)!=((void*)(NULL))))&&(((((T70*)a1))->_base_class_name/*0*/)!=((void*)(NULL))))&&((((T64*)((C)->_base_class_name/*0*/))->_to_string/*0*/)==((void*)(((T64*)((((T70*)a1))->_base_class_name/*0*/))->_to_string/*0*/)));
return R;
}


void r70make(T70* C,T2 a1,T2 a2){
C->_mem_line_column=((a1)*(1000))+(a2);
C->_base_class_name=/*(IRF4.6current_class_name*/(((T63*)(((T34*)(oBC12eiffel_parser))->_last_base_class/*65*/)))->_name/*24*//*)*/;
}


T6 r70before(T70* C,T0* a1){
T6 R=0;
/*[IF*/
if((/*(IRF4.6line*/((C)->_mem_line_column/*4*/)/(1000)/*)*/)<(/*(IRF4.6line*/((((T70*)a1))->_mem_line_column/*4*/)/(1000)/*)*/)){
R=1;
}
 else if((/*(IRF4.6line*/((C)->_mem_line_column/*4*/)/(1000)/*)*/)==(/*(IRF4.6line*/((((T70*)a1))->_mem_line_column/*4*/)/(1000)/*)*/)){
R=(/*(IRF4.6column*/((C)->_mem_line_column/*4*/)%(1000)/*)*/)<(/*(IRF4.6column*/((((T70*)a1))->_mem_line_column/*4*/)%(1000)/*)*/);
}
/*FI]*/
return R;
}
/*No:POSITION.mem_line_column*/


void r70set_line_column(T70* C,T2 a1,T2 a2){
C->_mem_line_column=((a1)*(1000))+(a2);
}


void r70with(T70* C,T2 a1,T2 a2,T0* a3){
C->_mem_line_column=((a1)*(1000))+(a2);
C->_base_class_name=a3;
}
/*No:POSITION.fatal_error*/
/*No:CALL_INFIX_FREEOP.static_value*/
/*No:CALL_INFIX_FREEOP.call_proc_call_c2c*/
/*No:CALL_INFIX_FREEOP.feature_name*/


void r137finalize(T137* C){
T0* _rf=NULL;
T0* _rc=NULL;
_rf=(C)->_run_feature/*16*/;
_rc=X54run_class(/*X51current_type*/((T0*)(((T324*)_rf))->_current_type/*4*/));
C->_run_feature=r24dynamic((T24*)(r328first((T328*)((((T24*)_rc))->_running/*12*/))),_rf);
}
/*No:CALL_INFIX_FREEOP.is_static*/
/*No:CALL_INFIX_FREEOP.is_manifest_string*/


T0* r137start_position(T137* C){
T0* R=NULL;
R=((T138*)((C)->_feature_name/*12*/))->_start_position/*8*/;
return R;
}
/*No:CALL_INFIX_FREEOP.c_simple*/


T0* r137add_comment(T137* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r39count(((T39*)((((T82*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
else{
{T230*n=malloc(sizeof(*n));
*n=M230;
r230make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


T2 r137to_integer(T137* C){
T2 R=0;
r137error(r137start_position(C),((T0*)ms13_45846));
return R;
}


T6 r137call_is_static(T137* C){
T6 R=0;
T0* _rf=NULL;
T0* _running=NULL;
T0* _rc=NULL;
/*[IF*/
if(((C)->_run_feature/*16*/)!=((void*)(NULL))){
_rc=X51run_class((C)->_run_feature/*16*/);
/*[IF*/
if((_rc)!=((void*)(NULL))){
_running=(((T24*)_rc))->_running/*12*/;
/*[IF*/
if(((_running)!=((void*)(NULL)))&&((r328count(((T328*)_running)))==(1))){
_rf=r24dynamic((T24*)(r328first(((T328*)_running))),(C)->_run_feature/*16*/);
/*[IF*/
if(X51is_static(_rf)){
C->_static_value_mem=X51static_value_mem(_rf);
R=1;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r137use_current(T137* C){
T6 R=0;
/*[IF*/
{/*AT*/R=X149use_current((C)->_arguments/*8*/);
}
/*FI]*/
/*[IF*/
if(R){
}
 else if(X56is_current((C)->_target/*4*/)){
R=X51use_current((C)->_run_feature/*16*/);
}
else{
R=X56use_current((C)->_target/*4*/);
}
/*FI]*/
return R;
}


T0* r137to_runnable(T137* 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=r137runnable_expression((C)->_target/*4*/,a1);
_a=r137runnable_args((C)->_arguments/*8*/,a1);
_tt=X56result_type(_t);
_at=X56result_type(r137arg1(C));
/*[IF*/
/*AF*//*AE*/
/*FI]*/
_rf=r137run_feature_for(C,_t,a1);
/*[IF*/
if(((C)->_run_feature/*16*/)==((void*)(NULL))){
C->_target=_t;
C->_arguments=_a;
C->_run_feature=_rf;
r137run_feature_match(C,a1);
R=(T0*)C;
}
 else if(((_t)==((void*)((C)->_target/*4*/)))&&((_a)==((void*)((C)->_arguments/*8*/)))){
R=(T0*)C;
}
else{
{T137*n=malloc(sizeof(*n));
*n=M137;
r137with(n,_t,(C)->_feature_name/*12*/,_a,_rf,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


void r137compile_to_c_old(T137* C){
X56compile_to_c_old((C)->_target/*4*/);
/*[IF*/
{/*AT*/X149compile_to_c_old((C)->_arguments/*8*/);
}
/*FI]*/
}
/*No:CALL_INFIX_FREEOP.is_pre_computable*/
/*No:CALL_INFIX_FREEOP.fz_bad_argument*/


void r137collect_c_tmp(T137* C){
/*[IF*/
if(((C)->_run_feature/*16*/)!=((void*)(NULL))){
X51collect_c_tmp((C)->_run_feature/*16*/);
}
/*FI]*/
X56collect_c_tmp((C)->_target/*4*/);
/*[IF*/
if(((C)->_arguments/*8*/)!=((void*)(NULL))){
X149collect_c_tmp((C)->_arguments/*8*/);
}
/*FI]*/
}
/*No:CALL_INFIX_FREEOP.fz_iinaiv*/


T0* r137result_type(T137* C){
T0* R=NULL;
T0* _tla=NULL;
R=X51result_type((C)->_run_feature/*16*/);
/*[IF*/
if(X54is_like_current(R)){
R=/*X51current_type*/((T0*)((T324*)((C)->_run_feature/*16*/))->_current_type/*4*/);
}
else{
_tla=R;
if(NULL!=(_tla))switch(((T0*)_tla)->id) {
case 258: 
break;
default:
_tla=NULL;
};/*[IF*/
if((_tla)!=((void*)(NULL))){
R=X54run_type(X56result_type(r137arg1(C)));
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_FREEOP.static_value_mem*/
/*No:CALL_INFIX_FREEOP.run_feature*/


T0* r137runnable_args(T0* a1,T0* a2){
T0* R=NULL;
R=X149to_runnable(a1,a2);
/*[IF*/
if((R)==((void*)(NULL))){
r21add_position(X149start_position(a1));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms13_13065);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_FREEOP.fz_07*/
/*No:CALL_INFIX_FREEOP.arg_count*/


void r137with(T137* 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;
r137run_feature_match(C,a5);
}
/*No:CALL_INFIX_FREEOP.is_result*/
/*No:CALL_INFIX_FREEOP.fatal_error*/


void r137mapping_c_target(T137* C,T0* a1){
T0* _actual_type=NULL;
T6 _flag=0;
_flag=r25call_invariant_start(a1);
_actual_type=X54run_type(r137result_type(C));
/*[IF*/
if(X54is_reference(_actual_type)){
/*[IF*/
if(X54is_reference(a1)){
X54mapping_cast(a1);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T137* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
X54to_expanded(_actual_type);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T137* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}
else{
/*[IF*/
if(X54is_reference(a1)){
X54to_reference(_actual_type);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T137* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
/*[IF*/
if(X54need_c_struct(a1)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\46';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T137* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T137* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(_flag){
/*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T45* C1=(T45*)(oBC25out_c);
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}


void r137run_feature_match(T137* C,T0* a1){
r137run_feature_has_result(C);
X149match_with((C)->_arguments/*8*/,(C)->_run_feature/*16*/,a1);
}
/*No:CALL_INFIX_FREEOP.arguments*/


T0* r137runnable_expression(T0* a1,T0* a2){
T0* R=NULL;
R=X56to_runnable(a1,a2);
/*[IF*/
if((R)==((void*)(NULL))){
r21add_position(X56start_position(a1));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms118_16515);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_FREEOP.can_be_dropped*/


void r137c_declare_for_old(T137* C){
X56c_declare_for_old((C)->_target/*4*/);
/*[IF*/
{/*AT*/X149c_declare_for_old((C)->_arguments/*8*/);
}
/*FI]*/
}
/*No:CALL_INFIX_FREEOP.implicit_cast*/
/*No:CALL_INFIX_FREEOP.dca_inline_argument*/
/*No:CALL_INFIX_FREEOP.compile_to_c*/
/*No:CALL_INFIX_FREEOP.isa_dca_inline_argument*/


T0* r137arg1(T137* C){
T0* R=NULL;
R=/*X149first*/((T0*)/*(IRF4.3first*/((T149*)((C)->_arguments/*8*/))->_first_one/*4*//*)*/);
return R;
}


void r137run_feature_has_result(T137* C){
/*[IF*/
if((X51result_type((C)->_run_feature/*16*/))==((void*)(NULL))){
r21add_position(X51start_position((C)->_run_feature/*16*/));
r21add_position(((T138*)((C)->_feature_name/*12*/))->_start_position/*8*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms117_53650);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
}


T0* r137run_feature_for(T137* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _rc=NULL;
_rc=X54run_class(X56result_type(a1));
R=r24get_rf(((T24*)_rc),a1,(C)->_feature_name/*12*/,a2);
return R;
}
/*No:CALL_INFIX_FREEOP.target*/


void r137error(T0* a1,T0* a2){
r21add_position(a1);
r21error((T21*)(oBC12eh),a2);
}


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


void r137mapping_c_arg(T137* C,T0* a1){
T0* _actual_type=NULL;
_actual_type=X54run_type(r137result_type(C));
/*[IF*/
if(X54is_reference(_actual_type)){
/*[IF*/
if(X54is_reference(a1)){
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T137* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
}
else{
X54to_expanded(_actual_type);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T137* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}
else{
/*[IF*/
if(X54is_reference(a1)){
X54to_reference(_actual_type);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T137* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
/*[IF*/
if(X54need_c_struct(a1)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\46';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T137* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T137* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*No:CALL_INFIX_FREEOP.is_void*/


void r137afd_check(T137* C){
T0* _running=NULL;
T0* _rc=NULL;
_rc=X54run_class(X56result_type((C)->_target/*4*/));
_running=(((T24*)_rc))->_running/*12*/;
/*[IF*/
if((_running)==((void*)(NULL))){
r21add_position(X56start_position((C)->_target/*4*/));
/*[IRF3.6append*/{T0* b1=((T0*)ms118_181815);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X54run_time_mark((((T24*)_rc))->_current_type/*0*/);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms13_20094);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21print_as_warning((T21*)(oBC12eh));
r24set_at_run_time(((T24*)_rc));
}
 else if((r328count(((T328*)_running)))>(1)){
r331update((C)->_target/*4*/,(C)->_run_feature/*16*/);
}
/*FI]*/
X56afd_check((C)->_target/*4*/);
/*[IF*/
{/*AT*/X149afd_check((C)->_arguments/*8*/);
}
/*FI]*/
}
/*No:E_PRECURSOR_PROCEDURE.nb_errors*/
/*No:E_PRECURSOR_PROCEDURE.arguments*/
/*No:E_PRECURSOR_PROCEDURE.start_position*/


T0* r177add_comment(T177* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r39count(((T39*)((((T82*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
/*AF*/else{
{T225*n=malloc(sizeof(*n));
*n=M225;
r225make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}
/*No:E_PRECURSOR_PROCEDURE.use_current*/

