/*
-- ANSI C code generated by :
-- SmallEiffel The GNU Eiffel Compiler -- Release (- 0.79)      --
-- Copyright (C), 1994-98 - LORIA - UHP - CRIN - INRIA - FRANCE --
-- Dominique COLNET and Suzanne COLLIN -    colnet@loria.fr     --
--                 http://www.loria.fr/SmallEiffel              --
*/
#include "short.h"
/*No:CREATION_CALL_2.start_position*/
/*No:CREATION_CALL_2.type*/


T0* r238add_comment(T238* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r34count(((T34*)((((T52*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
/*AF*/else{
{T213*n=malloc(sizeof(*n));
*n=M213;
r213make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


void r238check_created_type(T238* C,T0* a1){
T0* _rt=NULL;
_rt=X46run_type(a1);
/*[IF*/
if(((T59*)(oBC11small_eiffel))->_short_flag/*0*/){
}
 else if(((T22*)(X46base_class(_rt)))->_is_deferred/*16*/){
r67add_type(_rt,((T0*)ms237_11858));
r238warning((C)->_start_position/*4*/,((T0*)ms237_30996));
}
/*FI]*/
/*[IF*/
if(X46is_formal_generic(a1)){
r67add_position((C)->_start_position/*4*/);
/*[IRF3.6append*/{T0* b1=((T0*)ms237_77140);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
r67add_type(a1,((T0*)ms237_180));
r67print_as_fatal_error((T67*)(oBC11eh));
}
/*FI]*/
r310set_at_run_time((T310*)(X46run_class(_rt)));
}


T0* r238to_runnable(T238* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((C)->_current_type/*12*/)==((void*)(NULL))){
r238check_writable(C,a1);
r238check_explicit_type(C);
r238check_created_type(C,(C)->_type/*16*/);
r238check_creation_clause(C,(C)->_type/*16*/);
R=(T0*)C;
}
else{
{T238*n=malloc(sizeof(*n));
*n=M238;
r238make(n,(C)->_start_position/*4*/,(C)->_type/*16*/,(C)->_writable/*8*/);
R=(T0*)n;
}
R=r238to_runnable(((T238*)R),a1);
}
/*FI]*/
return R;
}


void r238warning(T0* a1,T0* a2){
r67add_position(a1);
r67warning((T67*)(oBC11eh),a2);
}
/*No:CREATION_CALL_2.current_type*/
/*No:CREATION_CALL_2.writable*/


void r238error(T0* a1,T0* a2){
r67add_position(a1);
r67error((T67*)(oBC11eh),a2);
}
/*No:CREATION_CALL_2.end_mark_comment*/


void r238make(T238* C,T0* a1,T0* a2,T0* a3){
C->_start_position=a1;
C->_type=a2;
C->_writable=a3;
}


void r238check_explicit_type(T238* C){
T0* _t=NULL;
T0* _ct=NULL;
_ct=/*X312current_type*/((T0*)((T326*)(r59top_rf((T59*)(oBC11small_eiffel))))->_current_type/*4*/);
_t=X46to_runnable((C)->_type/*16*/,_ct);
/*[IF*/
if(((_t)==((void*)(NULL)))||(!(X46is_run_type(_t)))){
r67add_position(X46start_position((C)->_type/*16*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms239_33726);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}
else{
C->_type=_t;
}
/*FI]*/
/*[IF*/
if(!(X46is_a((C)->_type/*16*/,X53result_type((C)->_writable/*8*/)))){
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms239_34704);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
}


void r238check_writable(T238* C,T0* a1){
T0* _w=NULL;
C->_current_type=a1;
_w=X53to_runnable((C)->_writable/*8*/,a1);
/*[IF*/
if((_w)==((void*)(NULL))){
r67add_position(X53start_position((C)->_writable/*8*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms237_64251);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}
else{
C->_writable=_w;
}
/*FI]*/
}


void r238check_creation_clause(T238* C,T0* a1){
/*[IF*/
if(/*(IRF4.7has_creation_clause*/(((T22*)(X46base_class(a1)))->_creation_clause_list/*44*/)!=(NULL)/*)*/){
/*[IRF3.6append*/{T0* b1=((T0*)ms236_37098);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
r67add_type(a1,((T0*)ms236_162));
r238error((C)->_start_position/*4*/,((T0*)ms236_46305));
}
/*FI]*/
}
/*No:CREATION_CALL_2.fatal_error*/
/*No:CALL_INFIX_XOR.feature_name*/


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


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


T2 r106to_integer(T106* C){
T2 R=0;
r106error(r106start_position(C),((T0*)ms12_45846));
return R;
}


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


T0* r106result_type(T106* C){
T0* R=NULL;
T0* _tla=NULL;
R=X312result_type((C)->_run_feature/*16*/);
/*[IF*/
if(X46is_like_current(R)){
R=/*X312current_type*/((T0*)((T326*)((C)->_run_feature/*16*/))->_current_type/*4*/);
}
else{
_tla=R;
if(NULL!=(_tla))switch(((T0*)_tla)->id) {
case 246: 
break;
default:
_tla=NULL;
};/*[IF*/
if((_tla)!=((void*)(NULL))){
R=X46run_type(X53result_type(/*(IRF4.6arg1*//*(IRF4.3first*/(((T136*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/));
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_XOR.run_feature*/


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


void r106bracketed_short(T106* C){
r39hook_or((T39*)(oBC11short_print),((T0*)ms53_6792),((T0*)ms53_41));
r106short(C);
r39hook_or((T39*)(oBC11short_print),((T0*)ms53_8645),((T0*)ms53_42));
}


void r106with(T106* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5){
C->_target=a1;
C->_feature_name=a2;
C->_arguments=a3;
C->_run_feature=a4;
r106run_feature_match(C,a5);
}
/*No:CALL_INFIX_XOR.fatal_error*/


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


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


void r106run_feature_has_result(T106* C){
/*[IF*/
if((X312result_type((C)->_run_feature/*16*/))==((void*)(NULL))){
r67add_position(X312start_position((C)->_run_feature/*16*/));
r67add_position(((T125*)((C)->_feature_name/*12*/))->_start_position/*8*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms104_53650);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
}


T0* r106run_feature_for(T106* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _rc=NULL;
_rc=X46run_class(X53result_type(a1));
R=r310get_rf(((T310*)_rc),a1,(C)->_feature_name/*12*/,a2);
return R;
}
/*No:CALL_INFIX_XOR.target*/


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


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


T0* r106operator(void){
T0* R=NULL;
R=((T0*)ms13_1053a);
return R;
}


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


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


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


T0* r162to_real_constant(T162* C){
T0* R=NULL;
{T161*n=malloc(sizeof(*n));
*n=M161;
r161make(n,(C)->_start_position/*4*/,r2to_string((C)->_value/*8*/));
R=(T0*)n;
}
return R;
}
/*No:INTEGER_CONSTANT.to_runnable*/
/*No:INTEGER_CONSTANT.fz_iinaiv*/
int fBC162result_type=0;
T0*oBC162result_type=NULL;


T0* r162result_type(void){
if(fBC162result_type==0){
fBC162result_type=1;
{T256*n=malloc(sizeof(*n));
*n=M256;
r256make(n,NULL);
oBC162result_type=(T0*)n;
}
}
return oBC162result_type;}


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


void r162make(T162* C,T2 a1,T0* a2){
C->_value=a1;
C->_start_position=a2;
}


void r162bracketed_short(T162* C){
r39hook_or((T39*)(oBC11short_print),((T0*)ms53_6792),((T0*)ms53_41));
/*[IRF3.6short*/{T162* C1=C;
r39a_base_type_constant((T39*)(oBC11short_print),/*(IRF4.6to_string*/r2to_string(((T2)((C1)->_value/*8*/)))/*)*/);
}/*]*/
r39hook_or((T39*)(oBC11short_print),((T0*)ms53_8645),((T0*)ms53_42));
}
/*No:INTEGER_CONSTANT.is_current*/


void r162unary_minus(T162* C){
C->_value=-((C)->_value/*8*/);
}
/*No:INTEGER_CONSTANT.is_void*/


void r162short_target(T162* C){
r162bracketed_short(C);
/*[IRF3.6a_dot*/{T39* C1=(T39*)(oBC11short_print);
r39hook_or(C1,((T0*)ms39_999a),((T0*)ms12_47));
}/*]*/
}
/*No:INTEGER_CONSTANT.short*/
/*No:INTEGER_CONSTANT.value*/
/*No:INTEGER_CONSTANT.atomic_precedence*/


T0* r258generic_list(T258* C){
T0* R=NULL;
r258fatal_error_generic_list(C);
return R;
}


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


void r258used_as_reference(void){
if (fBC258used_as_reference==0){
fBC258used_as_reference=1;
r258load_ref(((T0*)ms13_12969));
}}


T6 r258is_a_in(T258* C,T0* a1,T0* a2){
T6 R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*[IF*/
if((r258written_mark())==((void*)(X46written_mark(a1)))){
R=1;
}
else{
_ct=(((T310*)a2))->_current_type/*0*/;
_t1=r258to_runnable(C,_ct);
_t2=X46to_runnable(a1,_ct);
/*[IF*/
if((X46run_time_mark(_t1))==((void*)(X46run_time_mark(_t2)))){
R=1;
}
else{
R=X46is_a(_t1,_t2);
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:TYPE_POINTER.id*/
/*No:TYPE_POINTER.is_pointer*/


T0* r258look_up_for(T258* C,T0* a1,T0* a2){
T0* R=NULL;
R=r22look_up_for((T22*)(r258base_class(C)),a1,a2);
return R;
}


T0* r258to_runnable(T258* C,T0* a1){
T0* R=NULL;
R=(T0*)C;
r258check_type(C);
return R;
}
/*No:TYPE_POINTER.run_type*/


T0* r258run_class(T258* C){
T0* R=NULL;
R=r59run_class((T0*)C);
return R;
}


T6 r258has_creation(T258* C,T0* a1){
T6 R=0;
r67add_position(X77start_position(a1));
r258error(/*(IRF4.6start_position*/(((T47*)((C)->_base_class_name/*4*/)))->_start_position/*4*//*)*/,((T0*)ms253_100044));
return R;
}
/*No:TYPE_POINTER.expanded_initializer*/
/*No:TYPE_POINTER.us_pointer_ref*/
/*No:TYPE_POINTER.us_item*/
/*No:TYPE_POINTER.is_like_current*/
/*No:TYPE_POINTER.is_boolean*/
/*No:TYPE_POINTER.is_generic*/
/*No:TYPE_POINTER.is_bit*/
/*No:TYPE_POINTER.is_real*/


T0* r258smallest_ancestor(T258* C,T0* a1){
T0* R=NULL;
T0* _rto=NULL;
_rto=X46run_type(a1);
/*[IF*/
if(X46is_pointer(_rto)){
R=(T0*)C;
}
else{
R=r261smallest_ancestor((T261*)(r258type_pointer_ref()),_rto);
}
/*FI]*/
return R;
}
/*No:TYPE_POINTER.is_any*/
/*No:TYPE_POINTER.nb_errors*/


T0* r258run_time_mark(void){
T0* R=NULL;
R=((T0*)ms13_6881);
return R;
}
/*No:TYPE_POINTER.is_expanded*/
/*No:TYPE_POINTER.is_basic_eiffel_expanded*/
int fBC11type_pointer_ref=0;
T0*oBC11type_pointer_ref=NULL;


T0* r258type_pointer_ref(void){
if(fBC11type_pointer_ref==0){
T0* _pointer_ref=NULL;
fBC11type_pointer_ref=1;
{T47*n=malloc(sizeof(*n));
*n=M47;
r47make(n,((T0*)ms13_12969),NULL);
_pointer_ref=(T0*)n;
}
{T261*n=malloc(sizeof(*n));
*n=M261;
/*[IRF3.3make*/((((T261*)(n)))->_base_class_name)=(_pointer_ref);
/*]*/
oBC11type_pointer_ref=(T0*)n;
}
}
return oBC11type_pointer_ref;}
/*No:TYPE_POINTER.short_hook*/
/*No:TYPE_POINTER.is_string*/
/*No:TYPE_POINTER.is_integer*/
/*No:TYPE_POINTER.is_like_feature*/
/*No:TYPE_POINTER.fz_dot*/
/*No:TYPE_POINTER.is_anchored*/
/*No:TYPE_POINTER.is_run_type*/


T6 r258is_a(T258* C,T0* a1){
T6 R=0;
/*[IF*/
if(X46is_pointer(a1)){
R=1;
}
else{
R=r22is_subclass_of((T22*)(r258base_class(C)),X46base_class(a1));
/*[IF*/
if(R){
r258used_as_reference();
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(!(R)){
r67add_type((T0*)C,((T0*)ms258_24066));
r67add_type(a1,((T0*)ms12_47));
}
/*FI]*/
return R;
}
/*No:TYPE_POINTER.us_pointer*/
/*No:TYPE_POINTER.is_character*/
/*No:TYPE_POINTER.is_reference*/


T0* r258written_mark(void){
T0* R=NULL;
R=((T0*)ms13_6881);
return R;
}


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


void r258make(T258* C,T0* a1){
{T47*n=malloc(sizeof(*n));
*n=M47;
r47make(n,((T0*)ms13_6881),a1);
C->_base_class_name=(T0*)n;
}
}
/*No:TYPE_POINTER.is_none*/
/*No:TYPE_POINTER.is_array*/


void r258fatal_error_generic_list(T258* C){
r67add_type((T0*)C,((T0*)ms46_29184));
r67print_as_fatal_error((T67*)(oBC11eh));
}
/*No:TYPE_POINTER.is_like_argument*/


void r258load_ref(T0* a1){
T0* _rf=NULL;
T0* _rc=NULL;
T0* _cn=NULL;
{T47*n=malloc(sizeof(*n));
*n=M47;
r47make(n,a1,NULL);
_cn=(T0*)n;
}
_rc=r22run_class((T22*)(r47base_class(((T47*)_cn))));
r310set_at_run_time(((T310*)_rc));
_rf=r310get_feature_with(((T310*)_rc),((T0*)ms13_1764));
}
int fBC258check_type=0;


void r258check_type(T258* C){
if (fBC258check_type==0){
T0* _rc=NULL;
T0* _bc=NULL;
fBC258check_type=1;
_bc=r258base_class(C);
/*[IF*/
if((/*(IRF4.9nb_errors*/((T67*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
_rc=r258run_class(C);
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T67*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(!((((T22*)_bc))->_is_expanded/*20*/)){
r258error(/*(IRF4.6start_position*/(((T47*)((C)->_base_class_name/*4*/)))->_start_position/*4*//*)*/,((T0*)ms258_38975));
}
/*FI]*/
}
/*FI]*/
}}
/*No:TYPE_POINTER.is_double*/


void r258short(T258* C){
r39hook((T39*)(oBC11short_print),((T0*)ms46_891));
/*[IRF3.6short_hook*/{T258* C1=C;
r39a_class_name((T39*)(oBC11short_print),(C1)->_base_class_name/*4*/);
}/*]*/
r39hook((T39*)(oBC11short_print),((T0*)ms46_888));
}


T0* r256generic_list(T256* C){
T0* R=NULL;
r256fatal_error_generic_list(C);
return R;
}


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


void r256used_as_reference(void){
if (fBC256used_as_reference==0){
fBC256used_as_reference=1;
r256load_ref(((T0*)ms13_12760));
}}


T6 r256is_a_in(T256* C,T0* a1,T0* a2){
T6 R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*[IF*/
if((r256written_mark())==((void*)(X46written_mark(a1)))){
R=1;
}
else{
_ct=(((T310*)a2))->_current_type/*0*/;
_t1=r256to_runnable(C,_ct);
_t2=X46to_runnable(a1,_ct);
/*[IF*/
if((X46run_time_mark(_t1))==((void*)(X46run_time_mark(_t2)))){
R=1;
}
else{
R=X46is_a(_t1,_t2);
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:TYPE_INTEGER.id*/
/*No:TYPE_INTEGER.is_pointer*/


T0* r256look_up_for(T256* C,T0* a1,T0* a2){
T0* R=NULL;
R=r22look_up_for((T22*)(r256base_class(C)),a1,a2);
return R;
}


T0* r256to_runnable(T256* C,T0* a1){
T0* R=NULL;
R=(T0*)C;
r256check_type(C);
return R;
}
/*No:TYPE_INTEGER.run_type*/


T0* r256run_class(T256* C){
T0* R=NULL;
R=r59run_class((T0*)C);
return R;
}


T6 r256has_creation(T256* C,T0* a1){
T6 R=0;
r67add_position(X77start_position(a1));
r256error(/*(IRF4.6start_position*/(((T47*)((C)->_base_class_name/*4*/)))->_start_position/*4*//*)*/,((T0*)ms253_100044));
return R;
}
/*No:TYPE_INTEGER.expanded_initializer*/
/*No:TYPE_INTEGER.us_item*/
/*No:TYPE_INTEGER.is_like_current*/
/*No:TYPE_INTEGER.is_boolean*/
/*No:TYPE_INTEGER.is_generic*/
/*No:TYPE_INTEGER.us_integer*/
/*No:TYPE_INTEGER.is_bit*/
/*No:TYPE_INTEGER.is_real*/


T0* r256smallest_ancestor(T256* C,T0* a1){
T0* R=NULL;
T0* _rto=NULL;
_rto=X46run_type(a1);
/*[IF*/
if(X46is_integer(_rto)){
R=(T0*)C;
}
 else if(X46is_real(_rto)){
R=a1;
}
 else if(X46is_double(_rto)){
R=a1;
}
else{
R=r261smallest_ancestor((T261*)(r256type_integer_ref()),_rto);
}
/*FI]*/
return R;
}
/*No:TYPE_INTEGER.is_any*/
/*No:TYPE_INTEGER.nb_errors*/


T0* r256run_time_mark(void){
T0* R=NULL;
R=((T0*)ms13_6748);
return R;
}
/*No:TYPE_INTEGER.is_expanded*/
/*No:TYPE_INTEGER.is_basic_eiffel_expanded*/
int fBC11type_integer_ref=0;
T0*oBC11type_integer_ref=NULL;


T0* r256type_integer_ref(void){
if(fBC11type_integer_ref==0){
T0* _integer_ref=NULL;
fBC11type_integer_ref=1;
{T47*n=malloc(sizeof(*n));
*n=M47;
r47make(n,((T0*)ms13_12760),NULL);
_integer_ref=(T0*)n;
}
{T261*n=malloc(sizeof(*n));
*n=M261;
/*[IRF3.3make*/((((T261*)(n)))->_base_class_name)=(_integer_ref);
/*]*/
oBC11type_integer_ref=(T0*)n;
}
}
return oBC11type_integer_ref;}
/*No:TYPE_INTEGER.short_hook*/
/*No:TYPE_INTEGER.us_integer_ref*/
/*No:TYPE_INTEGER.is_string*/
/*No:TYPE_INTEGER.is_integer*/
/*No:TYPE_INTEGER.is_like_feature*/
/*No:TYPE_INTEGER.fz_dot*/
/*No:TYPE_INTEGER.is_anchored*/
/*No:TYPE_INTEGER.is_run_type*/


T6 r256is_a(T256* C,T0* a1){
T6 R=0;
/*[IF*/
if(((X46is_integer(a1))||(X46is_double(a1)))||(X46is_real(a1))){
R=1;
}
else{
R=r22is_subclass_of((T22*)(r256base_class(C)),X46base_class(a1));
/*[IF*/
if(R){
r256used_as_reference();
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(!(R)){
r67add_type((T0*)C,((T0*)ms12_17730));
r67add_type(a1,((T0*)ms12_47));
}
/*FI]*/
return R;
}
/*No:TYPE_INTEGER.is_character*/
/*No:TYPE_INTEGER.is_reference*/


T0* r256written_mark(void){
T0* R=NULL;
R=((T0*)ms13_6748);
return R;
}


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


void r256make(T256* C,T0* a1){
{T47*n=malloc(sizeof(*n));
*n=M47;
r47make(n,((T0*)ms13_6748),a1);
C->_base_class_name=(T0*)n;
}
}
/*No:TYPE_INTEGER.is_none*/
/*No:TYPE_INTEGER.is_array*/
/*No:TYPE_INTEGER.fz_inako*/


void r256fatal_error_generic_list(T256* C){
r67add_type((T0*)C,((T0*)ms46_29184));
r67print_as_fatal_error((T67*)(oBC11eh));
}
/*No:TYPE_INTEGER.is_like_argument*/


void r256load_ref(T0* a1){
T0* _rf=NULL;
T0* _rc=NULL;
T0* _cn=NULL;
{T47*n=malloc(sizeof(*n));
*n=M47;
r47make(n,a1,NULL);
_cn=(T0*)n;
}
_rc=r22run_class((T22*)(r47base_class(((T47*)_cn))));
r310set_at_run_time(((T310*)_rc));
_rf=r310get_feature_with(((T310*)_rc),((T0*)ms13_1764));
}
int fBC256check_type=0;


void r256check_type(T256* C){
if (fBC256check_type==0){
T0* _rc=NULL;
T0* _bc=NULL;
fBC256check_type=1;
_bc=r256base_class(C);
/*[IF*/
if((/*(IRF4.9nb_errors*/((T67*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
_rc=r256run_class(C);
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T67*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(!((((T22*)_bc))->_is_expanded/*20*/)){
r256error(/*(IRF4.6start_position*/(((T47*)((C)->_base_class_name/*4*/)))->_start_position/*4*//*)*/,((T0*)ms256_38500));
}
/*FI]*/
}
/*FI]*/
}}
/*No:TYPE_INTEGER.is_double*/


void r256short(T256* C){
r39hook((T39*)(oBC11short_print),((T0*)ms46_891));
/*[IRF3.6short_hook*/{T256* C1=C;
r39a_class_name((T39*)(oBC11short_print),(C1)->_base_class_name/*4*/);
}/*]*/
r39hook((T39*)(oBC11short_print),((T0*)ms46_888));
}


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=r266base_class_name();
/*[IF*/
if((_bcn)!=((void*)(NULL))){
R=r47base_class(((T47*)_bcn));
}
else{
/*[IRF3.6append*/{T0* b1=((T0*)ms46_37098);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
r67add_type((T0*)C,((T0*)ms12_47));
r67print_as_fatal_error((T67*)(oBC11eh));
}
/*FI]*/
return R;
}
int fBC265base_class_name=0;
T0*oBC265base_class_name=NULL;


T0* r266base_class_name(void){
if(fBC265base_class_name==0){
fBC265base_class_name=1;
{T47*n=malloc(sizeof(*n));
*n=M47;
r47make(n,((T0*)ms13_2055),NULL);
oBC265base_class_name=(T0*)n;
}
}
return oBC265base_class_name;}
/*No:TYPE_BIT_2.start_position*/
/*No:TYPE_BIT_2.is_formal_generic*/


void r266used_as_reference(T266* C){
T0* _rf=NULL;
T0* _rc=NULL;
T0* _type_bit_ref=NULL;
/*[IF*/
if(r62fast_has((T62*)(oBC265mem_ref_nb),(C)->_nb/*20*/)){
}
else{
r62add_last((T62*)(oBC265mem_ref_nb),(C)->_nb/*20*/);
{T327*n=malloc(sizeof(*n));
*n=M327;
r327make(n,(T0*)C);
_type_bit_ref=(T0*)n;
}
r328add_last((T328*)(oBC265mem_type_bit_ref),_type_bit_ref);
_rc=r327run_class(((T327*)_type_bit_ref));
r310set_at_run_time(((T310*)_rc));
_rf=r310get_feature_with(((T310*)_rc),((T0*)ms13_2695));
}
/*FI]*/
}


T6 r266is_a_in(T266* C,T0* a1,T0* a2){
T6 R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*[IF*/
if(((C)->_written_mark/*8*/)==((void*)(X46written_mark(a1)))){
R=1;
}
else{
_ct=(((T310*)a2))->_current_type/*0*/;
_t1=r266to_runnable(C,_ct);
_t2=X46to_runnable(a1,_ct);
/*[IF*/
if((X46run_time_mark(_t1))==((void*)(X46run_time_mark(_t2)))){
R=1;
}
else{
R=X46is_a(_t1,_t2);
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:TYPE_BIT_2.us_put_1*/


T2 r266id(T266* C){
T2 R=0;
R=((T310*)(r266run_class(C)))->_id/*4*/;
return R;
}
/*No:TYPE_BIT_2.is_pointer*/


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


T0* r266to_runnable(T266* C,T0* a1){
T0* R=NULL;
T0* _ic=NULL;
T0* _rf8=NULL;
T0* _rf1=NULL;
T0* _rf=NULL;
/*[IF*/
if(((C)->_run_time_mark/*12*/)==((void*)(NULL))){
_rf=r135run_feature((T135*)((C)->_n/*16*/),a1);
/*[IF*/
if((_rf)==((void*)(NULL))){
r67add_position(((T135*)((C)->_n/*16*/))->_start_position/*8*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms12_9790);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}
else{
_rf1=_rf;
if(NULL!=(_rf1))switch(((T0*)_rf1)->id) {
case 326: 
break;
default:
_rf1=NULL;
};_rf8=_rf;
if(NULL!=(_rf8))switch(((T0*)_rf8)->id) {
case 325: 
break;
default:
_rf8=NULL;
};/*[IF*/
if((_rf1)!=((void*)(NULL))){
_ic=X188value((((T326*)_rf1))->_base_feature/*32*/,1);
if(NULL!=(_ic))switch(((T0*)_ic)->id) {
case 162: 
break;
default:
_ic=NULL;
};/*[IF*/
if((_ic)==((void*)(NULL))){
r67add_position(((T135*)((C)->_n/*16*/))->_start_position/*8*/);
r67add_position(r326start_position(((T326*)_rf1)));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms12_45846);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
C->_nb=(((T162*)_ic))->_value/*8*/;
/*[IF*/
if(((C)->_nb/*20*/)<(0)){
r67add_position(((T135*)((C)->_n/*16*/))->_start_position/*8*/);
r67add_position(r326start_position(((T326*)_rf1)));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms266_46278);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
}
 else if((_rf8)!=((void*)(NULL))){
C->_nb=r325integer_value(((T325*)_rf8),((T135*)((C)->_n/*16*/))->_start_position/*8*/);
}
else{
r67add_position(((T135*)((C)->_n/*16*/))->_start_position/*8*/);
r67add_position(X312start_position(_rf));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms12_45846);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
r266set_run_time_mark(C);
R=(T0*)C;
r266to_runnable_1_2(C);
}
/*FI]*/
}
else{
{T266*n=malloc(sizeof(*n));
*n=M266;
r266make(n,(C)->_start_position/*4*/,(C)->_n/*16*/);
R=(T0*)n;
}
R=r266to_runnable(((T266*)R),a1);
}
/*FI]*/
return R;
}
/*No:TYPE_BIT_2.nb*/
/*No:TYPE_BIT_2.fz_iinaiv*/


void r266set_run_time_mark(T266* C){
r7copy((T7*)(((T0*)ms46_785024)),((T0*)ms12_1060));
r7append((T7*)(((T0*)ms46_785024)),r2to_string((C)->_nb/*20*/));
C->_run_time_mark=r78item(((T0*)ms46_785024));
}
/*No:TYPE_BIT_2.run_type*/


T0* r266run_class(T266* C){
T0* R=NULL;
R=r59run_class((T0*)C);
return R;
}
/*No:TYPE_BIT_2.has_creation*/
/*No:TYPE_BIT_2.expanded_initializer*/
T0*oBC265mem_ref_nb=NULL;
/*No:TYPE_BIT_2.is_like_current*/
/*No:TYPE_BIT_2.is_boolean*/
/*No:TYPE_BIT_2.is_generic*/
/*No:TYPE_BIT_2.us_bit_n*/
/*No:TYPE_BIT_2.is_bit*/
T0*oBC265mem_type_bit_ref=NULL;
/*No:TYPE_BIT_2.is_real*/


T0* r266smallest_ancestor(T266* C,T0* a1){
T0* R=NULL;
T0* _other_bit=NULL;
_other_bit=X46run_type(a1);
if(NULL!=(_other_bit))switch(((T0*)_other_bit)->id) {
case 264: case 266: 
break;
default:
_other_bit=NULL;
};/*[IF*/
if((_other_bit)!=((void*)(NULL))){
/*[IF*/
if(((C)->_nb/*20*/)<(X265nb(_other_bit))){
R=(T0*)C;
}
else{
R=_other_bit;
}
/*FI]*/
}
else{
R=r266type_any();
}
/*FI]*/
return R;
}
/*No:TYPE_BIT_2.is_any*/
/*No:TYPE_BIT_2.fatal_error*/
/*No:TYPE_BIT_2.run_time_mark*/
/*No:TYPE_BIT_2.n*/
/*No:TYPE_BIT_2.is_expanded*/
/*No:TYPE_BIT_2.is_basic_eiffel_expanded*/
int fBC11type_any=0;
T0*oBC11type_any=NULL;


T0* r266type_any(void){
if(fBC11type_any==0){
fBC11type_any=1;
{T247*n=malloc(sizeof(*n));
*n=M247;
r247make(n,NULL);
oBC11type_any=(T0*)n;
}
}
return oBC11type_any;}


void r266short_hook(T266* C){
r39a_class_name((T39*)(oBC11short_print),r266base_class_name());
r39hook_or((T39*)(oBC11short_print),((T0*)ms266_11176),((T0*)ms266_33));
r135short((T135*)((C)->_n/*16*/));
}
/*No:TYPE_BIT_2.fz_not_found*/
/*No:TYPE_BIT_2.is_string*/
/*No:TYPE_BIT_2.is_integer*/
/*No:TYPE_BIT_2.is_like_feature*/
/*No:TYPE_BIT_2.fz_dot*/
/*No:TYPE_BIT_2.fz_bit_foo*/
/*No:TYPE_BIT_2.is_anchored*/
/*No:TYPE_BIT_2.is_run_type*/


T6 r266is_a(T266* C,T0* a1){
T6 R=0;
T0* _other_bit=NULL;
/*[IF*/
if(X46is_bit(a1)){
_other_bit=X46run_type(a1);
if(NULL!=(_other_bit))switch(((T0*)_other_bit)->id) {
case 264: case 266: 
break;
default:
_other_bit=NULL;
};/*[IF*/
if(((C)->_nb/*20*/)<=(X265nb(_other_bit))){
R=1;
}
else{
r67add_type((T0*)C,((T0*)ms12_17730));
r67add_type(a1,((T0*)ms265_7780));
}
/*FI]*/
}
 else if(r22is_subclass_of((T22*)(r266base_class(C)),X46base_class(a1))){
R=1;
r266used_as_reference(C);
}
else{
r67add_type((T0*)C,((T0*)ms12_17730));
r67add_type(a1,((T0*)ms12_47));
}
/*FI]*/
return R;
}
/*No:TYPE_BIT_2.us_put_0*/
/*No:TYPE_BIT_2.is_character*/
/*No:TYPE_BIT_2.is_reference*/
/*No:TYPE_BIT_2.written_mark*/


void r266make(T266* C,T0* a1,T0* a2){
r7copy((T7*)(((T0*)ms46_785024)),((T0*)ms12_1060));
r7append((T7*)(((T0*)ms46_785024)),(((T135*)a2))->_to_string/*4*/);
C->_written_mark=r78item(((T0*)ms46_785024));
C->_start_position=a1;
C->_n=a2;
}
/*No:TYPE_BIT_2.is_none*/
/*No:TYPE_BIT_2.is_array*/
/*No:TYPE_BIT_2.fz_inako*/


void r266fatal_error_generic_list(T266* C){
r67add_type((T0*)C,((T0*)ms46_29184));
r67print_as_fatal_error((T67*)(oBC11eh));
}
/*No:TYPE_BIT_2.is_like_argument*/
/*No:TYPE_BIT_2.tmp_string*/
/*No:TYPE_BIT_2.us_bitn*/
/*No:TYPE_BIT_2.is_double*/


void r266to_runnable_1_2(T266* C){
T0* _rf=NULL;
T0* _rc=NULL;
_rc=r266run_class(C);
_rf=r310get_feature_with(((T310*)_rc),((T0*)ms13_2515));
_rf=r310get_feature_with(((T310*)_rc),((T0*)ms13_2520));
}


void r266short(T266* C){
r39hook((T39*)(oBC11short_print),((T0*)ms46_891));
r266short_hook(C);
r39hook((T39*)(oBC11short_print),((T0*)ms46_888));
}


void r39a_infix_name(T39* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5){
T0* _str=NULL;
T2 _i=0;
r39hook_or(C,a1,a2);
_str=(((T125*)a5))->_to_string/*4*/;
/*[IF*/
if((((T0*)ms13_374))==((void*)(_str))){
r39hook_or(C,((T0*)ms39_990),((T0*)ms13_374));
}
else{
_i=1;
while (!((_i)>((((T7*)_str))->_count/*4*/))) {
/*[IRF3.6put_character*/{T38* C1=(T38*)(oBC1std_output);
T3 b1=/*(IRF4.6item*/((((T7*)_str))->_storage/*0*/)[(_i)-(1)]/*)*/;
putc(b1,((FILE*)(stdout)));
}/*]*/
_i=(_i)+(1);
}
}
/*FI]*/
r39hook_or(C,a3,a4);
}
/*No:SHORT_PRINT.format_directory*/


void r39a_run_feature(T39* C,T0* a1){
T0* _ea=NULL;
T0* _rr=NULL;
T0* _hc=NULL;
T0* _rt=NULL;
T0* _args=NULL;
r39hook_or(C,((T0*)ms39_5845a),((T0*)ms39_306));
X77short(/*X312name*/((T0*)(((T326*)a1))->_name/*16*/));
_args=X312arguments(a1);
/*[IF*/
if((_args)==((void*)(NULL))){
r39hook_or(C,((T0*)ms39_5894a),((T0*)ms39_0aa));
}
else{
r175short(((T175*)_args));
}
/*FI]*/
_rt=X312result_type(a1);
/*[IF*/
if((_rt)==((void*)(NULL))){
r39hook_or(C,((T0*)ms39_6188),((T0*)ms39_11aa));
}
else{
r39hook_or(C,((T0*)ms39_6237),((T0*)ms39_186));
X46short(_rt);
r39hook_or(C,((T0*)ms39_6286),((T0*)ms39_11aaa));
}
/*FI]*/
_hc=/*X87header_comment*/((T0*)((T187*)(X312base_feature(a1)))->_header_comment/*12*/);
/*[IF*/
if((_hc)!=((void*)(NULL))){
r39hook(C,((T0*)ms39_5845));
r52short(((T52*)_hc),((T0*)ms39_5894),((T0*)ms39_4167),((T0*)ms39_5943),((T0*)ms39_11a));
r39hook(C,((T0*)ms39_5992));
}
else{
r39hook(C,((T0*)ms39_6041));
}
/*FI]*/
_rr=/*X312require_assertion*/((T0*)(((T326*)a1))->_require_assertion/*20*/);
/*[IF*/
if((_rr)==((void*)(NULL))){
r39hook(C,((T0*)ms39_5852));
}
else{
r314short(((T314*)_rr));
}
/*FI]*/
_ea=/*X312ensure_assertion*/((T0*)(((T326*)a1))->_ensure_assertion/*24*/);
/*[IF*/
if((_ea)==((void*)(NULL))){
r39hook_or(C,((T0*)ms39_5859),((T0*)ms39_0a));
}
else{
r203short(((T203*)_ea));
}
/*FI]*/
r39hook_or(C,((T0*)ms39_6300),((T0*)ms39_0));
}


void r39a_base_type_constant(T39* C,T0* a1){
T3 _c=0;
T2 _i=0;
_i=1;
while (!((_i)>((((T7*)a1))->_count/*4*/))) {
_c=/*(IRF4.6item*/((((T7*)a1))->_storage/*0*/)[(_i)-(1)]/*)*/;
/*[IF*/
if((_c)==('\56')){
r39hook_or(C,((T0*)ms39_999),((T0*)ms39_47));
}
else{
/*[IRF3.6put_character*/{T38* C1=(T38*)(oBC1std_output);
T3 b1=_c;
putc(b1,((FILE*)(stdout)));
}/*]*/
}
/*FI]*/
_i=(_i)+(1);
}
}
/*No:SHORT_PRINT.base_class*/


void r39a_prefix_name(T39* C,T0* a1){
T0* _str=NULL;
T3 _c=0;
T2 _i=0;
_str=(((T129*)a1))->_to_string/*4*/;
_i=1;
while (!((_i)>((((T7*)_str))->_count/*4*/))) {
_c=/*(IRF4.6item*/((((T7*)_str))->_storage/*0*/)[(_i)-(1)]/*)*/;
/*[IF*/
if((_c)==('\137')){
r39hook_or(C,((T0*)ms39_1688),((T0*)ms39_96a));
}
else{
/*[IRF3.6put_character*/{T38* C1=(T38*)(oBC1std_output);
T3 b1=_c;
putc(b1,((FILE*)(stdout)));
}/*]*/
}
/*FI]*/
_i=(_i)+(1);
}
/*[IRF3.6a_character*/{T3 b1='\40';
/*[IRF3.6put_character*/{T38* C2=(T38*)(oBC1std_output);
T3 c1=b1;
putc(c1,((FILE*)(stdout)));
}/*]*/
}/*]*/
}


T6 r39hook_exists(T39* C,T0* a1){
T6 R=0;
r7copy((T7*)(oBC39tmp_hook_path),(C)->_format_directory/*0*/);
r7append((T7*)(oBC39tmp_hook_path),a1);
r31connect_to((T31*)(oBC39tmp_hook),oBC39tmp_hook_path);
R=/*(IRF4.7is_connected*/(((T31*)(oBC39tmp_hook))->_path/*4*/)!=(NULL)/*)*/;
return R;
}
T0*oBC39tmp_hook=NULL;
T0*oBC1std_output=NULL;


T0* r39system_tools(void){
if(fBC11system_tools==0){
fBC11system_tools=1;
{T30*n=malloc(sizeof(*n));
*n=M30;
r30make(n);
oBC11system_tools=(T0*)n;
}
}
return oBC11system_tools;}


void r39a_class_name(T39* C,T0* a1){
T0* _str=NULL;
T3 _c=0;
T2 _i=0;
r39hook(C,((T0*)ms39_843));
r39hook_and(C,((T0*)ms39_876),(((T47*)a1))->_to_string/*0*/);
_str=(((T47*)a1))->_to_string/*0*/;
_i=1;
while (!((_i)>((((T7*)_str))->_count/*4*/))) {
_c=/*(IRF4.6item*/((((T7*)_str))->_storage/*0*/)[(_i)-(1)]/*)*/;
/*[IF*/
if((_c)==('\137')){
r39hook_or(C,((T0*)ms39_900),((T0*)ms39_96));
}
else{
/*[IRF3.6put_character*/{T38* C1=(T38*)(oBC1std_output);
T3 b1=_c;
putc(b1,((FILE*)(stdout)));
}/*]*/
}
/*FI]*/
_i=(_i)+(1);
}
r39hook(C,((T0*)ms39_840));
}
/*No:SHORT_PRINT.us_backslash_backslash*/


void r39hook(T39* C,T0* a1){
/*[IF*/
if(r39hook_exists(C,a1)){
r31read_character((T31*)(oBC39tmp_hook));
while (!(r31end_of_input((T31*)(oBC39tmp_hook)))) {
/*[IRF3.6put_character*/{T38* C1=(T38*)(oBC1std_output);
T3 b1=/*(IRF4.6last_character*/((T3)(((T31*)(oBC39tmp_hook))->_memory/*12*/))/*)*/;
putc(b1,((FILE*)(stdout)));
}/*]*/
r31read_character((T31*)(oBC39tmp_hook));
}
r31disconnect((T31*)(oBC39tmp_hook));
}
/*FI]*/
}


void r39finish(T39* C){
T0* _ci=NULL;
T0* _fgl=NULL;
_ci=((T310*)((C)->_run_class/*8*/))->_class_invariant/*16*/;
/*[IF*/
if((_ci)==((void*)(NULL))){
r39hook(C,((T0*)ms39_5880));
}
else{
r40short(((T40*)_ci),(C)->_base_class/*4*/);
}
/*FI]*/
r39hook(C,((T0*)ms39_5887));
/*[IF*/
if(((T22*)((C)->_base_class/*4*/))->_is_expanded/*20*/){
r39hook_or(C,((T0*)ms39_5936),((T0*)ms39_15696));
}
 else if(((T22*)((C)->_base_class/*4*/))->_is_deferred/*16*/){
r39hook_or(C,((T0*)ms39_5985),((T0*)ms39_15696a));
}
else{
r39hook_or(C,((T0*)ms39_6034),((T0*)ms39_4851));
}
/*FI]*/
r39hook(C,((T0*)ms39_6083));
r39a_class_name(C,((T22*)((C)->_base_class/*4*/))->_name/*24*/);
_fgl=((T22*)((C)->_base_class/*4*/))->_formal_generic_list/*28*/;
/*[IF*/
if((_fgl)!=((void*)(NULL))){
r42short(((T42*)_fgl));
}
/*FI]*/
r39hook_or(C,((T0*)ms39_6132),((T0*)ms39_11));
r39hook(C,((T0*)ms39_6328));
}
/*No:SHORT_PRINT.fz_dot*/
/*No:SHORT_PRINT.run_class*/


void r39a_integer(T2 a1){
T2 _i=0;
T3 _c=0;
T0* _s=NULL;
_s=((T0*)ms39_0aaa);
/*[IRF3.3clear*/((((T7*)(((T7*)_s))))->_count)=(0);
/*]*/
r2append_in(a1,_s);
_i=1;
while (!((_i)>((((T7*)_s))->_count/*4*/))) {
_c=/*(IRF4.6item*/((((T7*)_s))->_storage/*0*/)[(_i)-(1)]/*)*/;
/*[IRF3.6put_character*/{T38* C1=(T38*)(oBC1std_output);
T3 b1=_c;
putc(b1,((FILE*)(stdout)));
}/*]*/
_i=(_i)+(1);
}
}
/*No:SHORT_PRINT.make*/
T0*oBC39tmp_hook_path=NULL;


void r39a_feature(T39* C,T0* a1){
T0* _rf=NULL;
_rf=r310get_feature((T310*)((C)->_run_class/*8*/),a1);
r39a_run_feature(C,_rf);
}
/*No:SHORT_PRINT.a_character*/


void r39hook_or(T39* C,T0* a1,T0* a2){
/*[IF*/
if(r39hook_exists(C,a1)){
r31read_character((T31*)(oBC39tmp_hook));
while (!(r31end_of_input((T31*)(oBC39tmp_hook)))) {
/*[IRF3.6put_character*/{T38* C1=(T38*)(oBC1std_output);
T3 b1=/*(IRF4.6last_character*/((T3)(((T31*)(oBC39tmp_hook))->_memory/*12*/))/*)*/;
putc(b1,((FILE*)(stdout)));
}/*]*/
r31read_character((T31*)(oBC39tmp_hook));
}
r31disconnect((T31*)(oBC39tmp_hook));
}
else{
r38put_string((T38*)(oBC1std_output),a2);
}
/*FI]*/
}
/*No:SHORT_PRINT.a_dot*/
T0*oBC39tmp_string=NULL;


void r39start(T39* C,T0* a1,T0* a2,T0* a3){
T0* _fgl=NULL;
T0* _hc2=NULL;
C->_base_class=a2;
C->_run_class=a3;
C->_format_directory=r30format_directory((T30*)(r39system_tools()),a1);
r39hook(C,((T0*)ms39_5824a));
/*[IF*/
if((((T22*)a2))->_is_expanded/*20*/){
r39hook_or(C,((T0*)ms39_5824),((T0*)ms39_33875));
}
 else if((((T22*)a2))->_is_deferred/*16*/){
r39hook_or(C,((T0*)ms39_5873),((T0*)ms39_33325));
}
else{
r39hook_or(C,((T0*)ms39_5922),((T0*)ms39_16976));
}
/*FI]*/
r39hook(C,((T0*)ms39_5971));
r39a_class_name(C,(((T22*)a2))->_name/*24*/);
_fgl=(((T22*)a2))->_formal_generic_list/*28*/;
/*[IF*/
if((_fgl)!=((void*)(NULL))){
r42short(((T42*)_fgl));
}
/*FI]*/
r39hook_or(C,((T0*)ms39_6020),((T0*)ms39_11aaaaa));
_hc2=(((T22*)a2))->_heading_comment2/*32*/;
/*[IF*/
if((_hc2)!=((void*)(NULL))){
r39hook(C,((T0*)ms39_6069));
r52short(((T52*)_hc2),((T0*)ms39_6118),((T0*)ms39_2358),((T0*)ms39_6167),((T0*)ms39_11aaaa));
r39hook(C,((T0*)ms39_6216));
}
else{
r39hook(C,((T0*)ms39_6265));
}
/*FI]*/
}


void r39hook_and(T39* C,T0* a1,T0* a2){
/*[IF*/
if(r39hook_exists(C,a1)){
r7copy((T7*)(oBC39tmp_string),a2);
r7to_lower((T7*)(oBC39tmp_string));
r38put_string((T38*)(oBC1std_output),oBC39tmp_string);
r31read_character((T31*)(oBC39tmp_hook));
while (!(r31end_of_input((T31*)(oBC39tmp_hook)))) {
/*[IRF3.6put_character*/{T38* C1=(T38*)(oBC1std_output);
T3 b1=/*(IRF4.6last_character*/((T3)(((T31*)(oBC39tmp_hook))->_memory/*12*/))/*)*/;
putc(b1,((FILE*)(stdout)));
}/*]*/
r31read_character((T31*)(oBC39tmp_hook));
}
r31disconnect((T31*)(oBC39tmp_hook));
}
/*FI]*/
}


T0* r267generic_list(T267* C){
T0* R=NULL;
/*[IF*/
if(r267is_generic(C)){
R=X46generic_list((C)->_run_type/*12*/);
}
else{
r267fatal_error_generic_list(C);
}
/*FI]*/
return R;
}


T0* r267base_class(T267* C){
T0* R=NULL;
T0* _bcn=NULL;
_bcn=r267base_class_name(C);
/*[IF*/
if((_bcn)!=((void*)(NULL))){
R=r47base_class(((T47*)_bcn));
}
else{
/*[IRF3.6append*/{T0* b1=((T0*)ms46_37098);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
r67add_type((T0*)C,((T0*)ms12_47));
r67print_as_fatal_error((T67*)(oBC11eh));
}
/*FI]*/
return R;
}
/*No:TYPE_FORMAL_GENERIC.formal_name*/


T0* r267base_class_name(T267* C){
T0* R=NULL;
R=X46base_class_name((C)->_run_type/*12*/);
return R;
}
/*No:TYPE_FORMAL_GENERIC.start_position*/
/*No:TYPE_FORMAL_GENERIC.is_formal_generic*/


void r267used_as_reference(T267* C){
/*[IF*/
if(r267is_expanded(C)){
r310used_as_reference((T310*)(r267run_class(C)));
}
/*FI]*/
}


T6 r267is_a_in(T267* C,T0* a1,T0* a2){
T6 R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*[IF*/
if((/*(IRF4.6written_mark*/(((T47*)((C)->_formal_name/*4*/)))->_to_string/*0*//*)*/)==((void*)(X46written_mark(a1)))){
R=1;
}
else{
_ct=(((T310*)a2))->_current_type/*0*/;
_t1=r267to_runnable(C,_ct);
_t2=X46to_runnable(a1,_ct);
/*[IF*/
if((X46run_time_mark(_t1))==((void*)(X46run_time_mark(_t2)))){
R=1;
}
else{
R=X46is_a(_t1,_t2);
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:TYPE_FORMAL_GENERIC.rank*/


T2 r267id(T267* C){
T2 R=0;
R=((T310*)(r267run_class(C)))->_id/*4*/;
return R;
}


T6 r267is_pointer(T267* C){
T6 R=0;
R=X46is_pointer((C)->_run_type/*12*/);
return R;
}


T0* r267look_up_for(T267* C,T0* a1,T0* a2){
T0* R=NULL;
R=r22look_up_for((T22*)(r267base_class(C)),a1,a2);
return R;
}


T0* r267formal_arg(T267* C){
T0* R=NULL;
R=/*(IRF4.6item*/r44item(((T44*)(((T42*)(r267formal_generic_list(C)))->_list/*4*/)),(C)->_rank/*8*/)/*)*/;
return R;
}


T0* r267to_runnable(T267* C,T0* a1){
T0* R=NULL;
T0* _gl=NULL;
T0* _t=NULL;
T0* _p=NULL;
T0* _bc_ct=NULL;
T0* _bc_written=NULL;
_bc_written=r69base_class((T69*)(/*(IRF4.6start_position*/(((T47*)((C)->_formal_name/*4*/)))->_start_position/*4*//*)*/));
_bc_ct=X46base_class(a1);
/*[IF*/
if((_bc_written)==((void*)(_bc_ct))){
_gl=X46generic_list(a1);
/*[IF*/
if(((_gl)==((void*)(NULL)))||(((C)->_rank/*8*/)>((((T249*)_gl))->_upper/*8*/))){
r67add_position(X46start_position(a1));
r67add_position(/*(IRF4.6start_position*/(((T47*)((C)->_formal_name/*4*/)))->_start_position/*4*//*)*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms12_60544);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}
else{
R=r267make_runnable(C,r249item(((T249*)_gl),(C)->_rank/*8*/));
}
/*FI]*/
}
else{
_p=/*(IRF4.6first_parent_for*/r55first_parent_for(((T55*)((((T22*)_bc_ct))->_parent_list/*40*/)),_bc_written)/*)*/;
while (!((_p)==((void*)(NULL)))) {
_t=(((T56*)_p))->_type/*4*/;
_t=X46run_type(X46to_runnable(_t,a1));
/*[IF*/
if((R)==((void*)(NULL))){
R=r267to_runnable(C,_t);
_p=NULL;
}
else{
_p=/*(IRF4.6next_parent_for*/r55next_parent_for(((T55*)((((T22*)_bc_ct))->_parent_list/*40*/)),_bc_written,_p)/*)*/;
}
/*FI]*/
}
/*[IF*/
if((R)==((void*)(NULL))){
r67add_type(a1,((T0*)ms267_18416));
r267warning(/*(IRF4.6start_position*/(((T47*)((C)->_formal_name/*4*/)))->_start_position/*4*//*)*/,((T0*)ms267_50428));
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:TYPE_FORMAL_GENERIC.run_type*/


T0* r267run_class(T267* C){
T0* R=NULL;
R=r59run_class((C)->_run_type/*12*/);
return R;
}


T6 r267has_creation(T267* C,T0* a1){
T6 R=0;
/*[IF*/
if((C)==((void*)((C)->_run_type/*12*/))){
R=r22has_creation((T22*)(r267base_class(C)),a1);
}
else{
R=X46has_creation((C)->_run_type/*12*/,a1);
}
/*FI]*/
return R;
}


T0* r267expanded_initializer(T267* C){
T0* R=NULL;
R=X46expanded_initializer((C)->_run_type/*12*/);
return R;
}


T0* r267formal_generic_list(T267* C){
T0* R=NULL;
R=((T22*)(r69base_class((T69*)(/*(IRF4.6start_position*/(((T47*)((C)->_formal_name/*4*/)))->_start_position/*4*//*)*/))))->_formal_generic_list/*28*/;
return R;
}
/*No:TYPE_FORMAL_GENERIC.is_like_current*/


T6 r267is_boolean(T267* C){
T6 R=0;
R=X46is_boolean((C)->_run_type/*12*/);
return R;
}


T6 r267is_generic(T267* C){
T6 R=0;
R=X46is_generic((C)->_run_type/*12*/);
return R;
}


T0* r267make_runnable(T267* C,T0* a1){
T0* R=NULL;
T0* _rt2=NULL;
_rt2=X46run_type(a1);
/*[IF*/
if((_rt2)==((void*)(NULL))){
/*[IF*/
if((a1)!=((void*)(NULL))){
r67add_position(X46start_position(a1));
}
/*FI]*/
r267error(/*(IRF4.6start_position*/(((T47*)((C)->_formal_name/*4*/)))->_start_position/*4*//*)*/,((T0*)ms12_28959));
}
 else if(((C)->_run_type/*12*/)==((void*)(NULL))){
C->_run_type=_rt2;
R=(T0*)C;
}
else{
R=r267twin(C);
/*[IRF3.3set_run_type*/((((T267*)(((T267*)R))))->_run_type)=(_rt2);
/*]*/
}
/*FI]*/
return R;
}


T6 r267is_bit(T267* C){
T6 R=0;
R=X46is_bit((C)->_run_type/*12*/);
return R;
}


T6 r267is_real(T267* C){
T6 R=0;
R=X46is_real((C)->_run_type/*12*/);
return R;
}


T0* r267smallest_ancestor(T267* C,T0* a1){
T0* R=NULL;
R=X46smallest_ancestor((C)->_run_type/*12*/,a1);
return R;
}


T6 r267is_any(T267* C){
T6 R=0;
R=X46is_any((C)->_run_type/*12*/);
return R;
}
/*No:TYPE_FORMAL_GENERIC.fatal_error*/
/*No:TYPE_FORMAL_GENERIC.set_run_type*/
/*No:TYPE_FORMAL_GENERIC.fz_bnga*/


T0* r267run_time_mark(T267* C){
T0* R=NULL;
R=X46run_time_mark((C)->_run_type/*12*/);
return R;
}


T0* r267twin(T267* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T267*)R)=*C;
return R;
}


T6 r267is_expanded(T267* C){
T6 R=0;
R=X46is_expanded((C)->_run_type/*12*/);
return R;
}


T6 r267is_basic_eiffel_expanded(T267* C){
T6 R=0;
R=X46is_basic_eiffel_expanded((C)->_run_type/*12*/);
return R;
}
/*No:TYPE_FORMAL_GENERIC.short_hook*/

