/*
-- 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"


T0* r271run_time_mark(void){
T0* R=NULL;
R=((T0*)ms14_1208);
return R;
}
/*No:TYPE_REAL.is_expanded*/
/*No:TYPE_REAL.gc_info_in*/
/*No:TYPE_REAL.gc_define2*/
/*No:TYPE_REAL.fz_dot*/
/*No:TYPE_REAL.is_like_feature*/


T6 r271is_a(T271* C,T0* a1){
T6 R=0;
/*[IF*/
if((X54is_real(a1))||(X54is_double(a1))){
R=1;
}
 else if(r63is_subclass_of((T63*)(r271base_class(C)),X54base_class(a1))){
R=1;
r271used_as_reference();
}
 else if((X54run_time_mark(a1))==((void*)(((T0*)ms14_10890)))){
R=1;
((/*UT*/(void)((T267*)(r271type_double()))),r267used_as_reference());
}
/*FI]*/
/*[IF*/
if(!(R)){
r21add_type((T0*)C,((T0*)ms13_17730));
r21add_type(a1,((T0*)ms13_47));
}
/*FI]*/
return R;
}
/*No:TYPE_REAL.c_initialize*/
/*No:TYPE_REAL.is_character*/


T0* r271written_mark(void){
T0* R=NULL;
R=((T0*)ms14_1208);
return R;
}


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


void r271make(T271* C,T0* a1){
{T64*n=malloc(sizeof(*n));
*n=M64;
r64make(n,((T0*)ms14_1208),a1);
C->_base_class_name=(T0*)n;
}
}


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


void r271fatal_error_generic_list(T271* C){
r21add_type((T0*)C,((T0*)ms54_29184));
r21print_as_fatal_error((T21*)(oBC12eh));
}
/*No:TYPE_REAL.is_array*/
/*No:TYPE_REAL.is_dummy_expanded*/


T2 r271space_for_variable(void){
T2 R=0;
R=sizeof(T4);
return R;
}
/*No:TYPE_REAL.to_expanded*/


T0* r271generic_list(T271* C){
T0* R=NULL;
r271fatal_error_generic_list(C);
return R;
}


