/*
-- 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:LOOP_INVARIANT.nb_errors*/
/*No:LOOP_INVARIANT.start_position*/


T0* r231twin(T231* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T231*)R)=*C;
return R;
}


T0* r231runnable(T0* a1,T0* a2,T0* a3){
T0* R=NULL;
T0* _a=NULL;
T2 _i=0;
/*[IF*/
if(!(r50empty(((T50*)a1)))){
R=r50twin(((T50*)a1));
_i=(((T50*)R))->_upper/*8*/;
while (!((_i)==(0))) {
r59push((T59*)(oBC11small_eiffel),a3);
_a=r49to_runnable((T49*)(r50item(((T50*)R),_i)),a2);
/*[IF*/
if((_a)==((void*)(NULL))){
r231error(r49start_position((T49*)(r50item(((T50*)R),_i))),((T0*)ms12_14266));
}
else{
/*[IRF3.6put*/{T50* C1=((T50*)R);
T0* b1=_a;
T2 b2=_i;
((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
}/*]*/
}
/*FI]*/
r59pop((T59*)(oBC11small_eiffel));
_i=(_i)-(1);
}
}
/*FI]*/
return R;
}
/*No:LOOP_INVARIANT.header_comment*/


T0* r231to_runnable(T231* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((C)->_current_type/*12*/)==((void*)(NULL))){
C->_current_type=a1;
C->_run_feature=r59top_rf((T59*)(oBC11small_eiffel));
/*[IF*/
if(((C)->_list/*8*/)!=((void*)(NULL))){
C->_list=r231runnable((C)->_list/*8*/,a1,(C)->_run_feature/*16*/);
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T67*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
R=(T0*)C;
}
/*FI]*/
}
else{
R=r231twin(C);
/*[IRF3.3set_current_type*/((((T231*)(((T231*)R))))->_current_type)=(NULL);
/*]*/
R=r231to_runnable(((T231*)R),a1);
}
/*FI]*/
return R;
}
/*No:LOOP_INVARIANT.set_current_type*/
/*No:LOOP_INVARIANT.fz_bad_assertion*/
/*No:LOOP_INVARIANT.current_type*/


void r231error(T0* a1,T0* a2){
r67add_position(a1);
r67error((T67*)(oBC11eh),a2);
}
/*No:LOOP_INVARIANT.run_feature*/


void r231make(T231* C,T0* a1,T0* a2,T0* a3){
C->_start_position=a1;
C->_header_comment=a2;
C->_list=a3;
}
/*No:LOOP_INVARIANT.list*/


T0* r245generic_list(T245* C){
T0* R=NULL;
/*[IF*/
if(r245is_generic(C)){
R=X46generic_list((C)->_run_type/*8*/);
}
else{
r245fatal_error_generic_list(C);
}
/*FI]*/
return R;
}


T0* r245base_class(T245* C){
T0* R=NULL;
T0* _bcn=NULL;
_bcn=r245base_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;
}


T0* r245base_class_name(T245* C){
T0* R=NULL;
R=X46base_class_name((C)->_run_type/*8*/);
return R;
}
/*No:TYPE_LIKE_CURRENT.start_position*/
/*No:TYPE_LIKE_CURRENT.is_formal_generic*/


void r245used_as_reference(T245* C){
X46used_as_reference((C)->_run_type/*8*/);
}


T6 r245is_a_in(T245* C,T0* a1,T0* a2){
T6 R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*[IF*/
if((r245written_mark())==((void*)(X46written_mark(a1)))){
R=1;
}
else{
_ct=(((T310*)a2))->_current_type/*0*/;
_t1=r245to_runnable(C,_ct);
_t2=X46to_runnable(a1,_ct);
/*[IF*/
if((X46run_time_mark(_t1))==((void*)(X46run_time_mark(_t2)))){
R=1;
}
else{
R=X46is_a(_t1,_t2);
}
/*FI]*/
}
/*FI]*/
return R;
}


T2 r245id(T245* C){
T2 R=0;
R=((T310*)(r245run_class(C)))->_id/*4*/;
return R;
}


T6 r245is_pointer(T245* C){
T6 R=0;
R=X46is_pointer((C)->_run_type/*8*/);
return R;
}


T0* r245look_up_for(T245* C,T0* a1,T0* a2){
T0* R=NULL;
R=r22look_up_for((T22*)(r245base_class(C)),a1,a2);
return R;
}


T0* r245to_runnable(T245* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((C)->_run_type/*8*/)==((void*)(NULL))){
C->_run_type=a1;
R=(T0*)C;
}
 else if(((C)->_run_type/*8*/)==((void*)(a1))){
R=(T0*)C;
}
else{
{T245*n=malloc(sizeof(*n));
*n=M245;
r245with(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}
/*No:TYPE_LIKE_CURRENT.run_type*/


T0* r245run_class(T245* C){
T0* R=NULL;
R=r59run_class((C)->_run_type/*8*/);
return R;
}
/*No:TYPE_LIKE_CURRENT.us_like_current*/


T6 r245has_creation(T245* C,T0* a1){
T6 R=0;
R=X46has_creation((C)->_run_type/*8*/,a1);
return R;
}


T0* r245expanded_initializer(T245* C){
T0* R=NULL;
R=X46expanded_initializer((C)->_run_type/*8*/);
return R;
}
/*No:TYPE_LIKE_CURRENT.is_like_current*/


T6 r245is_boolean(T245* C){
T6 R=0;
R=X46is_boolean((C)->_run_type/*8*/);
return R;
}


T6 r245is_generic(T245* C){
T6 R=0;
R=X46is_generic((C)->_run_type/*8*/);
return R;
}


T6 r245is_bit(T245* C){
T6 R=0;
R=X46is_bit((C)->_run_type/*8*/);
return R;
}


T6 r245is_real(T245* C){
T6 R=0;
R=X46is_real((C)->_run_type/*8*/);
return R;
}


void r245with(T245* C,T0* a1,T0* a2){
C->_start_position=(((T245*)a1))->_start_position/*4*/;
C->_run_type=a2;
}


T0* r245smallest_ancestor(T245* C,T0* a1){
T0* R=NULL;
R=X46smallest_ancestor((C)->_run_type/*8*/,a1);
return R;
}


T6 r245is_any(T245* C){
T6 R=0;
R=X46is_any((C)->_run_type/*8*/);
return R;
}
/*No:TYPE_LIKE_CURRENT.us_current*/


T0* r245run_time_mark(T245* C){
T0* R=NULL;
/*[IF*/
if(((C)->_run_type/*8*/)!=((void*)(NULL))){
R=X46run_time_mark((C)->_run_type/*8*/);
}
/*FI]*/
return R;
}


T6 r245is_expanded(T245* C){
T6 R=0;
R=X46is_expanded((C)->_run_type/*8*/);
return R;
}


T6 r245is_basic_eiffel_expanded(T245* C){
T6 R=0;
R=X46is_basic_eiffel_expanded((C)->_run_type/*8*/);
return R;
}
/*No:TYPE_LIKE_CURRENT.short_hook*/


T6 r245is_string(T245* C){
T6 R=0;
R=X46is_string((C)->_run_type/*8*/);
return R;
}


T6 r245is_integer(T245* C){
T6 R=0;
R=X46is_integer((C)->_run_type/*8*/);
return R;
}
/*No:TYPE_LIKE_CURRENT.is_like_feature*/
/*No:TYPE_LIKE_CURRENT.fz_dot*/
/*No:TYPE_LIKE_CURRENT.is_anchored*/
/*No:TYPE_LIKE_CURRENT.is_run_type*/


T6 r245is_a(T245* C,T0* a1){
T6 R=0;
/*[IF*/
if(X46is_like_current(a1)){
R=1;
}
else{
R=X46is_a((C)->_run_type/*8*/,a1);
}
/*FI]*/
return R;
}


T6 r245is_character(T245* C){
T6 R=0;
R=X46is_character((C)->_run_type/*8*/);
return R;
}


T6 r245is_reference(T245* C){
T6 R=0;
R=X46is_reference((C)->_run_type/*8*/);
return R;
}


T0* r245written_mark(void){
T0* R=NULL;
R=((T0*)ms13_22320);
return R;
}
/*No:TYPE_LIKE_CURRENT.make*/


T6 r245is_none(T245* C){
T6 R=0;
R=X46is_none((C)->_run_type/*8*/);
return R;
}


T6 r245is_array(T245* C){
T6 R=0;
R=X46is_array((C)->_run_type/*8*/);
return R;
}


void r245fatal_error_generic_list(T245* C){
r67add_type((T0*)C,((T0*)ms46_29184));
r67print_as_fatal_error((T67*)(oBC11eh));
}
/*No:TYPE_LIKE_CURRENT.is_like_argument*/


T6 r245is_double(T245* C){
T6 R=0;
R=X46is_double((C)->_run_type/*8*/);
return R;
}
/*No:TYPE_LIKE_CURRENT.short*/
/*No:TYPE_ARRAY.generic_list*/


T0* r248base_class(T248* 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_ARRAY.base_class_name*/
/*No:TYPE_ARRAY.start_position*/
/*No:TYPE_ARRAY.us_capacity*/
/*No:TYPE_ARRAY.is_formal_generic*/
/*No:TYPE_ARRAY.run_type_memory*/
/*No:TYPE_ARRAY.used_as_reference*/


T6 r248is_a_in(T248* C,T0* a1,T0* a2){
T6 R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*[IF*/
if(((C)->_written_mark/*12*/)==((void*)(X46written_mark(a1)))){
R=1;
}
else{
_ct=(((T310*)a2))->_current_type/*0*/;
_t1=r248to_runnable(C,_ct);
_t2=X46to_runnable(a1,_ct);
/*[IF*/
if((X46run_time_mark(_t1))==((void*)(X46run_time_mark(_t2)))){
R=1;
}
else{
R=X46is_a(_t1,_t2);
}
/*FI]*/
}
/*FI]*/
return R;
}


T2 r248id(T248* C){
T2 R=0;
R=((T310*)(r248run_class(C)))->_id/*4*/;
return R;
}
/*No:TYPE_ARRAY.is_pointer*/


T0* r248look_up_for(T248* C,T0* a1,T0* a2){
T0* R=NULL;
R=r22look_up_for((T22*)(r248base_class(C)),a1,a2);
return R;
}


T0* r248to_runnable(T248* C,T0* a1){
T0* R=NULL;
T0* _et2=NULL;
T0* _et1=NULL;
_et1=/*(IRF4.6array_of*/r249first(((T249*)((C)->_generic_list/*8*/)))/*)*/;
_et2=X46to_runnable(_et1,a1);
/*[IF*/
if((_et2)==((void*)(NULL))){
/*[IF*/
if((_et2)!=((void*)(NULL))){
r67add_position(X46start_position(_et2));
}
/*FI]*/
r67add_position(X46start_position(_et1));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms12_28959);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
/*[IF*/
if(((C)->_run_type_memory/*16*/)==((void*)(NULL))){
R=(T0*)C;
/*[IF*/
if((X46run_type(_et2))==((void*)(_et1))){
C->_run_type_memory=(T0*)C;
}
else{
{T248*n=malloc(sizeof(*n));
*n=M248;
r248final(n,(C)->_base_class_name/*4*/,X46run_type(_et2));
C->_run_type_memory=(T0*)n;
}
}
/*FI]*/
}
 else if((_et2)==((void*)(_et1))){
R=(T0*)C;
}
else{
{T248*n=malloc(sizeof(*n));
*n=M248;
r248with(n,(C)->_base_class_name/*4*/,(C)->_written_mark/*12*/,_et2);
R=(T0*)n;
}
}
/*FI]*/
return R;
}
/*No:TYPE_ARRAY.array_of*/


void r248load_basic_features(T248* C){
T0* _rc=NULL;
T0* _rf=NULL;
T0* _et=NULL;
_et=/*(IRF4.6array_of*/r249first(((T249*)((C)->_generic_list/*8*/)))/*)*/;
/*[IF*/
if(X46is_expanded(_et)){
r310set_at_run_time((T310*)(X46run_class(_et)));
}
/*FI]*/
_rc=r248run_class(C);
_rf=r310get_feature_with(((T310*)_rc),((T0*)ms13_11896));
_rf=r310get_feature_with(((T310*)_rc),((T0*)ms13_2840));
_rf=r310get_feature_with(((T310*)_rc),((T0*)ms13_2855));
_rf=r310get_feature_with(((T310*)_rc),((T0*)ms13_8925));
}


T0* r248run_type(T248* C){
T0* R=NULL;
/*[IF*/
if(r248is_run_type(C)){
R=(C)->_run_type_memory/*16*/;
}
/*FI]*/
return R;
}


T0* r248run_class(T248* C){
T0* R=NULL;
/*[IF*/
if(r248is_run_type(C)){
R=r59run_class(r248run_type(C));
}
/*FI]*/
return R;
}


T6 r248has_creation(T248* C,T0* a1){
T6 R=0;
/*[IF*/
if((C)==((void*)(r248run_type(C)))){
R=r22has_creation((T22*)(r248base_class(C)),a1);
}
else{
R=X46has_creation(r248run_type(C),a1);
}
/*FI]*/
return R;
}
/*No:TYPE_ARRAY.expanded_initializer*/
/*No:TYPE_ARRAY.is_like_current*/
/*No:TYPE_ARRAY.is_boolean*/
/*No:TYPE_ARRAY.us_lower*/
/*No:TYPE_ARRAY.is_generic*/
/*No:TYPE_ARRAY.us_array*/
/*No:TYPE_ARRAY.is_bit*/
/*No:TYPE_ARRAY.is_real*/
/*No:TYPE_ARRAY.us_storage*/


void r248with(T248* C,T0* a1,T0* a2,T0* a3){
C->_base_class_name=a1;
C->_generic_list=se_ma249(1,
a3);
C->_written_mark=a2;
{T248*n=malloc(sizeof(*n));
*n=M248;
r248final(n,a1,X46run_type(a3));
C->_run_type_memory=(T0*)n;
}
}


T0* r248smallest_ancestor(T248* C,T0* a1){
T0* R=NULL;
T0* _array_of3=NULL;
T0* _array_of2=NULL;
T0* _array_of1=NULL;
T0* _rto=NULL;
_rto=X46run_type(a1);
/*[IF*/
if(X46is_array(_rto)){
_array_of1=X46run_type(/*(IRF4.6array_of*/r249first(((T249*)((C)->_generic_list/*8*/)))/*)*/);
_array_of2=r249first((T249*)(X46generic_list(_rto)));
_array_of3=X46smallest_ancestor(_array_of1,_array_of2);
/*[IF*/
if((_array_of3)==((void*)(_array_of1))){
R=(T0*)C;
}
 else if((_array_of3)==((void*)(_array_of2))){
R=a1;
}
else{
{T248*n=malloc(sizeof(*n));
*n=M248;
r248make(n,NULL,_array_of3);
R=(T0*)n;
}
}
/*FI]*/
}
else{
R=X46smallest_ancestor(_rto,(T0*)C);
}
/*FI]*/
return R;
}
/*No:TYPE_ARRAY.is_any*/
/*No:TYPE_ARRAY.fatal_error*/


T0* r248run_time_mark(T248* C){
T0* R=NULL;
/*[IF*/
if(r248is_run_type(C)){
R=X46written_mark(r248run_type(C));
}
/*FI]*/
return R;
}
/*No:TYPE_ARRAY.is_expanded*/
/*No:TYPE_ARRAY.is_basic_eiffel_expanded*/


void r248short_hook(T248* C){
r39a_class_name((T39*)(oBC11short_print),(C)->_base_class_name/*4*/);
r39hook_or((T39*)(oBC11short_print),((T0*)ms248_8610),((T0*)ms248_92));
X46short_hook(r249first((T249*)((C)->_generic_list/*8*/)));
r39hook_or((T39*)(oBC11short_print),((T0*)ms248_10664),((T0*)ms248_94));
}
/*No:TYPE_ARRAY.is_string*/
/*No:TYPE_ARRAY.is_integer*/
/*No:TYPE_ARRAY.is_like_feature*/
/*No:TYPE_ARRAY.fz_dot*/
/*No:TYPE_ARRAY.is_anchored*/
/*No:TYPE_ARRAY.us_upper*/


T6 r248is_a(T248* C,T0* a1){
T6 R=0;
/*[IF*/
if((r248run_class(C))==((void*)(X46run_class(a1)))){
R=1;
}
 else if(X46is_array(a1)){
R=X46is_a(/*(IRF4.6array_of*/r249first(((T249*)((C)->_generic_list/*8*/)))/*)*/,r249first((T249*)(X46generic_list(a1))));
/*[IF*/
if(!(R)){
/*[IRF3.6extend*/{T3 b1='\40';
r7extend((T7*)(oBC67explanation),b1);
}/*]*/
}
/*FI]*/
}
 else if(r22is_subclass_of((T22*)(r248base_class(C)),X46base_class(a1))){
/*[IF*/
if(X46is_generic(a1)){
R=r22is_a_vncg((T22*)(r248base_class(C)),(T0*)C,a1);
}
else{
R=1;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(!(R)){
r67add_type((T0*)C,((T0*)ms12_17730));
r67add_type(a1,((T0*)ms12_47));
}
/*FI]*/
return R;
}


T6 r248is_run_type(T248* C){
T6 R=0;
T0* _et=NULL;
/*[IF*/
if(((C)->_run_type_memory/*16*/)!=((void*)(NULL))){
R=1;
}
else{
_et=/*(IRF4.6array_of*/r249first(((T249*)((C)->_generic_list/*8*/)))/*)*/;
/*[IF*/
if((X46is_run_type(_et))&&((X46run_type(_et))==((void*)(_et)))){
C->_run_type_memory=(T0*)C;
R=1;
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:TYPE_ARRAY.is_character*/
/*No:TYPE_ARRAY.is_reference*/
/*No:TYPE_ARRAY.written_mark*/
T0*oBC248tmp_written_mark=NULL;


void r248make(T248* C,T0* a1,T0* a2){
{T47*n=malloc(sizeof(*n));
*n=M47;
r47make(n,((T0*)ms13_1990),a1);
C->_base_class_name=(T0*)n;
}
C->_generic_list=se_ma249(1,
a2);
r7copy((T7*)(oBC248tmp_written_mark),((T0*)ms13_1990));
r7extend((T7*)(oBC248tmp_written_mark),'\133');
r7append((T7*)(oBC248tmp_written_mark),X46written_mark(a2));
r7extend((T7*)(oBC248tmp_written_mark),'\135');
C->_written_mark=r78item(oBC248tmp_written_mark);
}
/*No:TYPE_ARRAY.is_none*/
/*No:TYPE_ARRAY.is_array*/
/*No:TYPE_ARRAY.fz_inako*/
/*No:TYPE_ARRAY.fz_bga*/
/*No:TYPE_ARRAY.is_like_argument*/
/*No:TYPE_ARRAY.is_double*/


void r248short(T248* C){
r39hook((T39*)(oBC11short_print),((T0*)ms46_891));
r248short_hook(C);
r39hook((T39*)(oBC11short_print),((T0*)ms46_888));
}


void r248final(T248* C,T0* a1,T0* a2){
C->_base_class_name=a1;
C->_generic_list=se_ma249(1,
a2);
r7copy((T7*)(oBC248tmp_written_mark),((T0*)ms13_1990));
r7extend((T7*)(oBC248tmp_written_mark),'\133');
r7append((T7*)(oBC248tmp_written_mark),X46written_mark(a2));
r7extend((T7*)(oBC248tmp_written_mark),'\135');
C->_written_mark=r78item(oBC248tmp_written_mark);
C->_run_type_memory=(T0*)C;
}
/*No:REAL_CONSTANT.start_position*/
/*No:REAL_CONSTANT.to_string*/


T0* r161add_comment(T161* 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 r161to_integer(T161* C){
T2 R=0;
r161error((C)->_start_position/*4*/,((T0*)ms12_45846));
return R;
}
/*No:REAL_CONSTANT.to_runnable*/
/*No:REAL_CONSTANT.fz_iinaiv*/
int fBC161result_type=0;
T0*oBC161result_type=NULL;


T0* r161result_type(void){
if(fBC161result_type==0){
fBC161result_type=1;
{T259*n=malloc(sizeof(*n));
*n=M259;
r259make(n,NULL);
oBC161result_type=(T0*)n;
}
}
return oBC161result_type;}


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


void r161make(T161* C,T0* a1,T0* a2){
C->_start_position=a1;
C->_to_string=a2;
}


void r161bracketed_short(T161* C){
r39hook_or((T39*)(oBC11short_print),((T0*)ms53_6792),((T0*)ms53_41));
/*[IRF3.6short*/{T161* C1=C;
r39a_base_type_constant((T39*)(oBC11short_print),(C1)->_to_string/*8*/);
}/*]*/
r39hook_or((T39*)(oBC11short_print),((T0*)ms53_8645),((T0*)ms53_42));
}
/*No:REAL_CONSTANT.is_current*/
/*No:REAL_CONSTANT.unary_minus*/
/*No:REAL_CONSTANT.is_void*/


void r161short_target(T161* C){
r161bracketed_short(C);
/*[IRF3.6a_dot*/{T39* C1=(T39*)(oBC11short_print);
r39hook_or(C1,((T0*)ms39_999a),((T0*)ms12_47));
}/*]*/
}
/*No:REAL_CONSTANT.short*/
/*No:REAL_CONSTANT.atomic_precedence*/
/*No:LOCAL_NAME2.start_position*/


T0* r168to_string(T168* C){
T0* R=NULL;
R=((T171*)(/*(IRF4.6name*/r173item(((T173*)(((T166*)((C)->_local_var_list/*12*/))->_flat_list/*8*/)),(C)->_rank/*8*/)/*)*/))->_to_string/*8*/;
return R;
}


T0* r168add_comment(T168* 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 r168to_integer(T168* C){
T2 R=0;
r168error((C)->_start_position/*4*/,((T0*)ms12_45846));
return R;
}
/*No:LOCAL_NAME2.rank*/
/*No:LOCAL_NAME2.local_var_list*/


T0* r168to_runnable(T168* C,T0* a1){
T0* R=NULL;
T0* _lvl=NULL;
T0* _rf=NULL;
_rf=r59top_rf((T59*)(oBC11small_eiffel));
_lvl=X312local_vars(_rf);
/*[IF*/
if(((C)->_local_var_list/*12*/)==((void*)(_lvl))){
R=(T0*)C;
}
else{
{T168*n=malloc(sizeof(*n));
*n=M168;
r168refer_to(n,(C)->_start_position/*4*/,_lvl,(C)->_rank/*8*/);
R=(T0*)n;
}
}
/*FI]*/
/*[IRF3.3set_is_used*/((((T171*)((T171*)(/*(IRF4.6name*/r173item(((T173*)((((T166*)_lvl))->_flat_list/*8*/)),(C)->_rank/*8*/)/*)*/))))->_is_used)=(1);
/*]*/
return R;
}
/*No:LOCAL_NAME2.fz_iinaiv*/


void r168refer_to(T168* C,T0* a1,T0* a2,T2 a3){
C->_start_position=a1;
C->_local_var_list=a2;
C->_rank=a3;
}


T0* r168result_type(T168* C){
T0* R=NULL;
R=r166type((T166*)((C)->_local_var_list/*12*/),(C)->_rank/*8*/);
return R;
}


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


void r168bracketed_short(T168* C){
r39hook_or((T39*)(oBC11short_print),((T0*)ms53_6792),((T0*)ms53_41));
r168short(C);
r39hook_or((T39*)(oBC11short_print),((T0*)ms53_8645),((T0*)ms53_42));
}
/*No:LOCAL_NAME2.is_current*/
/*No:LOCAL_NAME2.is_void*/


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


void r168short(T168* C){
T3 _c=0;
T2 _i=0;
r39hook((T39*)(oBC11short_print),((T0*)ms170_837));
_i=1;
while (!((_i)>(((T7*)(r168to_string(C)))->_count/*4*/))) {
_c=/*(IRF4.6item*/(((T7*)(r168to_string(C)))->_storage/*0*/)[(_i)-(1)]/*)*/;
/*[IF*/
if((_c)==('\137')){
r39hook_or((T39*)(oBC11short_print),((T0*)ms170_894),((T0*)ms170_96));
}
else{
/*[IRF3.6a_character*/{T3 b1=_c;
/*[IRF3.6put_character*/{T38* C2=(T38*)(oBC1std_output);
T3 c1=b1;
putc(c1,((FILE*)(stdout)));
}/*]*/
}/*]*/
}
/*FI]*/
_i=(_i)+(1);
}
r39hook((T39*)(oBC11short_print),((T0*)ms170_834));
}
/*No:LOCAL_NAME2.atomic_precedence*/
/*No:RUN_FEATURE_7.us_copy*/
/*No:RUN_FEATURE_7.use_current_state*/
/*No:RUN_FEATURE_7.actuals_clients*/
/*No:RUN_FEATURE_7.arguments*/


void r333initialize(T333* C){
T0* _n=NULL;
_n=X77to_string(/*(IRF4.6first_name*/r79item(((T79*)(((T276*)((C)->_base_feature/*32*/))->_names/*8*/)),1)/*)*/);
C->_arguments=((T276*)((C)->_base_feature/*32*/))->_arguments/*20*/;
/*[IF*/
if(((C)->_arguments/*36*/)!=((void*)(NULL))){
/*[IF*/
if(!(r175is_runnable((T175*)((C)->_arguments/*36*/),(C)->_current_type/*4*/))){
{T175*n=malloc(sizeof(*n));
*n=M175;
r175with(n,(C)->_arguments/*36*/,(C)->_current_type/*4*/);
C->_arguments=(T0*)n;
}
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(r73require_check((T73*)(oBC11run_control))){
/*[IF*/
if(((((T0*)ms13_1812))==((void*)(X77to_string((C)->_name/*16*/))))&&(X46is_expanded((C)->_current_type/*4*/))){
}
else{
C->_require_assertion=r276run_require((T0*)C);
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(r73ensure_check((T73*)(oBC11run_control))){
C->_ensure_assertion=r276run_ensure((T0*)C);
}
/*FI]*/
/*[IF*/
if((((T0*)ms13_32955))==((void*)(_n))){
/*[IRF3.3set_used*/((((T334*)((T334*)(oBC11exceptions_handler))))->_used)=(1);
/*]*/
}
/*FI]*/
}


T0* r333start_position(T333* C){
T0* R=NULL;
R=r276start_position((T276*)((C)->_base_feature/*32*/));
return R;
}
/*No:RUN_FEATURE_7.require_assertion*/
/*No:RUN_FEATURE_7.clients_memory*/
/*No:RUN_FEATURE_7.ucs_not_computed*/
/*No:RUN_FEATURE_7.current_type*/


void r333add_client(T333* C,T0* a1){
T2 _i=0;
/*[IF*/
if(((C)->_actuals_clients/*12*/)==((void*)(NULL))){
{T321*n=malloc(sizeof(*n));
*n=M321;
r321with_capacity(n,4);
C->_actuals_clients=(T0*)n;
}
r321add_last((T321*)((C)->_actuals_clients/*12*/),a1);
}
else{
_i=r321fast_index_of((T321*)((C)->_actuals_clients/*12*/),a1);
/*[IF*/
if((_i)>(((T321*)((C)->_actuals_clients/*12*/))->_upper/*8*/)){
r321add_last((T321*)((C)->_actuals_clients/*12*/),a1);
}
/*FI]*/
}
/*FI]*/
r310add_client((T310*)(r333run_class(C)),a1);
}


T0* r333run_class(T333* C){
T0* R=NULL;
R=X46run_class((C)->_current_type/*4*/);
return R;
}
/*No:RUN_FEATURE_7.result_type*/
/*No:RUN_FEATURE_7.base_feature*/
/*No:RUN_FEATURE_7.ensure_assertion*/


void r333make(T333* C,T0* a1,T0* a2,T0* a3){
C->_current_type=a1;
C->_name=a2;
C->_base_feature=a3;
/*[IRF3.5add_rf*/r317put(((T317*)(((T310*)(r333run_class(C)))->_feature_dictionary/*24*/)),(T0*)C,X77to_key(a2));
/*]*/
r59incr_magic_count((T59*)(oBC11small_eiffel));
C->_use_current_state=15;
r59push((T59*)(oBC11small_eiffel),(T0*)C);
r333initialize(C);
r59pop((T59*)(oBC11small_eiffel));
}
/*No:RUN_FEATURE_7.name*/
/*No:RUN_FEATURE_7.local_vars*/


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


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


T6 r333is_exported_in(T333* C,T0* a1){
T6 R=0;
R=r94gives_permission_to((T94*)(r333clients(C)),a1);
return R;
}
/*No:RUN_FEATURE_7.us_raise_exception*/
/*No:E_PRECURSOR_FUNCTION.nb_errors*/
/*No:E_PRECURSOR_FUNCTION.arguments*/
/*No:E_PRECURSOR_FUNCTION.start_position*/


T0* r163add_comment(T163* 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 r163to_integer(T163* C){
T2 R=0;
r163error((C)->_start_position/*4*/,((T0*)ms12_45846));
return R;
}
/*No:E_PRECURSOR_FUNCTION.dot_precedence*/


T0* r163to_runnable(T163* C,T0* a1){
T0* R=NULL;
T0* _pn=NULL;
T0* _super=NULL;
T0* _wrf=NULL;
/*[IF*/
if(((C)->_current_type/*12*/)==((void*)(NULL))){
C->_current_type=a1;
R=(T0*)C;
_wrf=r59top_rf((T59*)(oBC11small_eiffel));
/*[IF*/
if((X312result_type(_wrf))==((void*)(NULL))){
r67add_position((C)->_start_position/*4*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms163_368088);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
_super=r163super_feature(C,_wrf);
if(NULL!=(_super))switch(((T0*)_super)->id) {
case 289: 
break;
default:
_super=NULL;
};_pn=r163precursor_name(/*X312name*/((T0*)(((T326*)_wrf))->_name/*16*/),_super);
{T356*n=malloc(sizeof(*n));
*n=M356;
r356make(n,a1,_pn,_super);
C->_run_feature=(T0*)n;
}
r163prepare_arguments(C,a1);
}
else{
{T163*n=malloc(sizeof(*n));
*n=M163;
r163make(n,(C)->_start_position/*4*/,(C)->_parent/*8*/,(C)->_arguments/*16*/);
R=(T0*)n;
}
R=r163to_runnable(((T163*)R),a1);
}
/*FI]*/
return R;
}
/*No:E_PRECURSOR_FUNCTION.current_type*/


T0* r163super_feature(T163* C,T0* a1){
T0* R=NULL;
T0* _pl=NULL;
T0* _wbc=NULL;
T0* _e_feature=NULL;
_e_feature=X312base_feature(a1);
_wbc=/*X87base_class*/((T0*)(((T187*)_e_feature))->_base_class/*4*/);
_pl=(((T22*)_wbc))->_parent_list/*40*/;
/*[IF*/
if((_pl)==((void*)(NULL))){
r67add_position((C)->_start_position/*4*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms164_269232);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}
else{
R=r55precursor_for(((T55*)_pl),(T0*)C,a1);
}
/*FI]*/
return R;
}
/*No:E_PRECURSOR_FUNCTION.fz_iinaiv*/


T0* r163precursor_name(T0* a1,T0* a2){
T0* R=NULL;
{T344*n=malloc(sizeof(*n));
*n=M344;
r344refer_to(n,((T22*)(/*X87base_class*/((T0*)(((T187*)a2))->_base_class/*4*/)))->_id/*0*/,a1);
R=(T0*)n;
}
return R;
}


T0* r163result_type(T163* C){
T0* R=NULL;
R=((T356*)((C)->_run_feature/*20*/))->_result_type/*40*/;
return R;
}


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


void r163make(T163* C,T0* a1,T0* a2,T0* a3){
C->_start_position=a1;
C->_parent=a2;
C->_arguments=a3;
}
/*No:E_PRECURSOR_FUNCTION.bracketed_short*/
/*No:E_PRECURSOR_FUNCTION.is_current*/


void r163prepare_arguments(T163* C,T0* a1){
T0* _a=NULL;
/*[IF*/
if(((C)->_arguments/*16*/)!=((void*)(NULL))){
_a=r136to_runnable((T136*)((C)->_arguments/*16*/),a1);
/*[IF*/
if((_a)==((void*)(NULL))){
r163error(r136start_position((T136*)((C)->_arguments/*16*/)),((T0*)ms12_14714));
}
else{
C->_arguments=_a;
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T67*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
r136match_with((T136*)((C)->_arguments/*16*/),(C)->_run_feature/*20*/,a1);
}
/*FI]*/
}
 else if((((T356*)((C)->_run_feature/*20*/))->_arguments/*36*/)!=((void*)(NULL))){
r67add_position(r356start_position((T356*)((C)->_run_feature/*20*/)));
r67add_position((C)->_start_position/*4*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms164_63936);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
}
/*No:E_PRECURSOR_FUNCTION.is_void*/
/*No:E_PRECURSOR_FUNCTION.parent*/
/*No:E_PRECURSOR_FUNCTION.fz_bad_arguments*/
/*No:E_PRECURSOR_FUNCTION.short_target*/
/*No:E_PRECURSOR_FUNCTION.short*/
/*No:E_PRECURSOR_FUNCTION.fatal_error*/
/*No:TYPE_GENERIC.generic_list*/


T0* r262base_class(T262* 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_GENERIC.base_class_name*/
/*No:TYPE_GENERIC.start_position*/
/*No:TYPE_GENERIC.is_formal_generic*/
/*No:TYPE_GENERIC.run_type_memory*/


void r262used_as_reference(T262* C){
/*[IF*/
if(r262is_expanded(C)){
r310used_as_reference((T310*)(r262run_class(C)));
}
/*FI]*/
}


T6 r262is_a_in(T262* C,T0* a1,T0* a2){
T6 R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*[IF*/
if(((C)->_written_mark/*12*/)==((void*)(X46written_mark(a1)))){
R=1;
}
else{
_ct=(((T310*)a2))->_current_type/*0*/;
_t1=r262to_runnable(C,_ct);
_t2=X46to_runnable(a1,_ct);
/*[IF*/
if((X46run_time_mark(_t1))==((void*)(X46run_time_mark(_t2)))){
R=1;
}
else{
R=X46is_a(_t1,_t2);
}
/*FI]*/
}
/*FI]*/
return R;
}


T2 r262id(T262* C){
T2 R=0;
R=((T310*)(r262run_class(C)))->_id/*4*/;
return R;
}
/*No:TYPE_GENERIC.is_pointer*/


T0* r262look_up_for(T262* C,T0* a1,T0* a2){
T0* R=NULL;
R=r22look_up_for((T22*)(r262base_class(C)),a1,a2);
return R;
}


T0* r262to_runnable(T262* C,T0* a1){
T0* R=NULL;
T0* _rt=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
T0* _rgl=NULL;
T2 _i=0;
/*[IF*/
if(r262is_written_runnable(C)){
R=(T0*)C;
}
else{
_rgl=r249twin((T249*)((C)->_generic_list/*8*/));
_i=(((T249*)_rgl))->_upper/*8*/;
while (!((_i)==(0))) {
_t1=r249item(((T249*)_rgl),_i);
_t2=X46to_runnable(_t1,a1);
/*[IF*/
if(((_t2)==((void*)(NULL)))||(!(X46is_run_type(_t2)))){
r67add_type(_t1,((T0*)ms12_11472));
r67print_as_error((T67*)(oBC11eh));
_i=0;
}
else{
/*[IRF3.6put*/{T249* C1=((T249*)_rgl);
T0* b1=_t2;
T2 b2=_i;
((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
}/*]*/
}
/*FI]*/
_t2=X46run_type(_t2);
/*[IF*/
if(X46is_expanded(_t2)){
r310set_at_run_time((T310*)(X46run_class(_t2)));
}
/*FI]*/
_i=(_i)-(1);
}
{T262*n=malloc(sizeof(*n));
*n=M262;
r262make_runnable(n,(T0*)C,_rgl);
_rt=(T0*)n;
}
/*[IF*/
if(((C)->_run_type_memory/*16*/)==((void*)(NULL))){
C->_run_type_memory=_rt;
R=(T0*)C;
}
else{
R=r262twin(C);
/*[IRF3.3set_run_type_memory*/((((T262*)(((T262*)R))))->_run_type_memory)=(_rt);
/*]*/
}
/*FI]*/
r262basic_checks((T262*)(r262run_type(((T262*)R))));
}
/*FI]*/
return R;
}


T0* r262run_type(T262* C){
T0* R=NULL;
/*[IF*/
if(r262is_run_type(C)){
R=(C)->_run_type_memory/*16*/;
}
/*FI]*/
return R;
}


T0* r262run_class(T262* C){
T0* R=NULL;
/*[IF*/
if(r262is_run_type(C)){
R=r59run_class((C)->_run_type_memory/*16*/);
}
/*FI]*/
return R;
}


T6 r262has_creation(T262* C,T0* a1){
T6 R=0;
R=r22has_creation((T22*)(r262base_class(C)),a1);
return R;
}


T0* r262expanded_initializer(T262* C){
T0* R=NULL;
/*[IF*/
if(r262is_expanded(C)){
R=r22expanded_initializer((T22*)(r262base_class(C)),(T0*)C);
}
/*FI]*/
return R;
}


void r262basic_checks(T262* C){
T0* _fgl=NULL;
T0* _bc=NULL;
_bc=r262base_class(C);
_fgl=(((T22*)_bc))->_formal_generic_list/*28*/;
/*[IF*/
if((_fgl)==((void*)(NULL))){
r67add_position(/*(IRF4.6start_position*/(((T47*)((C)->_base_class_name/*4*/)))->_start_position/*4*//*)*/);
/*[IRF3.6append*/{T0* b1=((T47*)((((T22*)_bc))->_name/*24*/))->_to_string/*0*/;
r7append((T7*)(oBC67explanation),b1);
}/*]*/
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms262_36312);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}
 else if((/*(IRF4.6count*/(((T44*)((((T42*)_fgl))->_list/*4*/)))->_upper/*8*//*)*/)!=(r249count((T249*)((C)->_generic_list/*8*/)))){
r67add_position(/*(IRF4.6start_position*/(((T47*)((C)->_base_class_name/*4*/)))->_start_position/*4*//*)*/);
r67add_position((((T42*)_fgl))->_start_position/*0*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms12_60544);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
}
/*No:TYPE_GENERIC.is_like_current*/
/*No:TYPE_GENERIC.is_boolean*/
/*No:TYPE_GENERIC.is_generic*/


void r262make_runnable(T262* C,T0* a1,T0* a2){
T0* _t=NULL;
T2 _i=0;
C->_base_class_name=(((T262*)a1))->_base_class_name/*4*/;
C->_generic_list=a2;
r7copy((T7*)(oBC262tmp_mark),((T47*)((C)->_base_class_name/*4*/))->_to_string/*0*/);
r7extend((T7*)(oBC262tmp_mark),'\133');
_i=1;
while (!((_i)>((((T249*)a2))->_upper/*8*/))) {
_t=r249item(((T249*)a2),_i);
r7append((T7*)(oBC262tmp_mark),X46run_time_mark(_t));
_i=(_i)+(1);
/*[IF*/
if((_i)<=((((T249*)a2))->_upper/*8*/)){
r7extend((T7*)(oBC262tmp_mark),'\54');
}
/*FI]*/
}
r7extend((T7*)(oBC262tmp_mark),'\135');
C->_written_mark=r78item(oBC262tmp_mark);
C->_run_type_memory=(T0*)C;
}
/*No:TYPE_GENERIC.is_bit*/
/*No:TYPE_GENERIC.is_real*/


T0* r262smallest_ancestor(T262* C,T0* a1){
T0* R=NULL;
T0* _rto=NULL;
_rto=X46run_type(a1);
/*[IF*/
if(X46is_none(a1)){
R=(T0*)C;
}
 else if(X46is_any(_rto)){
R=_rto;
}
 else if(X46is_a(_rto,r262run_type(C))){
R=(C)->_run_type_memory/*16*/;
}
else{
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC67explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T68*)((T68*)(oBC67positions))))->_upper)=(-(1));
/*]*/
/*]*/
/*[IF*/
if(r262is_a((T262*)(r262run_type(C)),_rto)){
R=_rto;
}
else{
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC67explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T68*)((T68*)(oBC67positions))))->_upper)=(-(1));
/*]*/
/*]*/
/*[IF*/
if(X46is_generic(_rto)){
R=r262type_any();
}
else{
R=X46smallest_ancestor(_rto,(T0*)C);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:TYPE_GENERIC.is_any*/
/*No:TYPE_GENERIC.fatal_error*/
/*No:TYPE_GENERIC.fz_bnga*/
/*No:TYPE_GENERIC.set_run_type_memory*/
/*No:TYPE_GENERIC.fz_is_invalid*/


T0* r262run_time_mark(T262* C){
T0* R=NULL;
/*[IF*/
if(r262is_run_type(C)){
R=((T262*)((C)->_run_type_memory/*16*/))->_written_mark/*12*/;
}
/*FI]*/
return R;
}


T0* r262twin(T262* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T262*)R)=*C;
return R;
}


T6 r262is_expanded(T262* C){
T6 R=0;
R=((T22*)(r262base_class(C)))->_is_expanded/*20*/;
return R;
}


T6 r262is_written_runnable(T262* C){
T6 R=0;
T0* _t=NULL;
T2 _i=0;
/*[IF*/
if(((C)->_run_type_memory/*16*/)==((void*)(C))){
R=1;
}
 else if(((C)->_run_type_memory/*16*/)==((void*)(NULL))){
R=1;
_i=((T249*)((C)->_generic_list/*8*/))->_upper/*8*/;
while (!((!(R))||((_i)==(0)))) {
_t=r249item((T249*)((C)->_generic_list/*8*/),_i);
/*[IF*/
if(X46is_run_type(_t)){
/*[IF*/
if((X46run_type(_t))==((void*)(_t))){
}
else{
R=0;
}
/*FI]*/
}
else{
R=0;
}
/*FI]*/
_i=(_i)-(1);
}
/*[IF*/
if(R){
C->_run_type_memory=(T0*)C;
r262basic_checks(C);
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:TYPE_GENERIC.is_basic_eiffel_expanded*/


T0* r262type_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 r262short_hook(T262* C){
T2 _i=0;
r39a_class_name((T39*)(oBC11short_print),(C)->_base_class_name/*4*/);
r39hook_or((T39*)(oBC11short_print),((T0*)ms262_8610),((T0*)ms262_92));
_i=1;
while (!((_i)>(r249count((T249*)((C)->_generic_list/*8*/))))) {
X46short_hook(r249item((T249*)((C)->_generic_list/*8*/),_i));
/*[IF*/
if((_i)<(r249count((T249*)((C)->_generic_list/*8*/)))){
r39hook_or((T39*)(oBC11short_print),((T0*)ms262_7338),((T0*)ms262_45));
}
/*FI]*/
_i=(_i)+(1);
}
r39hook_or((T39*)(oBC11short_print),((T0*)ms262_10664),((T0*)ms262_94));
}
/*No:TYPE_GENERIC.is_string*/
/*No:TYPE_GENERIC.is_integer*/
/*No:TYPE_GENERIC.is_like_feature*/
/*No:TYPE_GENERIC.fz_dot*/
/*No:TYPE_GENERIC.is_anchored*/


T6 r262is_a(T262* C,T0* a1){
T6 R=0;
T0* _t2=NULL;
T0* _t1=NULL;
T2 _i=0;
/*[IF*/
if(X46is_none(a1)){
}
 else if((r262run_class(C))==((void*)(X46run_class(a1)))){
R=1;
}
 else if(X46is_generic(a1)){
/*[IF*/
if((r262base_class(C))==((void*)(X46base_class(a1)))){
R=1;
_i=((T249*)((C)->_generic_list/*8*/))->_upper/*8*/;
while (!((!(R))||((_i)==(0)))) {
_t1=X46run_type(r249item((T249*)((C)->_generic_list/*8*/),_i));
_t2=X46run_type(r249item((T249*)(X46generic_list(a1)),_i));
/*[IF*/
if(X46is_a(_t1,_t2)){
_i=(_i)-(1);
}
else{
R=0;
/*[IRF3.6append*/{T0* b1=((T0*)ms12_28959);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
}
/*FI]*/
}
}
 else if(r22is_subclass_of((T22*)(r262base_class(C)),X46base_class(a1))){
R=r22is_a_vncg((T22*)(r262base_class(C)),(T0*)C,a1);
}
/*FI]*/
}
else{
/*[IF*/
if(r22is_subclass_of((T22*)(r262base_class(C)),X46base_class(a1))){
R=1;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(!(R)){
r67add_type((T0*)C,((T0*)ms12_17730));
r67add_type(a1,((T0*)ms262_17216));
}
/*FI]*/
return R;
}


T6 r262is_run_type(T262* C){
T6 R=0;
/*[IF*/
if(((C)->_run_type_memory/*16*/)!=((void*)(NULL))){
R=1;
}
 else if(r262is_written_runnable(C)){
R=1;
}
/*FI]*/
return R;
}
/*No:TYPE_GENERIC.is_character*/


T6 r262is_reference(T262* C){
T6 R=0;
R=!(((T22*)(r262base_class(C)))->_is_expanded/*20*/);
return R;
}
/*No:TYPE_GENERIC.written_mark*/
T0*oBC262tmp_mark=NULL;


void r262make(T262* C,T0* a1,T0* a2){
T0* _t=NULL;
T2 _i=0;
C->_base_class_name=a1;
C->_generic_list=a2;
r7copy((T7*)(oBC262tmp_mark),(((T47*)a1))->_to_string/*0*/);
r7extend((T7*)(oBC262tmp_mark),'\133');
_i=1;
while (!((_i)>((((T249*)a2))->_upper/*8*/))) {
_t=r249item(((T249*)a2),_i);
r7append((T7*)(oBC262tmp_mark),X46written_mark(_t));
_i=(_i)+(1);
/*[IF*/
if((_i)<=((((T249*)a2))->_upper/*8*/)){
r7extend((T7*)(oBC262tmp_mark),'\54');
}
/*FI]*/
}
r7extend((T7*)(oBC262tmp_mark),'\135');
C->_written_mark=r78item(oBC262tmp_mark);
}
/*No:TYPE_GENERIC.is_none*/
/*No:TYPE_GENERIC.is_array*/
/*No:TYPE_GENERIC.fz_inako*/
/*No:TYPE_GENERIC.fz_bga*/
/*No:TYPE_GENERIC.is_like_argument*/
/*No:TYPE_GENERIC.is_double*/


void r262short(T262* C){
r39hook((T39*)(oBC11short_print),((T0*)ms46_891));
r262short_hook(C);
r39hook((T39*)(oBC11short_print),((T0*)ms46_888));
}


T0* r260generic_list(T260* C){
T0* R=NULL;
r260fatal_error_generic_list(C);
return R;
}


T0* r260base_class(T260* 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_STRING.base_class_name*/
/*No:TYPE_STRING.start_position*/
/*No:TYPE_STRING.us_capacity*/
/*No:TYPE_STRING.is_formal_generic*/
/*No:TYPE_STRING.used_as_reference*/


T6 r260is_a_in(T260* C,T0* a1,T0* a2){
T6 R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*[IF*/
if((r260written_mark())==((void*)(X46written_mark(a1)))){
R=1;
}
else{
_ct=(((T310*)a2))->_current_type/*0*/;
_t1=/*(IRF4.4to_runnable*/((T0*)(C))/*)*/;
_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_STRING.id*/
/*No:TYPE_STRING.is_pointer*/


T0* r260look_up_for(T260* C,T0* a1,T0* a2){
T0* R=NULL;
R=r22look_up_for((T22*)(r260base_class(C)),a1,a2);
return R;
}
/*No:TYPE_STRING.to_runnable*/
/*No:TYPE_STRING.run_type*/


T0* r260run_class(T260* C){
T0* R=NULL;
R=r59run_class((T0*)C);
return R;
}


T6 r260has_creation(T260* C,T0* a1){
T6 R=0;
R=r22has_creation((T22*)(r260base_class(C)),a1);
return R;
}
/*No:TYPE_STRING.expanded_initializer*/
/*No:TYPE_STRING.us_string*/
/*No:TYPE_STRING.is_like_current*/
/*No:TYPE_STRING.is_boolean*/
/*No:TYPE_STRING.is_generic*/
/*No:TYPE_STRING.is_bit*/
/*No:TYPE_STRING.is_real*/
/*No:TYPE_STRING.us_storage*/


T0* r260smallest_ancestor(T260* C,T0* a1){
T0* R=NULL;
T0* _rto_bc=NULL;
T0* _rto=NULL;
_rto=X46run_type(a1);
/*[IF*/
if(X46is_string(_rto)){
R=(T0*)C;
}
 else if(X46is_none(_rto)){
R=(T0*)C;
}
 else if(X46is_expanded(_rto)){
R=X46smallest_ancestor(_rto,(T0*)C);
}
else{
_rto_bc=X46base_class(_rto);
/*[IF*/
if(r22is_subclass_of(((T22*)_rto_bc),r260base_class(C))){
R=(T0*)C;
}
else{
R=X46smallest_ancestor(_rto,(T0*)C);
}
/*FI]*/
}
/*FI]*/
return R;
}
int fBC260set_at_run_time=0;


void r260set_at_run_time(void){
if (fBC260set_at_run_time==0){
T0* _rf=NULL;
T0* _rc=NULL;
T0* _bc=NULL;
fBC260set_at_run_time=1;
_bc=r260base_class((T260*)(r260type_string()));
_rc=r260run_class((T260*)(r260type_string()));
r310set_at_run_time(((T310*)_rc));
_rf=r310get_feature_with(((T310*)_rc),((T0*)ms13_11896));
_rf=r310get_feature_with(((T310*)_rc),((T0*)ms13_2840a));
_rf=r310get_feature_with(((T310*)_rc),((T0*)ms13_8925));
r310set_at_run_time((T310*)(X46run_class(X312result_type(_rf))));
}}
/*No:TYPE_STRING.is_any*/


T0* r260run_time_mark(void){
T0* R=NULL;
R=((T0*)ms13_5046);
return R;
}
/*No:TYPE_STRING.is_expanded*/
/*No:TYPE_STRING.is_basic_eiffel_expanded*/
/*No:TYPE_STRING.us_count*/
/*No:TYPE_STRING.short_hook*/
/*No:TYPE_STRING.is_string*/
/*No:TYPE_STRING.is_integer*/
/*No:TYPE_STRING.is_like_feature*/
/*No:TYPE_STRING.fz_dot*/
/*No:TYPE_STRING.is_anchored*/
/*No:TYPE_STRING.is_run_type*/


T6 r260is_a(T260* C,T0* a1){
T6 R=0;
/*[IF*/
if(X46is_string(a1)){
R=1;
}
else{
R=r22is_subclass_of((T22*)(r260base_class(C)),X46base_class(a1));
}
/*FI]*/
/*[IF*/
if(!(R)){
r67add_type((T0*)C,((T0*)ms12_17730));
r67add_type(a1,((T0*)ms12_47));
}
/*FI]*/
return R;
}
/*No:TYPE_STRING.is_character*/
/*No:TYPE_STRING.is_reference*/


T0* r260written_mark(void){
T0* R=NULL;
R=((T0*)ms13_5046);
return R;
}


void r260make(T260* C,T0* a1){
{T47*n=malloc(sizeof(*n));
*n=M47;
r47make(n,((T0*)ms13_5046),a1);
C->_base_class_name=(T0*)n;
}
}
/*No:TYPE_STRING.is_none*/
/*No:TYPE_STRING.is_array*/
/*No:TYPE_STRING.fz_inako*/


void r260fatal_error_generic_list(T260* C){
r67add_type((T0*)C,((T0*)ms46_29184));
r67print_as_fatal_error((T67*)(oBC11eh));
}
/*No:TYPE_STRING.is_like_argument*/
/*No:TYPE_STRING.is_double*/


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


T0* r260type_string(void){
if(fBC11type_string==0){
fBC11type_string=1;
{T260*n=malloc(sizeof(*n));
*n=M260;
r260make(n,NULL);
oBC11type_string=(T0*)n;
}
}
return oBC11type_string;}


T0* r252generic_list(T252* C){
T0* R=NULL;
r252fatal_error_generic_list(C);
return R;
}


T0* r252base_class(T252* 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_BOOLEAN.base_class_name*/
/*No:TYPE_BOOLEAN.start_position*/
/*No:TYPE_BOOLEAN.is_formal_generic*/
int fBC252used_as_reference=0;

