/*
-- ANSI C code generated by :
-- SmallEiffel The GNU Eiffel Compiler -- Release (- 0.82)      --
-- 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"
int r958id(T958* C){
int R=0;
R=(((T355*)((T355*)(r958run_class(C)))))->_id/*4*/;
return R;
}
int r958has_creation(T958* C,T0* a1){
int R=0;
R=X291has_creation((((T958*)C))->_run_type/*8*/,a1);
return R;
}
/*No:TYPE_LIKE_CURRENT.is_anchored*/
int r958is_array(T958* C){
int R=0;
R=X291is_array((((T958*)C))->_run_type/*8*/);
return R;
}
int r958is_a(T958* C,T0* a1){
int R=0;
R=X291is_a((((T958*)C))->_run_type/*8*/,a1);
return R;
}
void r958c_initialize_in(T958* C,T0* a1){
X291c_initialize_in((((T958*)C))->_run_type/*8*/,a1);
}
void r958c_type_for_argument_in(T958* C,T0* a1){
X291c_type_for_argument_in((((T958*)C))->_run_type/*8*/,a1);
}
void r958gc_call_new_in(T958* C,T0* a1){
r7append(((T7*)a1),((T0*)ms115_470));
r2append_in(r958id(C),a1);
r7extend(((T7*)a1),'\50');
r7extend(((T7*)a1),'\51');
}
int r958is_pointer(T958* C){
int R=0;
R=X291is_pointer((((T958*)C))->_run_type/*8*/);
return R;
}
/*No:TYPE_LIKE_CURRENT.run_type*/
int r958is_dummy_expanded(T958* C){
int R=0;
R=X291is_dummy_expanded((((T958*)C))->_run_type/*8*/);
return R;
}
int r958is_string(T958* C){
int R=0;
R=X291is_string((((T958*)C))->_run_type/*8*/);
return R;
}
int r958space_for_variable(T958* C){
int R=0;
R=X291space_for_variable((((T958*)C))->_run_type/*8*/);
return R;
}
/*No:TYPE_LIKE_CURRENT.is_like_feature*/
/*No:TYPE_LIKE_CURRENT.is_like_current*/
void r958make(T958* C,T0* a1,T0* a2){
C->_start_position=a1;
C->_like_what=a2;
if(NULL!=(C->_like_what))switch(((T0*)C->_like_what)->id) {
case 358: case 716: 
break;
default:
C->_like_what=NULL;
};}
/*No:TYPE_LIKE_CURRENT.us_like_current*/
void r958mapping_cast(T958* C){
/*[IRF3.3clear*/((((T7*)(((T7*)(oBC291tmp_string)))))->_count)=(0);
/*]*/
r7extend(((T7*)(oBC291tmp_string)),'\50');
r958c_type_for_target_in(C,oBC291tmp_string);
r7extend(((T7*)(oBC291tmp_string)),'\51');
/*[IRF3.5put_string*/r544put_string(((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/)),oBC291tmp_string);
/*]*/
}
/*No:TYPE_LIKE_CURRENT.start_position*/
void r958c_type_for_target_in(T958* C,T0* a1){
X291c_type_for_target_in((((T958*)C))->_run_type/*8*/,a1);
}
/*No:TYPE_LIKE_CURRENT.fz_gc_mark*/
/*No:TYPE_LIKE_CURRENT.like_what*/
void r958gc_initialize(T958* C){
X291gc_initialize((((T958*)C))->_run_type/*8*/);
}
int r958is_character(T958* C){
int R=0;
R=X291is_character((((T958*)C))->_run_type/*8*/);
return R;
}
int r958is_user_expanded(T958* C){
int R=0;
R=X291is_user_expanded((((T958*)C))->_run_type/*8*/);
return R;
}
T0* r958written_mark(void){
T0* R=NULL;
R=((T0*)ms145_473);
return R;
}
/*No:TYPE_LIKE_CURRENT.is_run_type*/
T0* r958to_runnable(T958* C,T0* a1){
T0* R=NULL;
/*IF*/if (((((T958*)C))->_run_type/*8*/)==((void*)(NULL))) {
C->_run_type=X291run_type(a1);
R=(T0*)C;
}
else {
{T958*n=malloc(sizeof(*n));
*n=M958;
r958make(n,(((T958*)C))->_start_position/*4*/,(((T958*)C))->_like_what/*12*/);
R=(T0*)n;
}
R=r958to_runnable(((T958*)R),a1);
}
/*FI*/return R;
}
void r958c_type_for_external_in(T958* C,T0* a1){
/*IF*/if (r958is_reference(C)) {
r7append(((T7*)a1),((T0*)ms133_470));
r7extend(((T7*)a1),'\52');
}
else {
r958c_type_for_result_in(C,a1);
}
/*FI*/}
T0* r958generic_list(T958* C){
T0* R=NULL;
/*IF*/if (r958is_generic(C)) {
R=X291generic_list((((T958*)C))->_run_type/*8*/);
}
else {
r958fatal_error_generic_list(C);
}
/*FI*/return R;
}
/*No:TYPE_LIKE_CURRENT.is_formal_generic*/
void r958demangling_in(T958* C,T0* a1){
/*IF*/if (r958is_reference(C)) {
r7extend(((T7*)a1),'R');
}
else {
r7extend(((T7*)a1),'E');
}
/*FI*/r7extend(((T7*)a1),'\40');
r7append(((T7*)a1),r958run_time_mark(C));
}
int r958is_real(T958* C){
int R=0;
R=X291is_real((((T958*)C))->_run_type/*8*/);
return R;
}
int r958is_bit(T958* C){
int R=0;
R=X291is_bit((((T958*)C))->_run_type/*8*/);
return R;
}
void r958fatal_error_generic_list(T958* C){
r683add_type((T0*)C,((T0*)ms12_291));
r683print_as_fatal_error(((T683*)(oBC364eh)));
}
/*No:TYPE_LIKE_CURRENT.fz_new*/
T0*oBC291tmp_string=NULL;
T0* r958smallest_ancestor(T958* C,T0* a1){
T0* R=NULL;
R=X291smallest_ancestor((((T958*)C))->_run_type/*8*/,a1);
return R;
}
int r958is_boolean(T958* C){
int R=0;
R=X291is_boolean((((T958*)C))->_run_type/*8*/);
return R;
}
int r958is_double(T958* C){
int R=0;
R=X291is_double((((T958*)C))->_run_type/*8*/);
return R;
}
T0* r958run_class(T958* C){
T0* R=NULL;
R=r604run_class((((T958*)C))->_run_type/*8*/);
return R;
}
T0* r958run_time_mark(T958* C){
T0* R=NULL;
/*IF*/if (((((T958*)C))->_run_type/*8*/)!=((void*)(NULL))) {
R=X291run_time_mark((((T958*)C))->_run_type/*8*/);
}
/*FI*/return R;
}
void r958c_initialize(T958* C){
X291c_initialize((((T958*)C))->_run_type/*8*/);
}
void r958cast_to_ref(T958* C){
X291cast_to_ref((((T958*)C))->_run_type/*8*/);
}
void r958gc_mark_in(T958* C,T0* a1){
r7append(((T7*)a1),((T0*)ms107_470));
r2append_in(r958id(C),a1);
}
int r958is_a_in(T958* C,T0* a1,T0* a2){
int R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*IF*/if ((r958written_mark())==((void*)(X291written_mark(a1)))) {
R=1;
}
else {
_ct=(((T355*)((T355*)a2)))->_current_type/*0*/;
_t1=r958to_runnable(C,_ct);
_t2=X291to_runnable(a1,_ct);
/*IF*/if ((X291run_time_mark(_t1))==((void*)(X291run_time_mark(_t2)))) {
R=1;
}
else {
R=X291is_a(_t1,_t2);
}
/*FI*/}
/*FI*/return R;
}
T0* r958look_up_for(T958* C,T0* a1,T0* a2){
T0* R=NULL;
R=r605look_up_for(((T605*)(r958base_class(C))),a1,a2);
return R;
}
void r958c_header_pass1(T958* C){
X291c_header_pass1((((T958*)C))->_run_type/*8*/);
}
void r958c_type_for_result_in(T958* C,T0* a1){
X291c_type_for_result_in((((T958*)C))->_run_type/*8*/,a1);
}
T0* r958expanded_initializer(T958* C){
T0* R=NULL;
R=X291expanded_initializer((((T958*)C))->_run_type/*8*/);
return R;
}
/*No:TYPE_LIKE_CURRENT.fz_void*/
/*No:TYPE_LIKE_CURRENT.fz_dot*/
int r958is_generic(T958* C){
int R=0;
R=X291is_generic((((T958*)C))->_run_type/*8*/);
return R;
}
/*No:TYPE_LIKE_CURRENT.used_as_reference*/
void r958c_header_pass2(T958* C){
X291c_header_pass2((((T958*)C))->_run_type/*8*/);
}
void r958gc_define1(T958* C){
X291gc_define1((((T958*)C))->_run_type/*8*/);
}
int r958need_c_struct(T958* C){
int R=0;
R=X291need_c_struct((((T958*)C))->_run_type/*8*/);
return R;
}
int r958is_reference(T958* C){
int R=0;
R=X291is_reference((((T958*)C))->_run_type/*8*/);
return R;
}
void r958gc_info_in(T958* C,T0* a1){
X291gc_info_in((((T958*)C))->_run_type/*8*/,a1);
}
T0* r958base_class(T958* C){
T0* R=NULL;
T0* _bcn=NULL;
_bcn=r958base_class_name(C);
/*IF*/if ((_bcn)!=((void*)(NULL))) {
R=r451base_class(((T451*)_bcn));
}
else {
/*[IRF3.6append*/{T0* b1=((T0*)ms3_291);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r683add_type((T0*)C,((T0*)ms67_470));
r683print_as_fatal_error(((T683*)(oBC364eh)));
}
/*FI*/return R;
}
void r958call_gc_sweep_in(T958* C,T0* a1){
X291call_gc_sweep_in((((T958*)C))->_run_type/*8*/,a1);
}
void r958gc_define2(T958* C){
X291gc_define2((((T958*)C))->_run_type/*8*/);
}
int r958need_gc_mark_function(T958* C){
int R=0;
R=X291need_gc_mark_function((((T958*)C))->_run_type/*8*/);
return R;
}
int r958is_any(T958* C){
int R=0;
R=X291is_any((((T958*)C))->_run_type/*8*/);
return R;
}
void r958to_reference(T958* C){
X291to_reference((((T958*)C))->_run_type/*8*/);
}
void r958c_header_pass3(T958* C){
X291c_header_pass3((((T958*)C))->_run_type/*8*/);
}
T0* r958base_class_name(T958* C){
T0* R=NULL;
R=X291base_class_name((((T958*)C))->_run_type/*8*/);
return R;
}
int r958is_expanded(T958* C){
int R=0;
R=X291is_expanded((((T958*)C))->_run_type/*8*/);
return R;
}
int r958is_basic_eiffel_expanded(T958* C){
int R=0;
R=X291is_basic_eiffel_expanded((((T958*)C))->_run_type/*8*/);
return R;
}
int r958is_none(T958* C){
int R=0;
R=X291is_none((((T958*)C))->_run_type/*8*/);
return R;
}
void r958to_expanded(T958* C){
X291to_expanded((((T958*)C))->_run_type/*8*/);
}
int r958is_integer(T958* C){
int R=0;
R=X291is_integer((((T958*)C))->_run_type/*8*/);
return R;
}
void r958c_header_pass4(T958* C){
X291c_header_pass4((((T958*)C))->_run_type/*8*/);
}
void r306print_count(T306* C,T0* a1,int a2){
/*IF*/if ((((T306*)C))->_verbose/*0*/) {
/*IF*/if ((a2)>(0)) {
r306put_string(C,((T0*)ms6_306));
r306put_string(C,a1);
/*IF*/if ((a2)>(1)) {
r306put_character(C,'s');
}
/*FI*/r306put_string(C,((T0*)ms7_306));
r306put_integer(C,a2);
r306put_string(C,((T0*)ms241_470));
}
else {
r306put_string(C,((T0*)ms8_306));
r306put_string(C,a1);
r306put_string(C,((T0*)ms241_470));
}
/*FI*/}
/*FI*/}
/*No:ECHO.make*/
/*No:ECHO.verbose*/
void r306file_removing(T306* C,T0* a1){
/*IF*/if (r306file_exists(a1)) {
r306put_string(C,((T0*)ms1_306));
r306put_string(C,a1);
r306put_string(C,((T0*)ms2_306));
/*[IRF3.6remove_file*/{T0* b1=a1;
/*[IRF3.6delete*/{T0* c1=b1;
remove(((char*)r7to_external(((T7*)c1))));
}/*]*/
}/*]*/
}
/*FI*/}
/*No:ECHO.remove_file*/
void r306sfr_connect(T306* C,T0* a1,T0* a2){
r306put_string(C,((T0*)ms3_306));
r306put_string(C,a2);
r306put_string(C,((T0*)ms4_306));
r675connect_to(((T675*)a1),a2);
}
void r306put_double_format(T306* C,double a1,int a2){
/*IF*/if ((((T306*)C))->_verbose/*0*/) {
r830put_double_format(((T830*)(oBC1std_output)),a1,a2);
/*[IRF3.6flush*/{T830* C1=((T830*)(oBC1std_output));
fflush(stdout);
}/*]*/
}
/*FI*/}
void r306put_string(T306* C,T0* a1){
/*IF*/if ((((T306*)C))->_verbose/*0*/) {
r830put_string(((T830*)(oBC1std_output)),a1);
/*[IRF3.6flush*/{T830* C1=((T830*)(oBC1std_output));
fflush(stdout);
}/*]*/
}
/*FI*/}
void r306put_integer(T306* C,int a1){
/*IF*/if ((((T306*)C))->_verbose/*0*/) {
r830put_integer(((T830*)(oBC1std_output)),a1);
/*[IRF3.6flush*/{T830* C1=((T830*)(oBC1std_output));
fflush(stdout);
}/*]*/
}
/*FI*/}
void r306w_put_string(T0* a1){
r441put_string(((T441*)(oBC1std_error)),a1);
/*[IRF3.6flush*/{T441* C1=((T441*)(oBC1std_error));
fflush(stderr);
}/*]*/
}
int r306file_exists(T0* a1){
int R=0;
R=r670is_readable(a1);
return R;
}
void r306put_character(T306* C,char a1){
/*IF*/if ((((T306*)C))->_verbose/*0*/) {
/*[IRF3.6put_character*/{T830* C1=((T830*)(oBC1std_output));
char b1=a1;
putc(b1,((FILE*)(stdout)));
}/*]*/
/*[IRF3.6flush*/{T830* C1=((T830*)(oBC1std_output));
fflush(stdout);
}/*]*/
}
/*FI*/}
/*No:ECHO.fz_b6*/
void r306w_put_character(char a1){
/*[IRF3.6put_character*/{T441* C1=((T441*)(oBC1std_error));
char b1=a1;
putc(b1,((FILE*)(stderr)));
}/*]*/
/*[IRF3.6flush*/{T441* C1=((T441*)(oBC1std_error));
fflush(stderr);
}/*]*/
}
/*No:ECHO.set_verbose*/
void r306w_put_integer(int a1){
r441put_integer(((T441*)(oBC1std_error)),a1);
/*[IRF3.6flush*/{T441* C1=((T441*)(oBC1std_error));
fflush(stderr);
}/*]*/
}
T0* r355at(T355* C,T0* a1){
T0* R=NULL;
T0* _to_key=NULL;
_to_key=X776to_key(a1);
/*IF*/if (r199has(((T199*)((((T355*)C))->_feature_dictionary/*24*/)),_to_key)) {
R=r199at(((T199*)((((T355*)C))->_feature_dictionary/*24*/)),_to_key);
}
/*FI*/return R;
}
int r355gt(T0* a1,T0* a2){
int R=0;
T0* _bcn2=NULL;
T0* _bcn1=NULL;
T0* _bf2=NULL;
T0* _bf1=NULL;
T0* _bc2=NULL;
T0* _bc1=NULL;
_bf1=(((T820*)((T820*)a1)))->_base_feature/*32*/;
_bf2=(((T820*)((T820*)a2)))->_base_feature/*32*/;
_bc1=/*X359*/((T0*)(((T398*)((T398*)_bf1)))->_base_class/*4*/);
_bc2=/*X359*/((T0*)(((T398*)((T398*)_bf2)))->_base_class/*4*/);
_bcn1=(((T605*)((T605*)_bc1)))->_base_class_name/*24*/;
_bcn2=(((T605*)((T605*)_bc2)))->_base_class_name/*24*/;
/*IF*/if (((((T451*)((T451*)_bcn1)))->_to_string/*0*/)==((void*)((((T451*)((T451*)_bcn2)))->_to_string/*0*/))) {
R=r627before(((T627*)(X359start_position(_bf1))),X359start_position(_bf2));
}
 else if (r451is_subclass_of(((T451*)_bcn2),_bcn1)) {
R=1;
}
 else if (r451is_subclass_of(((T451*)_bcn1),_bcn2)) {
}
 else if (((((T605*)((T605*)_bc1)))->_parent_list/*40*/)==((void*)(NULL))) {
/*IF*/if (((((T605*)((T605*)_bc2)))->_parent_list/*40*/)==((void*)(NULL))) {
R=r7_px_60(((T7*)((((T451*)((T451*)_bcn1)))->_to_string/*0*/)),(((T451*)((T451*)_bcn2)))->_to_string/*0*/);
}
else {
R=1;
}
/*FI*/}
 else if (((((T605*)((T605*)_bc2)))->_parent_list/*40*/)==((void*)(NULL))) {
}
else {
R=(/*(IRF4.6count*/(((T26*)((T26*)((((T673*)((T673*)((((T605*)((T605*)_bc2)))->_parent_list/*40*/))))->_list/*12*/))))->_upper/*8*//*)*/)<(/*(IRF4.6count*/(((T26*)((T26*)((((T673*)((T673*)((((T605*)((T605*)_bc1)))->_parent_list/*40*/))))->_list/*12*/))))->_upper/*8*//*)*/);
}
/*FI*/return R;
}
/*No:RUN_CLASS.id*/
T0* r355get_or_fatal_error(T355* C,T0* a1){
T0* R=NULL;
R=r355get_feature(C,a1);
/*IF*/if ((R)==((void*)(NULL))) {
r683add_position(X776start_position(a1));
/*[IRF3.6append*/{T0* b1=((T0*)ms6_355);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X776to_string(a1);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms7_355);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r683add_type((((T355*)C))->_current_type/*0*/,((T0*)ms67_470));
r683print_as_fatal_error(((T683*)(oBC364eh)));
}
/*FI*/return R;
}
/*No:RUN_CLASS.fz_bad_assertion*/
void r355falling_down(T355* C){
int _i=0;
T0* _rf=NULL;
_i=1;
while (!((_i)>((((T199*)((T199*)((((T355*)C))->_feature_dictionary/*24*/))))->_count/*40*/))) {
_rf=r199item(((T199*)((((T355*)C))->_feature_dictionary/*24*/)),_i);
X496fall_down(_rf);
_i=(_i)+(1);
}
}
/*No:RUN_CLASS.running*/
T0* r355runnable(T0* a1,T0* a2,T0* a3){
T0* R=NULL;
T0* _a=NULL;
int _i=0;
/*IF*/if (!(r608empty(((T608*)a1)))) {
R=r608twin(((T608*)a1));
_i=(((T608*)((T608*)R)))->_upper/*8*/;
while (!((_i)==(0))) {
r604push(((T604*)(oBC364small_eiffel)),a3);
_a=r348to_runnable(((T348*)(r608item(((T608*)R),_i))),a2);
/*IF*/if ((_a)==((void*)(NULL))) {
r355error(r348start_position(((T348*)(r608item(((T608*)R),_i)))),((T0*)ms57_470));
}
else {
/*[IRF3.6put*/{T608* C1=((T608*)R);
T0* b1=_a;
int b2=_i;
((((T608*)C1))->_storage/*0*/)[(b2)-((((T608*)C1))->_lower/*12*/)]=(b1);
}/*]*/
}
/*FI*/r604pop(((T604*)(oBC364small_eiffel)));
_i=(_i)-(1);
}
}
/*FI*/return R;
}
void r355set_at_run_time(T355* C){
int _i=0;
T0* _rc=NULL;
T0* _rcd=NULL;
/*IF*/if (!((((T355*)C))->_at_run_time/*8*/)) {
C->_at_run_time=1;
C->_compile_to_c_done=0;
r355add_running(C,(T0*)C);
r604incr_magic_count(((T604*)(oBC364small_eiffel)));
/*IF*/if (X291is_reference((((T355*)C))->_current_type/*0*/)) {
_rcd=oBC604run_class_dictionary;
_i=1;
while (!((_i)>((((T250*)((T250*)_rcd)))->_count/*40*/))) {
_rc=r250item(((T250*)_rcd),_i);
/*IF*/if (r355is_a(C,_rc)) {
r355add_running(((T355*)_rc),(T0*)C);
}
/*FI*/_i=(_i)+(1);
}
}
/*FI*/}
/*FI*/}
/*No:RUN_CLASS.writable_attributes_mem*/
int r355is_a(T355* C,T0* a1){
int R=0;
T0* _t2=NULL;
T0* _t1=NULL;
/*IF*/if ((a1)==((void*)(C))) {
R=1;
}
else {
_t1=(((T355*)C))->_current_type/*0*/;
_t2=(((T355*)((T355*)a1)))->_current_type/*0*/;
/*IF*/if ((X291is_basic_eiffel_expanded(_t1))&&(X291is_basic_eiffel_expanded(_t2))) {
}
else {
R=X291is_a(_t1,_t2);
/*IF*/if (!(R)) {
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)(((T7*)(oBC683explanation)))))->_count)=(0);
/*]*/
r38clear(((T38*)(oBC683positions)));
/*]*/
}
/*FI*/}
/*FI*/}
/*FI*/return R;
}
void r355demangling(T355* C){
int _i=0;
T0* _r=NULL;
T0* _str=NULL;
_str=((T0*)ms8_355);
/*[IRF3.3clear*/((((T7*)(((T7*)_str))))->_count)=(0);
/*]*/
/*IF*/if ((((T355*)C))->_at_run_time/*8*/) {
r7extend(((T7*)_str),'A');
/*IF*/if ((X291is_reference((((T355*)C))->_current_type/*0*/))&&(!(r355is_tagged(C)))) {
r7extend(((T7*)_str),'\52');
}
else {
r7extend(((T7*)_str),'\40');
}
/*FI*/}
else {
r7extend(((T7*)_str),'D');
r7extend(((T7*)_str),'\40');
}
/*FI*/_r=(((T355*)C))->_running/*12*/;
/*IF*/if ((_r)!=((void*)(NULL))) {
r2append_in(r396count(((T396*)_r)),_str);
}
/*FI*/while (!(((((T7*)((T7*)_str)))->_count/*4*/)>(4))) {
r7extend(((T7*)_str),'\40');
}
r7extend(((T7*)_str),'T');
r2append_in((((T355*)C))->_id/*4*/,_str);
while (!(((((T7*)((T7*)_str)))->_count/*4*/)>(10))) {
r7extend(((T7*)_str),'\40');
}
X291demangling_in((((T355*)C))->_current_type/*0*/,_str);
/*IF*/if ((_r)!=((void*)(NULL))) {
r7extend(((T7*)_str),'\40');
_i=(((T396*)((T396*)_r)))->_upper/*8*/;
while (!((_i)==(0))) {
r2append_in((((T355*)((T355*)(r396item(((T396*)_r),_i)))))->_id/*4*/,_str);
_i=(_i)-(1);
/*IF*/if ((_i)>(0)) {
r7extend(((T7*)_str),'\54');
}
/*FI*/}
}
/*FI*/r7extend(((T7*)_str),'\n');
/*[IRF3.5put_string*/r544put_string(((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/)),_str);
/*]*/
}
/*No:RUN_CLASS.actuals_clients*/
/*No:RUN_CLASS.at_run_time*/
T0* r355get_rf(T355* C,T0* a1){
T0* R=NULL;
T0* _tfg=NULL;
T0* _constraint=NULL;
T0* _trt=NULL;
T0* _wbc2=NULL;
T0* _wbc=NULL;
T0* _fn2=NULL;
T0* _fn1=NULL;
int _is_current=0;
T0* _target=NULL;
_target=X135target(a1);
_trt=X662result_type(_target);
_is_current=X662is_current(_target);
_fn1=X135feature_name(a1);
_wbc=r627base_class(((T627*)(X776start_position(_fn1))));
/*IF*/if ((_is_current)||(X291is_like_current(_trt))) {
_fn2=r605new_name_of(((T605*)(X291base_class(_trt))),_wbc,_fn1);
/*IF*/if ((_fn2)!=((void*)(_fn1))) {
r683add_position(X776start_position(_fn1));
R=r355get_or_fatal_error(C,_fn2);
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)(((T7*)(oBC683explanation)))))->_count)=(0);
/*]*/
r38clear(((T38*)(oBC683positions)));
/*]*/
}
else {
R=r355get_or_fatal_error(C,_fn1);
}
/*FI*/}
 else if (X291is_formal_generic(_trt)) {
_tfg=_trt;
if(NULL!=(_tfg))switch(((T0*)_tfg)->id) {
case 283: 
break;
default:
_tfg=NULL;
};_constraint=r283constraint(((T283*)_tfg));
/*IF*/if ((_constraint)==((void*)(NULL))) {
R=r355get_or_fatal_error(C,_fn1);
}
 else if (!(X291is_a(_trt,_constraint))) {
r683print_as_error(((T683*)(oBC364eh)));
r683add_position(X776start_position(X135feature_name(a1)));
/*[IRF3.6append*/{T0* b1=((T0*)ms3_355);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r683print_as_fatal_error(((T683*)(oBC364eh)));
}
else {
_wbc2=r627base_class(((T627*)(X291start_position(_constraint))));
/*IF*/if (((_wbc2)==((void*)(_wbc)))||(r605is_subclass_of(((T605*)_wbc),_wbc2))) {
_fn2=r605new_name_of(((T605*)(X291base_class(_trt))),X291base_class(_constraint),_fn1);
R=r355get_or_fatal_error(C,_fn2);
}
else {
R=r355get_or_fatal_error(C,_fn1);
}
/*FI*/}
/*FI*/}
else {
R=r355get_or_fatal_error(C,_fn1);
}
/*FI*/X496add_client(R,(T0*)C);
/*IF*/if ((((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0))&&(!(_is_current)))&&(!(X496is_exported_in(R,(((T605*)((T605*)_wbc)))->_base_class_name/*24*/)))) {
r683add_position(X496start_position(R));
/*[IRF3.6append*/{T0* b1=((T0*)ms4_355);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X776to_string(_fn1);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r355error(X776start_position(X135feature_name(a1)),((T0*)ms5_355));
}
/*FI*/return R;
}
T0* r355get_feature(T355* C,T0* a1){
T0* R=NULL;
T0* _bc=NULL;
T0* _fn_key=NULL;
T0* _f=NULL;
_fn_key=X776to_key(a1);
/*IF*/if (r199has(((T199*)((((T355*)C))->_feature_dictionary/*24*/)),_fn_key)) {
R=r199at(((T199*)((((T355*)C))->_feature_dictionary/*24*/)),_fn_key);
}
else {
_bc=r355base_class(C);
_f=r605look_up_for(((T605*)_bc),(T0*)C,a1);
/*IF*/if ((_f)==((void*)(NULL))) {
r355efnf(C,_bc,a1);
}
else {
R=X359to_run_feature(_f,(((T355*)C))->_current_type/*0*/,a1);
/*IF*/if ((R)!=((void*)(NULL))) {
r355store_feature(C,R);
}
else {
r355efnf(C,_bc,a1);
}
/*FI*/}
/*FI*/}
/*FI*/return R;
}
T0* r355class_with(T0* a1){
T0* R=NULL;
R=r604get_class(a1);
return R;
}
void r355efnf(T355* C,T0* a1,T0* a2){
/*[IRF3.6append*/{T0* b1=((T0*)ms9_355);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X291run_time_mark((((T355*)C))->_current_type/*0*/);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms10_355);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X776to_string(a2);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms11_355);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=(((T451*)((T451*)((((T605*)((T605*)a1)))->_base_class_name/*24*/))))->_to_string/*0*/;
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r355error(X776start_position(a2),((T0*)ms67_470));
}
void r355make(T355* C,T0* a1){
int _i=0;
T0* _r=NULL;
T0* _rc=NULL;
T0* _rcd=NULL;
T0* _run_string=NULL;
C->_compile_to_c_done=1;
C->_current_type=a1;
{T187*n=malloc(sizeof(*n));
*n=M187;
r187with_capacity(n,16);
C->_actuals_clients=(T0*)n;
}
_run_string=X291run_time_mark(a1);
C->_id=r410item(((T410*)(r355id_provider())),_run_string);
/*IF*/if ((((T604*)((T604*)(oBC364small_eiffel))))->_is_ready/*0*/) {
r355warning(NULL,((T0*)ms1_355));
}
/*FI*//*IF*/if (r250has(((T250*)(oBC604run_class_dictionary)),_run_string)) {
r355warning(NULL,((T0*)ms2_355));
}
/*FI*/r250put(((T250*)(oBC604run_class_dictionary)),(T0*)C,_run_string);
{T199*n=malloc(sizeof(*n));
*n=M199;
r199with_capacity(n,64);
C->_feature_dictionary=(T0*)n;
}
r604incr_magic_count(((T604*)(oBC364small_eiffel)));
/*IF*/if (X291is_expanded(a1)) {
r355set_at_run_time(C);
r605check_expanded_with(((T605*)(X291base_class(a1))),a1);
}
else {
_rcd=oBC604run_class_dictionary;
_i=1;
while (!((_i)>((((T250*)((T250*)_rcd)))->_count/*40*/))) {
_rc=r250item(((T250*)_rcd),_i);
/*IF*/if ((((((T355*)((T355*)_rc)))->_at_run_time/*8*/)&&(X291is_reference((((T355*)((T355*)_rc)))->_current_type/*0*/)))&&(r355is_a(((T355*)_rc),(T0*)C))) {
r355add_running(C,_rc);
}
/*FI*/_i=(_i)+(1);
}
}
/*FI*//*IF*/if (r590invariant_check(((T590*)(oBC364run_control)))) {
r608clear(((T608*)(oBC355ci_collector)));
r605collect_invariant(((T605*)(r355base_class(C))),(T0*)C);
_r=r355runnable(oBC355ci_collector,(((T355*)C))->_current_type/*0*/,NULL);
/*IF*/if ((_r)!=((void*)(NULL))) {
{T699*n=malloc(sizeof(*n));
*n=M699;
r699from_runnable(n,_r);
C->_invariant_assertion=(T0*)n;
}
}
/*FI*/}
/*FI*/}
/*No:RUN_CLASS.nb_errors*/
void r355c_object_model_in(T355* C,T0* a1){
T0* _t=NULL;
T0* _rf2=NULL;
int _i=0;
T0* _wa=NULL;
_wa=r355writable_attributes(C);
/*IF*/if ((_wa)==((void*)(NULL))) {
/*IF*/if (r355is_tagged(C)) {
r7extend(((T7*)a1),'\173');
r2append_in((((T355*)C))->_id/*4*/,a1);
r7extend(((T7*)a1),'\175');
}
else {
X291c_initialize_in((((T355*)C))->_current_type/*0*/,a1);
}
/*FI*/}
else {
r7extend(((T7*)a1),'\173');
/*IF*/if (r355is_tagged(C)) {
r2append_in((((T355*)C))->_id/*4*/,a1);
r7extend(((T7*)a1),'\54');
}
/*FI*/_i=(((T280*)((T280*)_wa)))->_upper/*12*/;
while (!((_i)==(0))) {
_rf2=r280item(((T280*)_wa),_i);
_t=(((T820*)((T820*)_rf2)))->_result_type/*24*/;
X291c_initialize_in(_t,a1);
_i=(_i)-(1);
/*IF*/if ((_i)>(0)) {
r7extend(((T7*)a1),'\54');
}
/*FI*/}
r7extend(((T7*)a1),'\175');
}
/*FI*/}
void r355store_feature(T355* C,T0* a1){
T0* _rf_key=NULL;
_rf_key=X776to_key(/*X496*/((T0*)(((T832*)((T832*)a1)))->_name/*16*/));
/*IF*/if (r199has(((T199*)((((T355*)C))->_feature_dictionary/*24*/)),_rf_key)) {
}
else {
r199put(((T199*)((((T355*)C))->_feature_dictionary/*24*/)),a1,_rf_key);
r604incr_magic_count(((T604*)(oBC364small_eiffel)));
}
/*FI*/}
T0* r355writable_attributes(T355* C){
T0* R=NULL;
int _i=0;
T0* _rf2=NULL;
/*IF*/if (((((T355*)C))->_writable_attributes_mem/*36*/)==((void*)(NULL))) {
_i=1;
while (!((_i)>((((T199*)((T199*)((((T355*)C))->_feature_dictionary/*24*/))))->_count/*40*/))) {
_rf2=r199item(((T199*)((((T355*)C))->_feature_dictionary/*24*/)),_i);
if(NULL!=(_rf2))switch(((T0*)_rf2)->id) {
case 820: 
break;
default:
_rf2=NULL;
};/*IF*/if ((_rf2)!=((void*)(NULL))) {
/*IF*/if (((((T355*)C))->_writable_attributes_mem/*36*/)==((void*)(NULL))) {
C->_writable_attributes_mem=se_ma280(1,_rf2);
}
else {
r280add_last(((T280*)((((T355*)C))->_writable_attributes_mem/*36*/)),_rf2);
}
/*FI*/}
/*FI*/_i=(_i)+(1);
}
/*IF*/if (((((T355*)C))->_writable_attributes_mem/*36*/)!=((void*)(NULL))) {
r355sort_wam((((T355*)C))->_writable_attributes_mem/*36*/);
}
/*FI*/}
/*FI*/R=(((T355*)C))->_writable_attributes_mem/*36*/;
return R;
}
/*No:RUN_CLASS.compile_to_c_done*/
T0*oBC355ci_collector=NULL;
void r355compile_to_c(T355* C,int a1){
int _cc2=0;
int _cc1=0;
T0* _rc2=NULL;
T0* _rc1=NULL;
int _i=0;
/*IF*/if ((((T355*)C))->_compile_to_c_done/*20*/) {
}
 else if (!((((T355*)C))->_at_run_time/*8*/)) {
C->_compile_to_c_done=1;
}
 else if ((a1)==(0)) {
r355really_compile_to_c(C);
}
else {
_i=(((T187*)((T187*)((((T355*)C))->_actuals_clients/*32*/))))->_upper/*8*/;
/*IF*/if ((_i)>=(0)) {
_rc1=(T0*)C;
_cc1=(_i)+(1);
while (!((_i)==(0))) {
_rc2=/*(IRF4.6item*/((((T187*)((T187*)((((T355*)C))->_actuals_clients/*32*/))))->_storage/*0*/)[_i]/*)*/;
/*IF*/if (!((((T355*)((T355*)_rc2)))->_compile_to_c_done/*20*/)) {
_cc2=/*(IRF4.6count*/((((T187*)((T187*)((((T355*)((T355*)_rc2)))->_actuals_clients/*32*/))))->_upper/*8*/)+(1)/*)*/;
/*IF*/if ((_cc2)>(_cc1)) {
_rc1=_rc2;
_cc1=_cc2;
}
/*FI*/}
/*FI*/_i=(_i)-(1);
}
/*IF*/if ((_rc1)==((void*)(C))) {
r355really_compile_to_c(C);
}
else {
r355compile_to_c(((T355*)_rc1),(a1)-(1));
}
/*FI*/}
/*FI*/}
/*FI*/}
void r355gc_initialize(T355* C){
/*IF*/if ((((T355*)C))->_at_run_time/*8*/) {
X291gc_initialize((((T355*)C))->_current_type/*0*/);
}
/*FI*/}
void r355add_running(T355* C,T0* a1){
/*IF*/if (((((T355*)C))->_running/*12*/)==((void*)(NULL))) {
C->_running=se_ma396(1,a1);
}
else {
/*IF*/if (!(r396fast_has(((T396*)((((T355*)C))->_running/*12*/)),a1))) {
r396add_last(((T396*)((((T355*)C))->_running/*12*/)),a1);
}
/*FI*/}
/*FI*/}
void r355add_client(T355* C,T0* a1){
int _i=0;
_i=r187fast_index_of(((T187*)((((T355*)C))->_actuals_clients/*32*/)),a1);
/*IF*/if ((_i)>((((T187*)((T187*)((((T355*)C))->_actuals_clients/*32*/))))->_upper/*8*/)) {
r187add_last(((T187*)((((T355*)C))->_actuals_clients/*32*/)),a1);
}
/*FI*/}
T0* r355get_feature_with(T355* C,T0* a1){
T0* R=NULL;
T0* _sfn=NULL;
/*IF*/if (r199has(((T199*)((((T355*)C))->_feature_dictionary/*24*/)),a1)) {
R=r199at(((T199*)((((T355*)C))->_feature_dictionary/*24*/)),a1);
}
else {
{T446*n=malloc(sizeof(*n));
*n=M446;
r446make(n,a1,NULL);
_sfn=(T0*)n;
}
R=r355get_feature(C,_sfn);
}
/*FI*/return R;
}
/*No:RUN_CLASS.collect_invariant*/
T0* r355id_provider(void){
if (fBC364id_provider==0){
T0* R=NULL;
fBC364id_provider=1;
{T410*n=malloc(sizeof(*n));
*n=M410;
r410make(n);
R=(T0*)n;
}
oBC364id_provider=R;}
return oBC364id_provider;}
/*No:RUN_CLASS.current_type*/
int r355gc_mark_to_follow(T355* C){
int R=0;
T0* _rc=NULL;
T0* _r=NULL;
int _i=0;
_r=(((T355*)C))->_running/*12*/;
_i=(((T396*)((T396*)_r)))->_upper/*8*/;
while (!((R)||((_i)==(0)))) {
_rc=r396item(((T396*)_r),_i);
/*IF*/if ((((T355*)((T355*)_rc)))->_at_run_time/*8*/) {
R=r355need_gc_mark(((T355*)_rc));
}
/*FI*/_i=(_i)-(1);
}
return R;
}
/*No:RUN_CLASS.tagged_mem*/
void r355gc_mark_in(T355* C,T0* a1){
T0* _rf2=NULL;
T0* _wa=NULL;
int _i=0;
_wa=r355writable_attributes(C);
/*IF*/if ((_wa)!=((void*)(NULL))) {
_i=(((T280*)((T280*)_wa)))->_upper/*12*/;
while (!((_i)==(0))) {
_rf2=r280item(((T280*)_wa),_i);
/*IF*/if ((((T355*)((T355*)(X291run_class((((T820*)((T820*)_rf2)))->_result_type/*24*/)))))->_at_run_time/*8*/) {
r548call_gc_mark(a1,_rf2);
}
/*FI*/_i=(_i)-(1);
}
}
/*FI*/}
void r355c_header_pass1(T355* C){
/*IF*/if ((((T355*)C))->_at_run_time/*8*/) {
X291c_header_pass1((((T355*)C))->_current_type/*0*/);
}
/*FI*/}
T0* r355get_copy(T355* C){
T0* R=NULL;
R=r355get_rf_with(C,/*X359*/((T0*)/*(IRF4.6first_name*//*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)((((T398*)((T398*)(r605get_copy(((T605*)(r355class_general())))))))->_names/*8*/))))->_list/*0*/)),1)/*)*//*)*/));
return R;
}
void r355really_compile_to_c(T355* C){
T0* _rf=NULL;
int _i=0;
C->_compile_to_c_done=1;
r324split_c_start_run_class(((T324*)(oBC364cpp)));
r306put_character(((T306*)(oBC364echo)),'\11');
r306put_string(((T306*)(oBC364echo)),X291run_time_mark((((T355*)C))->_current_type/*0*/));
r306put_character(((T306*)(oBC364echo)),'\n');
_i=1;
while (!((_i)>((((T199*)((T199*)((((T355*)C))->_feature_dictionary/*24*/))))->_count/*40*/))) {
_rf=r199item(((T199*)((((T355*)C))->_feature_dictionary/*24*/)),_i);
X496c_define(_rf);
_i=(_i)+(1);
}
/*IF*/if (r590invariant_check(((T590*)(oBC364run_control)))) {
/*IF*/if (((((T355*)C))->_invariant_assertion/*16*/)!=((void*)(NULL))) {
r699c_define(((T699*)((((T355*)C))->_invariant_assertion/*16*/)));
}
/*FI*/}
/*FI*/}
/*No:RUN_CLASS.invariant_assertion*/
T0* r355dynamic(T355* C,T0* a1){
T0* R=NULL;
T0* _up_type=NULL;
T0* _up_fn=NULL;
T0* _fn=NULL;
_up_type=/*X496*/((T0*)(((T832*)((T832*)a1)))->_current_type/*4*/);
/*IF*/if ((C)==((void*)(X291run_class(_up_type)))) {
R=a1;
}
else {
_up_fn=/*X496*/((T0*)(((T832*)((T832*)a1)))->_name/*16*/);
_fn=r605new_name_of(((T605*)(r355base_class(C))),X291base_class(_up_type),_up_fn);
R=r355get_or_fatal_error(C,_fn);
}
/*FI*/return R;
}
/*No:RUN_CLASS.fz_dot*/
int fBC364class_general=0;
T0*oBC364class_general=NULL;
T0* r355class_general(void){
if (fBC364class_general==0){
T0* R=NULL;
fBC364class_general=1;
R=r355class_with(((T0*)ms14_473));
oBC364class_general=R;}
return oBC364class_general;}
int r355offset_of(T355* C,T0* a1){
int R=0;
int _i=0;
T0* _t=NULL;
T0* _wa=NULL;
/*IF*/if (r355is_tagged(C)) {
R=sizeof(T2);
}
/*FI*/_wa=r355writable_attributes(C);
_i=(((T280*)((T280*)_wa)))->_upper/*12*/;
while (!((r280item(((T280*)_wa),_i))==((void*)(a1)))) {
_t=(((T820*)((T820*)(r280item(((T280*)_wa),_i)))))->_result_type/*24*/;
R=(R)+(X291space_for_variable(_t));
_i=(_i)-(1);
}
return R;
}
void r355c_header_pass2(T355* C){
/*IF*/if ((((T355*)C))->_at_run_time/*8*/) {
X291c_header_pass2((((T355*)C))->_current_type/*0*/);
}
/*FI*/}
void r355gc_define1(T355* C){
/*IF*/if ((((T355*)C))->_at_run_time/*8*/) {
X291gc_define1((((T355*)C))->_current_type/*0*/);
}
/*FI*/}
void r355sort_wam(T0* a1){
int _moved=0;
int _buble=0;
int _max=0;
int _min=0;
_max=(((T280*)((T280*)a1)))->_upper/*12*/;
_min=1;
_moved=1;
while (!(!(_moved))) {
_moved=0;
/*IF*/if (((_max)-(_min))>(0)) {
_buble=(_min)+(1);
while (!((_buble)>(_max))) {
/*IF*/if (r355gt(r280item(((T280*)a1),(_buble)-(1)),r280item(((T280*)a1),_buble))) {
r280swap(((T280*)a1),(_buble)-(1),_buble);
_moved=1;
}
/*FI*/_buble=(_buble)+(1);
}
_max=(_max)-(1);
}
/*FI*//*IF*/if ((_moved)&&(((_max)-(_min))>(0))) {
_moved=0;
_buble=(_max)-(1);
while (!((_buble)<(_min))) {
/*IF*/if (r355gt(r280item(((T280*)a1),_buble),r280item(((T280*)a1),(_buble)+(1)))) {
r280swap(((T280*)a1),_buble,(_buble)+(1));
_moved=1;
}
/*FI*/_buble=(_buble)-(1);
}
_min=(_min)+(1);
}
/*FI*/}
}
void r355gc_info_in(T355* C,T0* a1){
/*IF*/if ((((T355*)C))->_at_run_time/*8*/) {
X291gc_info_in((((T355*)C))->_current_type/*0*/,a1);
}
/*FI*/}
void r355error(T0* a1,T0* a2){
r683add_position(a1);
r683error(((T683*)(oBC364eh)),a2);
}
T0* r355base_class(T355* C){
T0* R=NULL;
R=X291base_class((((T355*)C))->_current_type/*0*/);
return R;
}
void r355call_gc_sweep_in(T355* C,T0* a1){
/*IF*/if ((((T355*)C))->_at_run_time/*8*/) {
X291call_gc_sweep_in((((T355*)C))->_current_type/*0*/,a1);
}
/*FI*/}
void r355gc_define2(T355* C){
/*IF*/if ((((T355*)C))->_at_run_time/*8*/) {
X291gc_define2((((T355*)C))->_current_type/*0*/);
}
/*FI*/}
int r355need_gc_mark(T355* C){
int R=0;
T0* _t=NULL;
T0* _rf2=NULL;
T0* _wa=NULL;
int _i=0;
_wa=r355writable_attributes(C);
/*IF*/if ((_wa)!=((void*)(NULL))) {
_i=(((T280*)((T280*)_wa)))->_upper/*12*/;
while (!((R)||((_i)==(0)))) {
_rf2=r280item(((T280*)_wa),_i);
_t=(((T820*)((T820*)_rf2)))->_result_type/*24*/;
R=X291need_gc_mark_function(_t);
_i=(_i)-(1);
}
}
/*FI*/return R;
}
void r355c_header_pass3(T355* C){
/*IF*/if ((((T355*)C))->_at_run_time/*8*/) {
X291c_header_pass3((((T355*)C))->_current_type/*0*/);
}
/*FI*/}
/*No:RUN_CLASS.feature_dictionary*/
T0* r355base_class_name(T355* C){
T0* R=NULL;
R=X291base_class_name((((T355*)C))->_current_type/*0*/);
return R;
}
T0* r355get_rf_with(T355* C,T0* a1){
T0* R=NULL;
T0* _wbc=NULL;
T0* _fn2=NULL;
_wbc=r627base_class(((T627*)(X776start_position(a1))));
_fn2=r605new_name_of(((T605*)(r355base_class(C))),_wbc,a1);
/*IF*/if ((_fn2)!=((void*)(a1))) {
r683add_position(X776start_position(a1));
R=r355get_or_fatal_error(C,_fn2);
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)(((T7*)(oBC683explanation)))))->_count)=(0);
/*]*/
r38clear(((T38*)(oBC683positions)));
/*]*/
}
else {
R=r355get_or_fatal_error(C,_fn2);
}
/*FI*/return R;
}
void r355afd_check(T355* C){
int _i=0;
T0* _rf=NULL;
_i=1;
while (!((_i)>((((T199*)((T199*)((((T355*)C))->_feature_dictionary/*24*/))))->_count/*40*/))) {
_rf=r199item(((T199*)((((T355*)C))->_feature_dictionary/*24*/)),_i);
X496afd_check(_rf);
_i=(_i)+(1);
}
}
/*No:RUN_CLASS.us_general*/
void r355warning(T0* a1,T0* a2){
r683add_position(a1);
r683warning(((T683*)(oBC364eh)),a2);
}
void r355c_header_pass4(T355* C){
/*IF*/if ((((T355*)C))->_at_run_time/*8*/) {
X291c_header_pass4((((T355*)C))->_current_type/*0*/);
}
/*FI*/}
int r355is_tagged(T355* C){
int R=0;
/*IF*/if (((((T355*)C))->_tagged_mem/*28*/)==(0)) {
/*IF*/if (X291is_expanded((((T355*)C))->_current_type/*0*/)) {
C->_tagged_mem=-(1);
}
 else if ((((T355*)C))->_at_run_time/*8*/) {
/*IF*/if (r590boost(((T590*)(oBC364run_control)))) {
/*IF*/if (r604is_tagged((T0*)C)) {
C->_tagged_mem=1;
}
else {
C->_tagged_mem=-(1);
}
/*FI*/}
else {
C->_tagged_mem=1;
}
/*FI*/}
/*FI*/}
/*FI*/R=((((T355*)C))->_tagged_mem/*28*/)==(1);
return R;
}
int r636gives_permission_to_any(T636* C){
int R=0;
/*IF*/if (/*(IRF4.7is_omitted*/((((T636*)C))->_start_position/*0*/)==(NULL)/*)*/) {
R=1;
}
 else if (((((T636*)C))->_list/*4*/)==((void*)(NULL))) {
}
else {
R=r33gives_permission_to_any(((T33*)((((T636*)C))->_list/*4*/)));
}
/*FI*/return R;
}
void r636merge(T636* C,T0* a1,T0* a2,T0* a3){
C->_start_position=a1;
{T33*n=malloc(sizeof(*n));
*n=M33;
r33merge(n,a2,a3);
C->_list=(T0*)n;
}
}
void r636make(T636* C,T0* a1,T0* a2){
C->_start_position=a1;
/*IF*/if ((a2)!=((void*)(NULL))) {
{T33*n=malloc(sizeof(*n));
*n=M33;
r33make(n,a2);
C->_list=(T0*)n;
}
}
/*FI*/}
/*No:CLIENT_LIST.start_position*/
/*No:CLIENT_LIST.is_omitted*/
int r636gives_permission_to(T636* C,T0* a1){
int R=0;
/*IF*/if (/*(IRF4.7is_omitted*/((((T636*)C))->_start_position/*0*/)==(NULL)/*)*/) {
R=1;
}
 else if (((((T636*)C))->_list/*4*/)==((void*)(NULL))) {
}
else {
R=r33gives_permission_to(((T33*)((((T636*)C))->_list/*4*/)),a1);
}
/*FI*//*IF*/if (!(R)) {
r683add_position((((T636*)C))->_start_position/*0*/);
/*[IRF3.6append*/{T0* b1=(((T451*)((T451*)a1)))->_to_string/*0*/;
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms4_636);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
}
/*FI*/return R;
}
/*No:CLIENT_LIST.list*/
/*No:CLIENT_LIST.omitted*/
T0* r636append(T636* C,T0* a1){
T0* R=NULL;
/*IF*/if ((((C)==((void*)(a1)))||(/*(IRF4.7is_omitted*/((((T636*)C))->_start_position/*0*/)==(NULL)/*)*/))||(r636gives_permission_to_any(C))) {
R=(T0*)C;
}
 else if ((/*(IRF4.7is_omitted*/((((T636*)((T636*)a1)))->_start_position/*0*/)==(NULL)/*)*/)||(r636gives_permission_to_any(((T636*)a1)))) {
R=a1;
}
else {
{T636*n=malloc(sizeof(*n));
*n=M636;
r636merge(n,(((T636*)C))->_start_position/*0*/,(((T636*)C))->_list/*4*/,(((T636*)((T636*)a1)))->_list/*4*/);
R=(T0*)n;
}
}
/*FI*/return R;
}
T0* r358add_comment(T358* C,T0* a1){
T0* R=NULL;
/*IF*/if (((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r52count(((T52*)((((T393*)((T393*)a1)))->_list/*4*/)))/*)*/)==(0))) {
R=(T0*)C;
}
else {
{T529*n=malloc(sizeof(*n));
*n=M529;
r529make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI*/return R;
}
int r358to_integer(T358* C){
int R=0;
r358error((((T358*)C))->_start_position/*20*/,((T0*)ms69_470));
return R;
}
int r358is_a(T358* C,T0* a1){
int R=0;
R=X291is_a(X291run_type(/*(IRF4.3result_type*/(((T358*)C))->_current_type/*8*//*)*/),X291run_type(X662result_type(a1)));
/*IF*/if (!(R)) {
r683add_position((((T358*)C))->_start_position/*20*/);
r358error(X662start_position(a1),((T0*)ms4_662));
}
/*FI*/return R;
}
/*No:E_CURRENT.is_current*/
void r358mapping_c_arg(T358* C,T0* a1){
T0* _rt=NULL;
_rt=X291run_type(/*(IRF4.3result_type*/(((T358*)C))->_current_type/*8*//*)*/);
/*IF*/if (X291is_reference(_rt)) {
/*IF*/if (X291is_reference(a1)) {
/*[IRF3.5put_string*/r544put_string(((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/)),((T0*)ms85_470));
/*]*/
r324print_current(((T324*)(oBC364cpp)));
}
else {
X291to_expanded(_rt);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\50';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
r324print_current(((T324*)(oBC364cpp)));
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\51';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI*/}
else {
/*IF*/if (X291is_reference(a1)) {
X291to_reference(_rt);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\50';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
r324print_current(((T324*)(oBC364cpp)));
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\51';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else {
r324print_current(((T324*)(oBC364cpp)));
}
/*FI*/}
/*FI*/}
/*No:E_CURRENT.static_value*/
/*No:E_CURRENT.is_written*/
void r358make(T358* C,T0* a1,int a2){
C->_start_position=a1;
C->_is_written=a2;
C->_to_string=((T0*)ms143_473);
}
void r358mapping_c_target(T358* C,T0* a1){
int _flag=0;
/*IF*/if ((((T358*)C))->_is_written/*16*/) {
_flag=r324call_invariant_start(a1);
}
/*FI*/r324print_current(((T324*)(oBC364cpp)));
/*IF*/if (_flag) {
/*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T544* C1=((T544*)(oBC324out_c));
char b1='\51';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI*/}
/*No:E_CURRENT.us_current*/
/*No:E_CURRENT.to_string*/
/*No:E_CURRENT.fz_iinaiv*/
/*No:E_CURRENT.dca_inline_argument*/
/*No:E_CURRENT.start_position*/
void r358compile_to_c(T358* C){
/*IF*/if (X291is_user_expanded(/*(IRF4.3result_type*/(((T358*)C))->_current_type/*8*//*)*/)) {
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\52';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI*/r324print_current(((T324*)(oBC364cpp)));
}
/*No:E_CURRENT.c_simple*/
T0* r358to_runnable(T358* C,T0* a1){
T0* R=NULL;
/*IF*/if (((((T358*)C))->_current_type/*8*/)==((void*)(NULL))) {
C->_current_type=a1;
R=(T0*)C;
}
 else if (((((T358*)C))->_current_type/*8*/)==((void*)(a1))) {
R=(T0*)C;
}
else {
{T358*n=malloc(sizeof(*n));
*n=M358;
r358make(n,(((T358*)C))->_start_position/*20*/,(((T358*)C))->_is_written/*16*/);
R=(T0*)n;
}
/*X358*//*[IRF3.3set_current_type*/((((T358*)(((T358*)R))))->_current_type)=(a1);
/*]*/
}
/*FI*/return R;
}
/*No:E_CURRENT.result_type*/
/*No:E_CURRENT.is_result*/
/*No:E_CURRENT.set_current_type*/
/*No:E_CURRENT.is_static*/
/*No:E_CURRENT.can_be_dropped*/
/*No:E_CURRENT.current_type*/
/*No:E_CURRENT.compile_to_c_old*/
/*No:E_CURRENT.static_value_mem*/
/*No:E_CURRENT.is_manifest_string*/
/*No:E_CURRENT.is_void*/
/*No:E_CURRENT.is_pre_computable*/
/*No:E_CURRENT.fz_cast_t0_star*/
/*No:E_CURRENT.use_current*/
void r358error(T0* a1,T0* a2){
r683add_position(a1);
r683error(((T683*)(oBC364eh)),a2);
}
/*No:E_CURRENT.isa_dca_inline_argument*/
/*No:E_CURRENT.afd_check*/
/*No:COMPOUND.empty_or_null_body*/
void r592make(T592* C,T0* a1,T0* a2){
C->_header_comment=a1;
C->_list=a2;
}
/*No:COMPOUND.nb_errors*/