T0* r271base_class(T271* 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_REAL.cast_to_ref*/
/*No:TYPE_REAL.base_class_name*/
/*No:TYPE_REAL.is_formal_generic*/


T6 r271is_a_in(T271* C,T0* a1,T0* a2){
T6 R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*[IF*/
if((r271written_mark())==((void*)(X54written_mark(a1)))){
R=1;
}
else{
_ct=(((T24*)a2))->_current_type/*0*/;
_t1=r271to_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* r271look_up_for(T271* C,T0* a1,T0* a2){
T0* R=NULL;
R=r63look_up_for((T63*)(r271base_class(C)),a1,a2);
return R;
}
/*No:TYPE_REAL.us_double_ref*/


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


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


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


void r271gc_call_new_in(T0* a1){
r7append(((T7*)a1),((T0*)ms13_1008));
r2append_in(4,a1);
r7extend(((T7*)a1),'\50');
r7extend(((T7*)a1),'\51');
}
/*No:TYPE_REAL.fz_new*/
/*No:TYPE_REAL.is_boolean*/
/*No:TYPE_REAL.mapping_cast*/
/*No:TYPE_REAL.is_generic*/
/*No:TYPE_REAL.is_real*/
/*No:TYPE_REAL.need_c_struct*/
/*No:TYPE_REAL.is_any*/
/*No:TYPE_REAL.nb_errors*/
/*No:TYPE_REAL.is_basic_eiffel_expanded*/
/*No:TYPE_REAL.fz_gc_mark*/
int fBC12type_real_ref=0;
T0*oBC12type_real_ref=NULL;


T0* r271type_real_ref(void){
if(fBC12type_real_ref==0){
T0* _real_ref=NULL;
fBC12type_real_ref=1;
{T64*n=malloc(sizeof(*n));
*n=M64;
r64make(n,((T0*)ms14_7696),NULL);
_real_ref=(T0*)n;
}
{T273*n=malloc(sizeof(*n));
*n=M273;
/*[IRF3.3make*/((((T273*)(n)))->_base_class_name)=(_real_ref);
/*]*/
oBC12type_real_ref=(T0*)n;
}
}
return oBC12type_real_ref;}
int fBC12type_double=0;
T0*oBC12type_double=NULL;


T0* r271type_double(void){
if(fBC12type_double==0){
fBC12type_double=1;
{T267*n=malloc(sizeof(*n));
*n=M267;
r267make(n,NULL);
oBC12type_double=(T0*)n;
}
}
return oBC12type_double;}
/*No:TYPE_REAL.need_gc_mark_function*/


T6 r271is_native_array(T271* 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_REAL.is_string*/
/*No:TYPE_REAL.is_integer*/
/*No:TYPE_REAL.is_anchored*/
/*No:TYPE_REAL.is_run_type*/
/*No:TYPE_REAL.is_reference*/
/*No:TYPE_REAL.is_none*/
/*No:TYPE_REAL.us_real*/
/*No:TYPE_REAL.fz_inako*/
/*No:TYPE_REAL.is_like_argument*/
/*No:TYPE_REAL.just_before_gc_mark_in*/


void r271load_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_REAL.mapping_cast_memory*/
int fBC271check_type=0;


void r271check_type(T271* C){
if (fBC271check_type==0){
T0* _rc=NULL;
T0* _bc=NULL;
fBC271check_type=1;
_bc=r271base_class(C);
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
_rc=r271run_class(C);
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(!((((T63*)_bc))->_is_expanded/*20*/)){
r271error(/*(IRF4.6start_position*/(((T64*)((C)->_base_class_name/*4*/)))->_start_position/*4*//*)*/,((T0*)ms271_29722));
}
/*FI]*/
}
/*FI]*/
}}
/*No:TYPE_REAL.is_double*/
/*No:FEATURE_CLAUSE_LIST.add_last*/


void r95get_started(T95* C,T0* a1){
T2 _i=0;
_i=1;
while (!((_i)>(((T97*)((C)->_list/*0*/))->_upper/*8*/))) {
r96add_into((T96*)(r97item((T97*)((C)->_list/*0*/),_i)),a1);
_i=(_i)+(1);
}
}
/*No:FEATURE_CLAUSE_LIST.make*/
/*No:FEATURE_CLAUSE_LIST.list*/
/*No:FORMAL_GENERIC_LIST.start_position*/
/*No:FORMAL_GENERIC_LIST.item*/
/*No:FORMAL_GENERIC_LIST.count*/


void r94make(T94* C,T0* a1,T0* a2){
T0* _fga=NULL;
T2 _i=0;
T2 _rank=0;
C->_start_position=a1;
C->_list=a2;
_i=(((T279*)a2))->_upper/*8*/;
while (!((_i)==(0))) {
_fga=r279item(((T279*)a2),_i);
_rank=r94index_of(C,(((T278*)_fga))->_name/*0*/);
/*[IF*/
if((_rank)!=(_i)){
r21add_position(/*(IRF4.6start_position*/(((T64*)(((T278*)(r279item(((T279*)a2),_rank)))->_name/*0*/)))->_start_position/*4*//*)*/);
r21add_position(/*(IRF4.6start_position*/(((T64*)((((T278*)_fga))->_name/*0*/)))->_start_position/*4*//*)*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms94_178923);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
_i=(_i)-(1);
}
}


T2 r94index_of(T94* C,T0* a1){
T2 R=0;
T0* _to_string=NULL;
_to_string=(((T64*)a1))->_to_string/*0*/;
R=((T279*)((C)->_list/*4*/))->_upper/*8*/;
while (!(((R)==(0))||((_to_string)==((void*)(((T64*)(((T278*)(r279item((T279*)((C)->_list/*4*/),R)))->_name/*0*/))->_to_string/*0*/))))) {
R=(R)-(1);
}
return R;
}
/*No:FORMAL_GENERIC_LIST.list*/
/*No:FORMAL_GENERIC_LIST.fatal_error*/
/*No:CST_ATT_BIT.base_class*/
/*No:CST_ATT_BIT.value_mem*/


T0* r210start_position(T210* C){
T0* R=NULL;
R=X83start_position(/*(IRF4.6first_name*/r85item(((T85*)((C)->_names/*8*/)),1)/*)*/);
return R;
}


T6 r210is_merge_with(T210* C,T0* a1,T0* a2){
T6 R=0;
R=1;
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(X93result_type(a1)))){
/*[IF*/
if((((C)->_result_type/*20*/)==((void*)(NULL)))||((X93result_type(a1))==((void*)(NULL)))){
R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(X93arguments(a1)))){
/*[IF*/
{/*AT*/R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(NULL))){
R=X54is_a_in((C)->_result_type/*20*/,X93result_type(a1),a2);
}
/*FI]*/
/*[IF*/
if((R)&&((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(NULL)))){
R=r187is_a_in((T187*)(/*(IRF4.1arguments*/NULL/*)*/),X93arguments(a1),a2);
}
/*FI]*/
/*[IF*/
if(!(R)){
R=1;
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T69*)((T69*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(NULL))){
R=X54is_a_in(X93result_type(a1),(C)->_result_type/*20*/,a2);
}
/*FI]*/
/*[IF*/
if((R)&&((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(NULL)))){
R=r187is_a_in((T187*)(X93arguments(a1)),/*(IRF4.1arguments*/NULL/*)*/,a2);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
r210merge_header_comments(C,a1);
}
/*FI]*/
return R;
}
/*No:CST_ATT_BIT.first_name*/
/*No:CST_ATT_BIT.em1*/
/*No:CST_ATT_BIT.header_comment*/
/*No:CST_ATT_BIT.names*/
/*No:CST_ATT_BIT.result_type*/
/*No:CST_ATT_BIT.code_require*/
/*No:CST_ATT_BIT.make_e_feature*/


void r210add_into(T210* C,T0* a1){
T0* _fn=NULL;
T2 _i=0;
C->_base_class=r70base_class((T70*)(X83start_position(r85item((T85*)((C)->_names/*8*/),1))));
_i=1;
while (!((_i)>(r85count((T85*)((C)->_names/*8*/))))) {
_fn=r85item((T85*)((C)->_names/*8*/),_i);
/*[IF*/
if(r92has(((T92*)a1),X83to_key(_fn))){
_fn=/*X93first_name*/((T0*)/*(IRF4.6first_name*/r85item(((T85*)(((T199*)(r92at(((T92*)a1),X83to_key(_fn))))->_names/*8*/)),1)/*)*/);
r21add_position(X83start_position(_fn));
r21add_position(X83start_position(r85item((T85*)((C)->_names/*8*/),_i)));
r21error((T21*)(oBC12eh),((T0*)ms93_41905));
/*[IRF3.6append*/{T0* b1=X83to_string(_fn);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21error((T21*)(oBC12eh),((T0*)ms13_47));
}
else{
r92put(((T92*)a1),(T0*)C,X83to_key(_fn));
}
/*FI]*/
_i=(_i)+(1);
}
}


T6 r210can_hide(T210* C,T0* a1,T0* a2){
T6 R=0;
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(X93result_type(a1)))){
/*[IF*/
if((((C)->_result_type/*20*/)==((void*)(NULL)))||((X93result_type(a1))==((void*)(NULL)))){
r21add_position(X93start_position(a1));
r210error(r210start_position(C),((T0*)ms93_64647));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(X93arguments(a1)))){
/*[IF*/
{/*AT*/r21add_position(X93start_position(a1));
r210error(r210start_position(C),((T0*)ms93_83182));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(NULL))){
/*[IF*/
if(!(X54is_a_in((C)->_result_type/*20*/,X93result_type(a1),a2))){
/*[IRF3.6append*/{T0* b1=((T0*)ms93_54285);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X54run_time_mark((((T24*)a2))->_current_type/*0*/);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21error((T21*)(oBC12eh),((T0*)ms13_47));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*FI]*/
R=(/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0);
/*[IF*/
if(R){
r210merge_header_comments(C,a1);
}
/*FI]*/
return R;
}
/*No:CST_ATT_BIT.ensure_assertion*/


T0* r210try_to_undefine(T210* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _fn2=NULL;
r21add_position(X83start_position(a1));
_fn2=r85feature_name((T85*)((C)->_names/*8*/),X83to_key(a1));
/*[IF*/
if((_fn2)!=((void*)(NULL))){
X83undefine_in(_fn2,a2);
}
/*FI]*/
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T69*)((T69*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
R=r210try_to_undefine_aux(C,a1,a2);
/*[IF*/
if((R)!=((void*)(NULL))){
/*X284set_clients*//*[IRF3.3set_clients*/((((T287*)(((T287*)R))))->_clients)=((C)->_clients/*16*/);
/*]*/
r210merge_header_comments(C,R);
}
else{
r63fatal_undefine(((T63*)a2),a1);
}
/*FI]*/
return R;
}
/*No:CST_ATT_BIT.is_deferred*/
/*No:CST_ATT_BIT.set_clients*/
/*No:CST_ATT_BIT.value*/
/*No:CST_ATT_BIT.nb_errors*/


T0* r210to_run_feature(T210* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _rc=NULL;
_rc=X54run_class(a1);
R=r24at(((T24*)_rc),a2);
if(NULL!=(R))switch(((T0*)R)->id) {
case 376: 
break;
default:
R=NULL;
};/*[IF*/
if((R)==((void*)(NULL))){
{T376*n=malloc(sizeof(*n));
*n=M376;
r376make(n,a1,a2,(T0*)C);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


void r210merge_header_comments(T210* C,T0* a1){
/*[IF*/
if(((T22*)(oBC12small_eiffel))->_short_flag/*8*/){
/*[IF*/
if(((C)->_header_comment/*12*/)==((void*)(NULL))){
C->_header_comment=/*X93header_comment*/((T0*)(((T199*)a1))->_header_comment/*12*/);
}
 else if((/*X93header_comment*/((T0*)(((T199*)a1))->_header_comment/*12*/))==((void*)(NULL))){
X93set_header_comment(a1,(C)->_header_comment/*12*/);
}
/*FI]*/
}
/*FI]*/
}
/*No:CST_ATT_BIT.arguments*/
/*No:CST_ATT_BIT.require_assertion*/


T0* r210try_to_undefine_aux(T210* C,T0* a1,T0* a2){
T0* R=NULL;
r21add_position(r210start_position(C));
r210error(X83start_position(a1),((T0*)ms201_99414));
r63fatal_undefine(((T63*)a2),a1);
return R;
}
/*No:CST_ATT_BIT.fz_dot*/
/*No:CST_ATT_BIT.stupid_switch*/


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


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


void r210collect_for(T2 a1){
T0* _er=NULL;
/*[IF*/
if((a1)==(1)){
_er=/*(IRF4.1require_assertion*/NULL/*)*/;
/*[IF*/
if((_er)!=((void*)(NULL))){
/*[IF*/
if(!(r358fast_has((T358*)(oBC93require_collector),_er))){
r358add_last((T358*)(oBC93require_collector),_er);
}
/*FI]*/
}
/*FI]*/
}
else{
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*FI]*/
}
/*No:CST_ATT_BIT.set_header_comment*/
/*No:CST_ATT_BIT.clients*/

