/*
-- 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 "pretty.h"
T0* r529add_comment(T529* 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 r529to_integer(T529* C){
int R=0;
r529error(r529start_position(C),((T0*)ms69_470));
return R;
}
int r529is_a(T529* C,T0* a1){
int R=0;
R=X291is_a(X291run_type(r529result_type(C)),X291run_type(X662result_type(a1)));
/*IF*/if (!(R)) {
r683add_position(r529start_position(C));
r529error(X662start_position(a1),((T0*)ms4_662));
}
/*FI*/return R;
}
/*No:EXPRESSION_WITH_COMMENT.is_current*/
void r529make(T529* C,T0* a1,T0* a2){
C->_expression=a1;
C->_comment=a2;
}
void r529print_as_target(T529* C){
X662print_as_target((((T529*)C))->_expression/*8*/);
}
/*No:EXPRESSION_WITH_COMMENT.fz_iinaiv*/
/*No:EXPRESSION_WITH_COMMENT.expression*/
T0* r529start_position(T529* C){
T0* R=NULL;
R=X662start_position((((T529*)C))->_expression/*8*/);
return R;
}
int r529precedence(T529* C){
int R=0;
R=X662precedence((((T529*)C))->_expression/*8*/);
return R;
}
/*No:EXPRESSION_WITH_COMMENT.comment*/
T0* r529to_runnable(T529* C,T0* a1){
T0* R=NULL;
/*IF*/if (((((T529*)C))->_current_type/*4*/)==((void*)(NULL))) {
C->_current_type=a1;
C->_expression=X662to_runnable((((T529*)C))->_expression/*8*/,a1);
R=(T0*)C;
}
else {
R=r529twin(C);
/*[IRF3.3set_current_type*/((((T529*)(((T529*)R))))->_current_type)=(NULL);
/*]*/
R=r529to_runnable(((T529*)R),a1);
}
/*FI*/return R;
}
void r529bracketed_pretty_print(T529* C){
X662pretty_print((((T529*)C))->_expression/*8*/);
r393pretty_print(((T393*)((((T529*)C))->_comment/*12*/)));
}
T0* r529result_type(T529* C){
T0* R=NULL;
R=X662result_type((((T529*)C))->_expression/*8*/);
return R;
}
T0* r529twin(T529* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T529*)R)=*C;
return R;
}
/*No:EXPRESSION_WITH_COMMENT.set_current_type*/
void r529pretty_print(T529* C){
X662pretty_print((((T529*)C))->_expression/*8*/);
r393pretty_print(((T393*)((((T529*)C))->_comment/*12*/)));
}
/*No:EXPRESSION_WITH_COMMENT.current_type*/
/*No:EXPRESSION_WITH_COMMENT.is_manifest_string*/
/*No:EXPRESSION_WITH_COMMENT.is_void*/
void r529error(T0* a1,T0* a2){
r683add_position(a1);
r683error(((T683*)(oBC364eh)),a2);
}
T0* r436add_comment(T436* 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 r436to_integer(T436* C){
int R=0;
r436error((((T436*)C))->_start_position/*8*/,((T0*)ms69_470));
return R;
}
int r436is_a(T436* C,T0* a1){
int R=0;
R=r709is_a(((T709*)((((T709*)((T709*)((((T436*)C))->_result_type/*16*/))))->_run_type/*16*/)),X291run_type(X662result_type(a1)));
/*IF*/if (!(R)) {
r683add_position((((T436*)C))->_start_position/*8*/);
r436error(X662start_position(a1),((T0*)ms4_662));
}
/*FI*/return R;
}
/*No:MANIFEST_ARRAY.is_current*/
void r436make(T436* C,T0* a1,T0* a2){
C->_start_position=a1;
C->_list=a2;
}
void r436print_as_target(T436* C){
r238put_character(((T238*)(oBC364fmt)),'\50');
r436pretty_print(C);
r238put_character(((T238*)(oBC364fmt)),'\51');
r238put_character(((T238*)(oBC364fmt)),'\56');
}
/*No:MANIFEST_ARRAY.nb_errors*/
/*No:MANIFEST_ARRAY.fz_iinaiv*/
/*No:MANIFEST_ARRAY.fz_c_shift_left*/
T0* r436type_any(void){
if (fBC364type_any==0){
T0* R=NULL;
fBC364type_any=1;
{T669*n=malloc(sizeof(*n));
*n=M669;
r669make(n,NULL);
R=(T0*)n;
}
oBC364type_any=R;}
return oBC364type_any;}
/*No:MANIFEST_ARRAY.start_position*/
/*No:MANIFEST_ARRAY.precedence*/
T0* r436to_runnable(T436* C,T0* a1){
T0* R=NULL;
T0* _t=NULL;
T0* _e=NULL;
int _i=0;
/*IF*/if (((((T436*)C))->_current_type/*4*/)==((void*)(NULL))) {
C->_current_type=a1;
/*IF*/if (((((T436*)C))->_list/*12*/)==((void*)(NULL))) {
_t=r436type_any();
}
else {
_i=/*X96*/((int)(((T96*)((T96*)((((T436*)C))->_list/*12*/))))->_upper/*12*/);
while (!((_i)==(0))) {
_e=X662to_runnable(/*X96*/((T0*)r96item(((T96*)((((T436*)C))->_list/*12*/)),_i)),a1);
/*IF*/if ((_e)==((void*)(NULL))) {
r683add_position((((T436*)C))->_start_position/*8*/);
r436error(X662start_position(/*X96*/((T0*)r96item(((T96*)((((T436*)C))->_list/*12*/)),_i))),((T0*)ms1_436));
_i=0;
}
else {
/*X96*//*[IRF3.6put*/{T96* C1=((T96*)((((T436*)C))->_list/*12*/));
T0* b1=_e;
int b2=_i;
((((T96*)C1))->_storage/*4*/)[(b2)-((((T96*)C1))->_lower/*16*/)]=(b1);
}/*]*/
/*IF*/if ((_t)==((void*)(NULL))) {
_t=X662result_type(_e);
}
else {
_t=X291smallest_ancestor(_t,X662result_type(_e));
}
/*FI*/_i=(_i)-(1);
}
/*FI*/}
}
/*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
{T709*n=malloc(sizeof(*n));
*n=M709;
r709make(n,(((T436*)C))->_start_position/*8*/,X291run_type(_t));
C->_result_type=(T0*)n;
}
C->_result_type=r709to_runnable(((T709*)((((T436*)C))->_result_type/*16*/)),(((T436*)C))->_current_type/*4*/);
r368set_at_run_time(((T368*)(r709run_class(((T709*)((((T436*)C))->_result_type/*16*/))))));
R=(T0*)C;
/*IF*/if ((X291is_reference(_t))&&(((((T436*)C))->_list/*12*/)!=((void*)(NULL)))) {
_i=/*X96*/((int)(((T96*)((T96*)((((T436*)C))->_list/*12*/))))->_upper/*12*/);
while (!((_i)==(0))) {
_t=X662result_type(/*X96*/((T0*)r96item(((T96*)((((T436*)C))->_list/*12*/)),_i)));
/*IF*/if (X291is_expanded(_t)) {
X291used_as_reference(_t);
}
/*FI*/_i=(_i)-(1);
}
}
/*FI*/}
/*FI*/}
else {
/*IF*/if (((((T436*)C))->_list/*12*/)==((void*)(NULL))) {
{T436*n=malloc(sizeof(*n));
*n=M436;
r436make(n,(((T436*)C))->_start_position/*8*/,NULL);
R=(T0*)n;
}
}
else {
{T436*n=malloc(sizeof(*n));
*n=M436;
r436make(n,(((T436*)C))->_start_position/*8*/,X96twin((((T436*)C))->_list/*12*/));
R=(T0*)n;
}
}
/*FI*/R=r436to_runnable(((T436*)R),a1);
}
/*FI*/return R;
}
void r436bracketed_pretty_print(T436* C){
r238put_character(((T238*)(oBC364fmt)),'\50');
r436pretty_print(C);
r238put_character(((T238*)(oBC364fmt)),'\51');
}
/*No:MANIFEST_ARRAY.fz_c_shift_right*/
/*No:MANIFEST_ARRAY.result_type*/
void r436pretty_print(T436* C){
int _i=0;
r238put_string(((T238*)(oBC364fmt)),((T0*)ms95_470));
r238level_incr(((T238*)(oBC364fmt)));
/*IF*/if (((((T436*)C))->_list/*12*/)!=((void*)(NULL))) {
_i=1;
while (!((_i)>(/*X96*/((int)(((T96*)((T96*)((((T436*)C))->_list/*12*/))))->_upper/*12*/)))) {
X662pretty_print(/*X96*/((T0*)r96item(((T96*)((((T436*)C))->_list/*12*/)),_i)));
_i=(_i)+(1);
/*IF*/if ((_i)<=(/*X96*/((int)(((T96*)((T96*)((((T436*)C))->_list/*12*/))))->_upper/*12*/))) {
r238put_character(((T238*)(oBC364fmt)),'\54');
}
/*FI*/}
}
/*FI*/r238put_string(((T238*)(oBC364fmt)),((T0*)ms96_470));
r238level_decr(((T238*)(oBC364fmt)));
}
/*No:MANIFEST_ARRAY.list*/
/*No:MANIFEST_ARRAY.current_type*/
/*No:MANIFEST_ARRAY.is_manifest_string*/
/*No:MANIFEST_ARRAY.is_void*/
void r436error(T0* a1,T0* a2){
r683add_position(a1);
r683error(((T683*)(oBC364eh)),a2);
}
void r644get_started(T644* C,T0* a1){
T0* _rp2=NULL;
T0* _rp1=NULL;
int _j=0;
int _i=0;
_i=(((T552*)((T552*)((((T644*)C))->_list/*0*/))))->_upper/*8*/;
while (!((_i)==(0))) {
_rp1=r552item(((T552*)((((T644*)C))->_list/*0*/)),_i);
/*IF*/if (!(r605has(((T605*)a1),(((T498*)((T498*)_rp1)))->_old_name/*0*/))) {
r683add_position(X776start_position((((T498*)((T498*)_rp1)))->_old_name/*0*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms3_644);
r683fatal_error(((T683*)(oBC364eh)),b1);
}/*]*/
}
/*FI*/_i=(_i)-(1);
_j=_i;
while (!((_j)==(0))) {
_rp2=r552item(((T552*)((((T644*)C))->_list/*0*/)),_j);
/*IF*/if ((X776to_key((((T498*)((T498*)_rp2)))->_old_name/*0*/))==((void*)(X776to_key((((T498*)((T498*)_rp1)))->_old_name/*0*/)))) {
r683add_position(X776start_position((((T498*)((T498*)_rp1)))->_old_name/*0*/));
r683add_position(X776start_position((((T498*)((T498*)_rp2)))->_old_name/*0*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms4_644);
r683fatal_error(((T683*)(oBC364eh)),b1);
}/*]*/
}
/*FI*/_j=(_j)-(1);
}
}
}
int r644affect(T644* C,T0* a1){
int R=0;
T0* _fn_to_key=NULL;
T0* _rp=NULL;
int _i=0;
_i=(((T552*)((T552*)((((T644*)C))->_list/*0*/))))->_upper/*8*/;
while (!((R)||((_i)==(0)))) {
_rp=r552item(((T552*)((((T644*)C))->_list/*0*/)),_i);
_fn_to_key=X776to_key(a1);
/*IF*/if (((X776to_key((((T498*)((T498*)_rp)))->_new_name/*4*/))==((void*)(_fn_to_key)))||((X776to_key((((T498*)((T498*)_rp)))->_old_name/*0*/))==((void*)(_fn_to_key)))) {
R=1;
}
else {
_i=(_i)-(1);
}
/*FI*/}
return R;
}
/*No:RENAME_LIST.make*/
T0* r644to_new_name(T644* C,T0* a1){
T0* R=NULL;
T0* _fn_to_key=NULL;
int _i=0;
_i=1;
_fn_to_key=X776to_key(a1);
while (!(((R)!=((void*)(NULL)))||((_i)>((((T552*)((T552*)((((T644*)C))->_list/*0*/))))->_upper/*8*/)))) {
/*IF*/if ((X776to_key((((T498*)((T498*)(r552item(((T552*)((((T644*)C))->_list/*0*/)),_i)))))->_old_name/*0*/))==((void*)(_fn_to_key))) {
R=(((T498*)((T498*)(r552item(((T552*)((((T644*)C))->_list/*0*/)),_i)))))->_new_name/*4*/;
}
/*FI*/_i=(_i)+(1);
}
/*IF*/if ((R)==((void*)(NULL))) {
R=a1;
}
/*FI*/return R;
}
T0* r644to_old_name(T644* C,T0* a1){
T0* R=NULL;
T0* _fn_to_key=NULL;
int _i=0;
_i=1;
_fn_to_key=X776to_key(a1);
while (!(((R)!=((void*)(NULL)))||((_i)>((((T552*)((T552*)((((T644*)C))->_list/*0*/))))->_upper/*8*/)))) {
/*IF*/if ((X776to_key((((T498*)((T498*)(r552item(((T552*)((((T644*)C))->_list/*0*/)),_i)))))->_new_name/*4*/))==((void*)(_fn_to_key))) {
R=(((T498*)((T498*)(r552item(((T552*)((((T644*)C))->_list/*0*/)),_i)))))->_old_name/*0*/;
}
/*FI*/_i=(_i)+(1);
}
/*IF*/if ((R)==((void*)(NULL))) {
R=a1;
}
/*FI*/return R;
}
void r644pretty_print(T644* C){
int _i=0;
int _icount=0;
/*[IRF3.3set_indent_level*/((((T238*)(((T238*)(oBC364fmt)))))->_indent_level)=(2);
/*]*/
r238indent(((T238*)(oBC364fmt)));
r238keyword(((T238*)(oBC364fmt)),((T0*)ms1_644));
_i=1;
while (!((_i)>((((T552*)((T552*)((((T644*)C))->_list/*0*/))))->_upper/*8*/))) {
r498pretty_print(((T498*)(r552item(((T552*)((((T644*)C))->_list/*0*/)),_i))));
_i=(_i)+(1);
_icount=(_icount)+(1);
/*IF*/if ((_i)<=((((T552*)((T552*)((((T644*)C))->_list/*0*/))))->_upper/*8*/)) {
r238put_string(((T238*)(oBC364fmt)),((T0*)ms2_644));
/*IF*/if ((_icount)>(3)) {
_icount=0;
/*[IRF3.3set_indent_level*/((((T238*)(((T238*)(oBC364fmt)))))->_indent_level)=(3);
/*]*/
r238indent(((T238*)(oBC364fmt)));
}
/*FI*/}
/*FI*/}
}
/*No:RENAME_LIST.list*/
/*No:RENAME_LIST.add_last*/
/*No:RENAME_LIST.fatal_error*/
int r388has_creation(T388* C,T0* a1){
int R=0;
r683add_position(X776start_position(a1));
r388error(/*(IRF4.6start_position*/(((T451*)((T451*)((((T388*)C))->_base_class_name/*4*/))))->_start_position/*4*//*)*/,((T0*)ms1_84));
return R;
}
/*No:TYPE_DOUBLE.is_anchored*/
/*No:TYPE_DOUBLE.is_array*/
int r388is_a(T388* C,T0* a1){
int R=0;
/*IF*/if (X291is_double(a1)) {
R=1;
}
else {
R=r605is_subclass_of(((T605*)(r388base_class(C))),X291base_class(a1));
/*IF*/if (R) {
r388used_as_reference();
}
/*FI*/}
/*FI*//*IF*/if (!(R)) {
r683add_type((T0*)C,((T0*)ms71_470));
r683add_type(a1,((T0*)ms67_470));
}
/*FI*/return R;
}
/*No:TYPE_DOUBLE.run_type*/
/*No:TYPE_DOUBLE.is_pointer*/
/*No:TYPE_DOUBLE.us_double_ref*/
/*No:TYPE_DOUBLE.is_string*/
/*No:TYPE_DOUBLE.is_like_feature*/
/*No:TYPE_DOUBLE.is_like_current*/
void r388make(T388* C,T0* a1){
{T451*n=malloc(sizeof(*n));
*n=M451;
r451make(n,((T0*)ms11_473),a1);
C->_base_class_name=(T0*)n;
}
}
/*No:TYPE_DOUBLE.us_item*/
void r388load_ref(T0* a1){
T0* _rf=NULL;
T0* _rc=NULL;
T0* _cn=NULL;
{T451*n=malloc(sizeof(*n));
*n=M451;
r451make(n,a1,NULL);
_cn=(T0*)n;
}
_rc=r605run_class(((T605*)(r451base_class(((T451*)_cn)))));
r368set_at_run_time(((T368*)_rc));
_rf=r368get_feature_with(((T368*)_rc),((T0*)ms86_473));
}
/*No:TYPE_DOUBLE.nb_errors*/
int fBC388check_type=0;
void r388check_type(T388* C){
if (fBC388check_type==0){
T0* _rc=NULL;
T0* _bc=NULL;
fBC388check_type=1;
_bc=r388base_class(C);
/*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
_rc=r388run_class(C);
}
/*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
/*IF*/if (!((((T605*)((T605*)_bc)))->_is_expanded/*20*/)) {
r388error(/*(IRF4.6start_position*/(((T451*)((T451*)((((T388*)C))->_base_class_name/*4*/))))->_start_position/*4*//*)*/,((T0*)ms1_388));
}
/*FI*/}
/*FI*/}}
/*No:TYPE_DOUBLE.start_position*/
/*No:TYPE_DOUBLE.fz_inako*/
/*No:TYPE_DOUBLE.is_character*/
T0* r388written_mark(void){
T0* R=NULL;
R=((T0*)ms11_473);
return R;
}
T0* r388to_runnable(T388* C,T0* a1){
T0* R=NULL;
R=(T0*)C;
r388check_type(C);
return R;
}
/*No:TYPE_DOUBLE.is_run_type*/
/*No:TYPE_DOUBLE.is_formal_generic*/
T0* r388generic_list(T388* C){
T0* R=NULL;
r388fatal_error_generic_list(C);
return R;
}
/*No:TYPE_DOUBLE.is_real*/
/*No:TYPE_DOUBLE.is_bit*/
void r388fatal_error_generic_list(T388* C){
r683add_type((T0*)C,((T0*)ms12_291));
r683print_as_fatal_error(((T683*)(oBC364eh)));
}
/*No:TYPE_DOUBLE.pretty_print*/
T0* r388smallest_ancestor(T388* C,T0* a1){
T0* R=NULL;
T0* _rto=NULL;
_rto=X291run_type(a1);
/*IF*/if (X291is_integer(_rto)) {
R=(T0*)C;
}
 else if (X291is_real(_rto)) {
R=(T0*)C;
}
 else if (X291is_double(_rto)) {
R=(T0*)C;
}
else {
R=r657smallest_ancestor(((T657*)(r388type_double_ref())),_rto);
}
/*FI*/return R;
}
/*No:TYPE_DOUBLE.is_boolean*/
/*No:TYPE_DOUBLE.is_double*/
T0* r388run_class(T388* C){
T0* R=NULL;
R=r604run_class((T0*)C);
return R;
}
T0* r388run_time_mark(void){
T0* R=NULL;
R=((T0*)ms11_473);
return R;
}
int r388is_a_in(T388* C,T0* a1,T0* a2){
int R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*IF*/if ((r388written_mark())==((void*)(X291written_mark(a1)))) {
R=1;
}
else {
_ct=(((T368*)((T368*)a2)))->_current_type/*0*/;
_t1=r388to_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* r388look_up_for(T388* C,T0* a1,T0* a2){
T0* R=NULL;
R=r605look_up_for(((T605*)(r388base_class(C))),a1,a2);
return R;
}
/*No:TYPE_DOUBLE.expanded_initializer*/
/*No:TYPE_DOUBLE.us_double*/
/*No:TYPE_DOUBLE.fz_dot*/
/*No:TYPE_DOUBLE.is_generic*/
int fBC388used_as_reference=0;
void r388used_as_reference(void){
if (fBC388used_as_reference==0){
fBC388used_as_reference=1;
r388load_ref(((T0*)ms12_473));
}}
int fBC364type_double_ref=0;
T0*oBC364type_double_ref=NULL;
T0* r388type_double_ref(void){
if (fBC364type_double_ref==0){
T0* R=NULL;
T0* _double_ref=NULL;
fBC364type_double_ref=1;
{T451*n=malloc(sizeof(*n));
*n=M451;
r451make(n,((T0*)ms12_473),NULL);
_double_ref=(T0*)n;
}
{T657*n=malloc(sizeof(*n));
*n=M657;
/*[IRF3.3make*/((((T657*)(n)))->_base_class_name)=(_double_ref);
/*]*/
R=(T0*)n;
}
oBC364type_double_ref=R;}
return oBC364type_double_ref;}
/*No:TYPE_DOUBLE.is_reference*/
void r388error(T0* a1,T0* a2){
r683add_position(a1);
r683error(((T683*)(oBC364eh)),a2);
}
T0* r388base_class(T388* C){
T0* R=NULL;
T0* _bcn=NULL;
_bcn=(((T388*)C))->_base_class_name/*4*/;
/*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;
}
/*No:TYPE_DOUBLE.is_any*/
/*No:TYPE_DOUBLE.base_class_name*/
/*No:TYPE_DOUBLE.is_expanded*/
/*No:TYPE_DOUBLE.is_basic_eiffel_expanded*/
/*No:TYPE_DOUBLE.is_none*/
/*No:TYPE_DOUBLE.is_integer*/
int r900has_creation(T900* C,T0* a1){
int R=0;
r683add_position(X776start_position(a1));
r900error(/*(IRF4.6start_position*/(((T451*)((T451*)((((T900*)C))->_base_class_name/*4*/))))->_start_position/*4*//*)*/,((T0*)ms1_84));
return R;
}
/*No:TYPE_POINTER.is_anchored*/
/*No:TYPE_POINTER.is_array*/
int r900is_a(T900* C,T0* a1){
int R=0;
/*IF*/if (X291is_pointer(a1)) {
R=1;
}
else {
R=r605is_subclass_of(((T605*)(r900base_class(C))),X291base_class(a1));
/*IF*/if (R) {
r900used_as_reference();
}
/*FI*/}
/*FI*//*IF*/if (!(R)) {
r683add_type((T0*)C,((T0*)ms1_900));
r683add_type(a1,((T0*)ms67_470));
}
/*FI*/return R;
}
/*No:TYPE_POINTER.run_type*/
/*No:TYPE_POINTER.is_pointer*/
/*No:TYPE_POINTER.is_string*/
/*No:TYPE_POINTER.is_like_feature*/
/*No:TYPE_POINTER.is_like_current*/
void r900make(T900* C,T0* a1){
{T451*n=malloc(sizeof(*n));
*n=M451;
r451make(n,((T0*)ms21_473),a1);
C->_base_class_name=(T0*)n;
}
}
/*No:TYPE_POINTER.us_item*/
void r900load_ref(T0* a1){
T0* _rf=NULL;
T0* _rc=NULL;
T0* _cn=NULL;
{T451*n=malloc(sizeof(*n));
*n=M451;
r451make(n,a1,NULL);
_cn=(T0*)n;
}
_rc=r605run_class(((T605*)(r451base_class(((T451*)_cn)))));
r368set_at_run_time(((T368*)_rc));
_rf=r368get_feature_with(((T368*)_rc),((T0*)ms86_473));
}
/*No:TYPE_POINTER.nb_errors*/
/*No:TYPE_POINTER.us_pointer*/
int fBC364type_pointer_ref=0;
T0*oBC364type_pointer_ref=NULL;
T0* r900type_pointer_ref(void){
if (fBC364type_pointer_ref==0){
T0* R=NULL;
T0* _pointer_ref=NULL;
fBC364type_pointer_ref=1;
{T451*n=malloc(sizeof(*n));
*n=M451;
r451make(n,((T0*)ms22_473),NULL);
_pointer_ref=(T0*)n;
}
{T657*n=malloc(sizeof(*n));
*n=M657;
/*[IRF3.3make*/((((T657*)(n)))->_base_class_name)=(_pointer_ref);
/*]*/
R=(T0*)n;
}
oBC364type_pointer_ref=R;}
return oBC364type_pointer_ref;}
int fBC900check_type=0;
void r900check_type(T900* C){
if (fBC900check_type==0){
T0* _rc=NULL;
T0* _bc=NULL;
fBC900check_type=1;
_bc=r900base_class(C);
/*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
_rc=r900run_class(C);
}
/*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
/*IF*/if (!((((T605*)((T605*)_bc)))->_is_expanded/*20*/)) {
r900error(/*(IRF4.6start_position*/(((T451*)((T451*)((((T900*)C))->_base_class_name/*4*/))))->_start_position/*4*//*)*/,((T0*)ms3_900));
}
/*FI*/}
/*FI*/}}
/*No:TYPE_POINTER.start_position*/
/*No:TYPE_POINTER.is_character*/
T0* r900written_mark(void){
T0* R=NULL;
R=((T0*)ms21_473);
return R;
}
T0* r900to_runnable(T900* C,T0* a1){
T0* R=NULL;
R=(T0*)C;
r900check_type(C);
return R;
}
/*No:TYPE_POINTER.is_run_type*/
/*No:TYPE_POINTER.is_formal_generic*/
T0* r900generic_list(T900* C){
T0* R=NULL;
r900fatal_error_generic_list(C);
return R;
}
/*No:TYPE_POINTER.is_real*/
/*No:TYPE_POINTER.us_pointer_ref*/
/*No:TYPE_POINTER.is_bit*/
void r900fatal_error_generic_list(T900* C){
r683add_type((T0*)C,((T0*)ms12_291));
r683print_as_fatal_error(((T683*)(oBC364eh)));
}
/*No:TYPE_POINTER.pretty_print*/
T0* r900smallest_ancestor(T900* C,T0* a1){
T0* R=NULL;
T0* _rto=NULL;
_rto=X291run_type(a1);
/*IF*/if (X291is_pointer(_rto)) {
R=(T0*)C;
}
else {
R=r657smallest_ancestor(((T657*)(r900type_pointer_ref())),_rto);
}
/*FI*/return R;
}
/*No:TYPE_POINTER.is_boolean*/
/*No:TYPE_POINTER.is_double*/
T0* r900run_class(T900* C){
T0* R=NULL;
R=r604run_class((T0*)C);
return R;
}
T0* r900run_time_mark(void){
T0* R=NULL;
R=((T0*)ms21_473);
return R;
}
int r900is_a_in(T900* C,T0* a1,T0* a2){
int R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*IF*/if ((r900written_mark())==((void*)(X291written_mark(a1)))) {
R=1;
}
else {
_ct=(((T368*)((T368*)a2)))->_current_type/*0*/;
_t1=r900to_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* r900look_up_for(T900* C,T0* a1,T0* a2){
T0* R=NULL;
R=r605look_up_for(((T605*)(r900base_class(C))),a1,a2);
return R;
}
/*No:TYPE_POINTER.expanded_initializer*/
/*No:TYPE_POINTER.fz_dot*/
/*No:TYPE_POINTER.is_generic*/
int fBC900used_as_reference=0;
void r900used_as_reference(void){
if (fBC900used_as_reference==0){
fBC900used_as_reference=1;
r900load_ref(((T0*)ms22_473));
}}
/*No:TYPE_POINTER.is_reference*/
void r900error(T0* a1,T0* a2){
r683add_position(a1);
r683error(((T683*)(oBC364eh)),a2);
}
T0* r900base_class(T900* C){
T0* R=NULL;
T0* _bcn=NULL;
_bcn=(((T900*)C))->_base_class_name/*4*/;
/*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;
}
/*No:TYPE_POINTER.is_any*/
/*No:TYPE_POINTER.base_class_name*/
/*No:TYPE_POINTER.is_expanded*/
/*No:TYPE_POINTER.is_basic_eiffel_expanded*/
/*No:TYPE_POINTER.is_none*/
/*No:TYPE_POINTER.is_integer*/
/*No:E_WHEN.when_list*/
void r843add_when_item_1(T843* C,T0* a1){
int _v=0;
_v=(((T349*)((T349*)a1)))->_expression_value/*12*/;
/*IF*/if (/*(IRF4.6includes*/r377includes_integer(((T377*)((((T270*)((T270*)(/*(IRF4.6e_inspect*/(((T377*)((T377*)((((T843*)C))->_when_list/*16*/))))->_e_inspect/*0*//*)*/))))->_when_list/*16*/)),_v)/*)*/) {
r843err_occ(C,_v,r349start_position(((T349*)a1)));
}
 else if (((((T843*)C))->_values/*20*/)==((void*)(NULL))) {
{T353*n=malloc(sizeof(*n));
*n=M353;
r353make(n,_v,_v);
C->_values=(T0*)n;
}
/*[IRF3.6put*/{T353* C1=((T353*)((((T843*)C))->_values/*20*/));
int b1=1;
int b2=_v;
((((T353*)C1))->_storage/*0*/)[(b2)-((((T353*)C1))->_lower/*12*/)]=(b1);
}/*]*/
}
else {
r353force(((T353*)((((T843*)C))->_values/*20*/)),1,_v);
}
/*FI*/}
T0* r843to_runnable_integer(T843* C,T0* a1){
T0* R=NULL;
T0* _when_item=NULL;
int _i=0;
int _ne=0;
/*IF*/if (((((T843*)C))->_when_list/*16*/)==((void*)(NULL))) {
_ne=/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/;
C->_when_list=a1;
/*IF*/if (((((T843*)C))->_list/*4*/)==((void*)(NULL))) {
r683add_position((((T270*)((T270*)(/*(IRF4.6e_inspect*/(((T377*)((T377*)((((T843*)C))->_when_list/*16*/))))->_e_inspect/*0*//*)*/))))->_start_position/*8*/);
r843error((((T843*)C))->_start_position/*0*/,((T0*)ms12_843));
}
else {
_i=/*X631*/((int)(((T247*)((T247*)((((T843*)C))->_list/*4*/))))->_lower/*16*/);
while (!(((_i)>(/*X631*/((int)(((T247*)((T247*)((((T843*)C))->_list/*4*/))))->_upper/*12*/)))||(((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)-(_ne))>(0)))) {
_when_item=X274to_runnable_integer(/*X631*/((T0*)r247item(((T247*)((((T843*)C))->_list/*4*/)),_i)),(T0*)C);
/*IF*/if ((_when_item)==((void*)(NULL))) {
r843error((((T843*)C))->_start_position/*0*/,((T0*)ms11_843));
}
else {
/*X631*//*[IRF3.6put*/{T247* C1=((T247*)((((T843*)C))->_list/*4*/));
T0* b1=_when_item;
int b2=_i;
((((T247*)C1))->_storage/*4*/)[(b2)-((((T247*)C1))->_lower/*16*/)]=(b1);
}/*]*/
}
/*FI*/_i=(_i)+(1);
}
}
/*FI*//*IF*/if (((((T843*)C))->_compound/*12*/)!=((void*)(NULL))) {
C->_compound=r592to_runnable(((T592*)((((T843*)C))->_compound/*12*/)),/*(IRF4.6current_type*//*(IRF4.6current_type*/r270current_type(((T270*)((((T377*)((T377*)((((T843*)C))->_when_list/*16*/))))->_e_inspect/*0*/)))/*)*//*)*/);
/*IF*/if (((((T843*)C))->_compound/*12*/)==((void*)(NULL))) {
r843error((((T843*)C))->_start_position/*0*/,((T0*)ms11_843));
}
/*FI*/}
/*FI*/R=(T0*)C;
}
else {
{T843*n=malloc(sizeof(*n));
*n=M843;
r843from_e_when(n,(T0*)C);
R=(T0*)n;
}
R=r843to_runnable_integer(((T843*)R),a1);
}
/*FI*/return R;
}
void r843make(T843* C,T0* a1,T0* a2){
C->_start_position=a1;
C->_header_comment=a2;
}
/*No:E_WHEN.nb_errors*/
void r843add_when_item_2(T843* C,T0* a1){
int _i=0;
int _u=0;
int _l=0;
_l=(((T372*)((T372*)a1)))->_lower_value/*20*/;
_u=(((T372*)((T372*)a1)))->_upper_value/*16*/;
/*IF*/if ((_l)>=(_u)) {
r843error(r372start_position(((T372*)a1)),((T0*)ms8_843));
}
/*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
_i=_l;
while (!((_i)>(_u))) {
/*IF*/if (/*(IRF4.6includes*/r377includes_integer(((T377*)((((T270*)((T270*)(/*(IRF4.6e_inspect*/(((T377*)((T377*)((((T843*)C))->_when_list/*16*/))))->_e_inspect/*0*//*)*/))))->_when_list/*16*/)),_i)/*)*/) {
r843err_occ(C,_i,r372start_position(((T372*)a1)));
_i=(_u)+(1);
}
else {
_i=(_i)+(1);
}
/*FI*/}
}
/*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
/*IF*/if (((((T843*)C))->_values/*20*/)==((void*)(NULL))) {
{T353*n=malloc(sizeof(*n));
*n=M353;
r353make(n,_l,_u);
C->_values=(T0*)n;
}
/*[IRF3.6set_all_with*/{T353* C1=((T353*)((((T843*)C))->_values/*20*/));
int b1=1;
r567set_all_with((((T353*)C1))->_storage/*0*/,b1,((((T353*)C1))->_upper/*8*/)-((((T353*)C1))->_lower/*12*/));
}/*]*/
}
else {
r353force(((T353*)((((T843*)C))->_values/*20*/)),1,_l);
r353force(((T353*)((((T843*)C))->_values/*20*/)),1,_u);
r353set_slice_with(((T353*)((((T843*)C))->_values/*20*/)),1,_l,_u);
}
/*FI*/}
/*FI*/}
void r843from_e_when(T843* C,T0* a1){
T0* _when_item=NULL;
int _i=0;
C->_start_position=(((T843*)((T843*)a1)))->_start_position/*0*/;
C->_list=X631twin((((T843*)((T843*)a1)))->_list/*4*/);
_i=/*X631*/((int)(((T247*)((T247*)((((T843*)C))->_list/*4*/))))->_lower/*16*/);
while (!((_i)>(/*X631*/((int)(((T247*)((T247*)((((T843*)C))->_list/*4*/))))->_upper/*12*/)))) {
_when_item=X274twin(/*X631*/((T0*)r247item(((T247*)((((T843*)C))->_list/*4*/)),_i)));
/*X274*//*[IRF3.3clear_e_when*/((((T349*)(((T349*)_when_item))))->_e_when)=(NULL);
/*]*/
/*X631*//*[IRF3.6put*/{T247* C1=((T247*)((((T843*)C))->_list/*4*/));
T0* b1=_when_item;
int b2=_i;
((((T247*)C1))->_storage/*4*/)[(b2)-((((T247*)C1))->_lower/*16*/)]=(b1);
}/*]*/
_i=(_i)+(1);
}
C->_header_comment=(((T843*)((T843*)a1)))->_header_comment/*8*/;
C->_compound=(((T843*)((T843*)a1)))->_compound/*12*/;
}
/*No:E_WHEN.values*/
/*No:E_WHEN.start_position*/
void r843err_occ(T843* C,int a1,T0* a2){
r683add_position((((T270*)((T270*)(/*(IRF4.6e_inspect*/(((T377*)((T377*)((((T843*)C))->_when_list/*16*/))))->_e_inspect/*0*//*)*/))))->_start_position/*8*/);
/*[IRF3.6append*/{T0* b1=((T0*)ms9_843);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=r2to_string(a1);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r843error(a2,((T0*)ms10_843));
}
/*No:E_WHEN.em1*/
void r843pretty_print(T843* C){
int _i=0;
r238keyword(((T238*)(oBC364fmt)),((T0*)ms52_470));
r238level_incr(((T238*)(oBC364fmt)));
/*IF*/if (((((T843*)C))->_header_comment/*8*/)!=((void*)(NULL))) {
r393pretty_print(((T393*)((((T843*)C))->_header_comment/*8*/)));
}
/*FI*//*IF*/if (((((T843*)C))->_list/*4*/)!=((void*)(NULL))) {
_i=/*X631*/((int)(((T247*)((T247*)((((T843*)C))->_list/*4*/))))->_lower/*16*/);
while (!((_i)>(/*X631*/((int)(((T247*)((T247*)((((T843*)C))->_list/*4*/))))->_upper/*12*/)))) {
X274pretty_print(/*X631*/((T0*)r247item(((T247*)((((T843*)C))->_list/*4*/)),_i)));
_i=(_i)+(1);
/*IF*/if ((_i)<=(/*X631*/((int)(((T247*)((T247*)((((T843*)C))->_list/*4*/))))->_upper/*12*/))) {
r238put_character(((T238*)(oBC364fmt)),'\54');
}
/*FI*/}
}
/*FI*/r238level_decr(((T238*)(oBC364fmt)));
r238keyword(((T238*)(oBC364fmt)),((T0*)ms46_470));
r238level_incr(((T238*)(oBC364fmt)));
/*IF*/if (((((T843*)C))->_compound/*12*/)!=((void*)(NULL))) {
r592pretty_print(((T592*)((((T843*)C))->_compound/*12*/)));
}
/*FI*/r238level_decr(((T238*)(oBC364fmt)));
}
/*No:E_WHEN.list*/
/*No:E_WHEN.em2*/
/*No:E_WHEN.set_compound*/
void r843add_value(T843* C,T0* a1){
T0* _element=NULL;
{T349*n=malloc(sizeof(*n));
*n=M349;
/*[IRF3.3make*/((((T349*)(n)))->_expression)=(a1);
/*]*/
_element=(T0*)n;
}
/*IF*/if (((((T843*)C))->_list/*4*/)==((void*)(NULL))) {
C->_list=se_ma247(1,_element);
}
else {
X631add_last((((T843*)C))->_list/*4*/,_element);
}
/*FI*/}
/*No:E_WHEN.current_type*/
/*No:E_WHEN.compound*/
/*No:E_WHEN.header_comment*/
void r843error(T0* a1,T0* a2){
r683add_position(a1);
r683error(((T683*)(oBC364eh)),a2);
}
/*No:E_WHEN.fz_when*/
/*No:E_WHEN.fz_then*/
int r843includes_integer(T843* C,int a1){
int R=0;
R=((((((T843*)C))->_values/*20*/)!=((void*)(NULL)))&&(r353valid_index(((T353*)((((T843*)C))->_values/*20*/)),a1)))&&(r353item(((T353*)((((T843*)C))->_values/*20*/)),a1));
return R;
}
T0* r843to_runnable_character(T843* C,T0* a1){
T0* R=NULL;
T0* _when_item=NULL;
int _i=0;
int _ne=0;
/*IF*/if (((((T843*)C))->_when_list/*16*/)==((void*)(NULL))) {
_ne=/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/;
C->_when_list=a1;
/*IF*/if (((((T843*)C))->_list/*4*/)==((void*)(NULL))) {
r683add_position((((T270*)((T270*)(/*(IRF4.6e_inspect*/(((T377*)((T377*)((((T843*)C))->_when_list/*16*/))))->_e_inspect/*0*//*)*/))))->_start_position/*8*/);
r843error((((T843*)C))->_start_position/*0*/,((T0*)ms12_843));
}
else {
_i=/*X631*/((int)(((T247*)((T247*)((((T843*)C))->_list/*4*/))))->_lower/*16*/);
while (!(((_i)>(/*X631*/((int)(((T247*)((T247*)((((T843*)C))->_list/*4*/))))->_upper/*12*/)))||(((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)-(_ne))>(0)))) {
_when_item=X274to_runnable_character(/*X631*/((T0*)r247item(((T247*)((((T843*)C))->_list/*4*/)),_i)),(T0*)C);
/*IF*/if ((_when_item)==((void*)(NULL))) {
r843error((((T843*)C))->_start_position/*0*/,((T0*)ms11_843));
}
else {
/*X631*//*[IRF3.6put*/{T247* C1=((T247*)((((T843*)C))->_list/*4*/));
T0* b1=_when_item;
int b2=_i;
((((T247*)C1))->_storage/*4*/)[(b2)-((((T247*)C1))->_lower/*16*/)]=(b1);
}/*]*/
}
/*FI*/_i=(_i)+(1);
}
}
/*FI*//*IF*/if (((((T843*)C))->_compound/*12*/)!=((void*)(NULL))) {
C->_compound=r592to_runnable(((T592*)((((T843*)C))->_compound/*12*/)),/*(IRF4.6current_type*//*(IRF4.6current_type*/r270current_type(((T270*)((((T377*)((T377*)((((T843*)C))->_when_list/*16*/))))->_e_inspect/*0*/)))/*)*//*)*/);
/*IF*/if (((((T843*)C))->_compound/*12*/)==((void*)(NULL))) {
r843error((((T843*)C))->_start_position/*0*/,((T0*)ms11_843));
}
/*FI*/}
/*FI*/R=(T0*)C;
}
else {
{T843*n=malloc(sizeof(*n));
*n=M843;
r843from_e_when(n,(T0*)C);
R=(T0*)n;
}
R=r843to_runnable_character(((T843*)R),a1);
}
/*FI*/return R;
}
void r843add_slice(T843* C,T0* a1,T0* a2){
T0* _element=NULL;
{T372*n=malloc(sizeof(*n));
*n=M372;
r372make(n,a1,a2);
_element=(T0*)n;
}
/*IF*/if (((((T843*)C))->_list/*4*/)==((void*)(NULL))) {
C->_list=se_ma263(1,_element);
}
else {
X631add_last((((T843*)C))->_list/*4*/,_element);
}
/*FI*/}
/*No:E_WHEN.e_inspect*/
void r673get_started(T673* C){
T0* _p2=NULL;
T0* _p1=NULL;
int _i2=0;
int _i1=0;
_i1=(((T26*)((T26*)((((T673*)C))->_list/*12*/))))->_upper/*8*/;
while (!((_i1)==(0))) {
r877get_started(((T877*)(r26item(((T26*)((((T673*)C))->_list/*12*/)),_i1))),(T0*)C);
_i1=(_i1)-(1);
}
/*IF*/if (((((T26*)((T26*)((((T673*)C))->_list/*12*/))))->_upper/*8*/)>(1)) {
_i2=(((T26*)((T26*)((((T673*)C))->_list/*12*/))))->_upper/*8*/;
while (!((_i2)==(1))) {
_i1=1;
while (!((_i1)==(_i2))) {
_p1=r26item(((T26*)((((T673*)C))->_list/*12*/)),_i1);
_p2=r26item(((T26*)((((T673*)C))->_list/*12*/)),_i2);
r877multiple_check(((T877*)_p1),_p2);
r877multiple_check(((T877*)_p2),_p1);
_i1=(_i1)+(1);
}
_i2=(_i2)-(1);
}
}
/*FI*/}
int r673has_parent(T673* C,T0* a1){
int R=0;
T0* _bc=NULL;
int _i=0;
_i=(((T26*)((T26*)((((T673*)C))->_list/*12*/))))->_upper/*8*/;
while (!((_i)==(0))) {
_bc=X291base_class((((T877*)((T877*)(r26item(((T26*)((((T673*)C))->_list/*12*/)),_i)))))->_type/*4*/);
/*IF*/if ((a1)==((void*)(_bc))) {
R=1;
_i=0;
}
 else if (r605is_subclass_of_aux(((T605*)_bc),a1)) {
R=1;
_i=0;
}
else {
_i=(_i)-(1);
}
/*FI*/}
return R;
}
/*No:PARENT_LIST.fz_cnf*/
void r673make(T673* C,T0* a1,T0* a2,T0* a3,T0* a4){
C->_base_class=a1;
C->_heading_comment=a3;
C->_start_position=a2;
C->_list=a4;
}
/*No:PARENT_LIST.start_position*/
T0* r673next_parent_for(T673* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _pbc=NULL;
int _i=0;
_i=1;
while (!((R)==((void*)(a2)))) {
R=r26item(((T26*)((((T673*)C))->_list/*12*/)),_i);
_i=(_i)+(1);
}
R=NULL;
while (!(((R)!=((void*)(NULL)))||((_i)>(r26count(((T26*)((((T673*)C))->_list/*12*/))))))) {
R=r26item(((T26*)((((T673*)C))->_list/*12*/)),_i);
_pbc=X291base_class((((T877*)((T877*)R)))->_type/*4*/);
/*IF*/if ((_pbc)==((void*)(a1))) {
}
 else if (r605is_subclass_of(((T605*)_pbc),a1)) {
}
else {
R=NULL;
}
/*FI*/_i=(_i)+(1);
}
return R;
}
T0* r673first_parent_for(T673* C,T0* a1){
T0* R=NULL;
T0* _pbc=NULL;
int _i=0;
_i=1;
while (!((R)!=((void*)(NULL)))) {
R=r26item(((T26*)((((T673*)C))->_list/*12*/)),_i);
_pbc=X291base_class((((T877*)((T877*)R)))->_type/*4*/);
/*IF*/if ((_pbc)==((void*)(a1))) {
}
 else if (r605is_subclass_of(((T605*)_pbc),a1)) {
}
else {
R=NULL;
}
/*FI*/_i=(_i)+(1);
}
return R;
}
void r673inherit_cycle_check(T673* C){
T0* _bc=NULL;
T0* _p=NULL;
int _i=0;
_i=(((T26*)((T26*)((((T673*)C))->_list/*12*/))))->_upper/*8*/;
while (!((_i)==(0))) {
_p=r26item(((T26*)((((T673*)C))->_list/*12*/)),_i);
_bc=X291base_class((((T877*)((T877*)_p)))->_type/*4*/);
/*IF*/if ((_bc)==((void*)(NULL))) {
r683add_position(r877start_position(((T877*)_p)));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms66_470);
r683fatal_error(((T683*)(oBC364eh)),b1);
}/*]*/
}
else {
r605inherit_cycle_check(((T605*)_bc));
}
/*FI*/_i=(_i)-(1);
}
}
/*No:PARENT_LIST.em1*/
void r673pretty_print(T673* C){
int _i=0;
/*[IRF3.3set_indent_level*/((((T238*)(((T238*)(oBC364fmt)))))->_indent_level)=(0);
/*]*/
/*IF*/if (r238zen_mode(((T238*)(oBC364fmt)))) {
r238indent(((T238*)(oBC364fmt)));
}
else {
r238skip(((T238*)(oBC364fmt)),1);
}
/*FI*/r238keyword(((T238*)(oBC364fmt)),((T0*)ms1_673));
/*[IRF3.3set_indent_level*/((((T238*)(((T238*)(oBC364fmt)))))->_indent_level)=(1);
/*]*/
r238indent(((T238*)(oBC364fmt)));
/*IF*/if (((((T673*)C))->_heading_comment/*8*/)!=((void*)(NULL))) {
r393pretty_print(((T393*)((((T673*)C))->_heading_comment/*8*/)));
}
/*FI*/_i=1;
while (!((_i)>((((T26*)((T26*)((((T673*)C))->_list/*12*/))))->_upper/*8*/))) {
r877pretty_print(((T877*)(r26item(((T26*)((((T673*)C))->_list/*12*/)),_i))));
_i=(_i)+(1);
}
}
/*No:PARENT_LIST.list*/
T0* r673up_to_original(T673* C,T0* a1,T0* a2){
T0* R=NULL;
int _i=0;
T0* _new_fn=NULL;
T0* _fn2=NULL;
T0* _fn1=NULL;
T0* _p2=NULL;
T0* _p1=NULL;
_i=(((T26*)((T26*)((((T673*)C))->_list/*12*/))))->_upper/*8*/;
while (!(((_i)==(0))||((_fn1)!=((void*)(NULL))))) {
_p1=r26item(((T26*)((((T673*)C))->_list/*12*/)),_i);
_fn1=r877up_to_original(((T877*)_p1),a1,a2);
_i=(_i)-(1);
}
while (!((_i)==(0))) {
_p2=r26item(((T26*)((((T673*)C))->_list/*12*/)),_i);
_fn2=r877up_to_original(((T877*)_p2),a1,a2);
/*IF*/if ((_fn2)!=((void*)(NULL))) {
_new_fn=r877do_rename(((T877*)_p2),a2);
/*IF*/if (r877has_select_for(((T877*)_p2),_new_fn)) {
_p1=_p2;
_fn1=_fn2;
}
/*FI*/}
/*FI*/_i=(_i)-(1);
}
/*IF*/if ((_fn1)!=((void*)(NULL))) {
/*IF*/if ((X776to_string(_fn1))!=((void*)(X776to_string(a2)))) {
R=r673repeated_inheritance(C,_p1,_fn1,a2);
}
else {
R=_fn1;
}
/*FI*/}
/*FI*/return R;
}
void r673collect_invariant(T673* C,T0* a1){
int _i=0;
_i=(((T26*)((T26*)((((T673*)C))->_list/*12*/))))->_upper/*8*/;
while (!((_i)==(0))) {
r605collect_invariant(((T605*)(X291base_class((((T877*)((T877*)(r26item(((T26*)((((T673*)C))->_list/*12*/)),_i)))))->_type/*4*/))),a1);
_i=(_i)-(1);
}
}
T0* r673smallest_ancestor(T673* C,T0* a1){
T0* R=NULL;
T0* _sa=NULL;
T0* _p=NULL;
int _i=0;
_i=(((T26*)((T26*)((((T673*)C))->_list/*12*/))))->_upper/*8*/;
while (!((_i)==(0))) {
_p=r26item(((T26*)((((T673*)C))->_list/*12*/)),_i);
_sa=X291run_type(r877smallest_ancestor(((T877*)_p),a1));
/*IF*/if ((R)==((void*)(NULL))) {
R=_sa;
}
else {
R=X291smallest_ancestor(_sa,R);
}
/*FI*//*IF*/if (X291is_any(R)) {
_i=0;
}
else {
_i=(_i)-(1);
}
/*FI*/}
return R;
}
int r673has(T673* C,T0* a1){
int R=0;
int _i=0;
_i=(((T26*)((T26*)((((T673*)C))->_list/*12*/))))->_upper/*8*/;
while (!((R)||((_i)==(0)))) {
R=r877has(((T877*)(r26item(((T26*)((((T673*)C))->_list/*12*/)),_i))),a1);
_i=(_i)-(1);
}
return R;
}
int r673has_redefine(T673* C,T0* a1){
int R=0;
int _i=0;
_i=1;
while (!((R)||((_i)>((((T26*)((T26*)((((T673*)C))->_list/*12*/))))->_upper/*8*/)))) {
R=r877has_redefine(((T877*)(r26item(((T26*)((((T673*)C))->_list/*12*/)),_i))),a1);
_i=(_i)+(1);
}
return R;
}
T0* r673look_up_for(T673* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _f2=NULL;
T0* _f1=NULL;
T0* _p2=NULL;
T0* _p1=NULL;
int _i=0;
_i=(((T26*)((T26*)((((T673*)C))->_list/*12*/))))->_upper/*8*/;
while (!(((_f1)!=((void*)(NULL)))||((_i)==(0)))) {
_p1=r26item(((T26*)((((T673*)C))->_list/*12*/)),_i);
_f1=r877look_up_for(((T877*)_p1),a1,a2);
_i=(_i)-(1);
}
while (!((_i)==(0))) {
_p2=r26item(((T26*)((((T673*)C))->_list/*12*/)),_i);
_f2=r877look_up_for(((T877*)_p2),a1,a2);
/*IF*/if ((_f2)==((void*)(NULL))) {
}
 else if ((_f1)==((void*)(_f2))) {
}
 else if (!(X359is_merge_with(_f2,_f1,a1))) {
r683add_position((((T673*)C))->_start_position/*4*/);
r683add_position(X359start_position(_f1));
r683add_position(X359start_position(_f2));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms70_470);
r683fatal_error(((T683*)(oBC364eh)),b1);
}/*]*/
}
 else if (X359is_deferred(_f2)) {
}
 else if (X359is_deferred(_f1)) {
_f1=_f2;
_p1=_p2;
}
 else if (r877has_redefine(((T877*)_p1),a2)) {
/*IF*/if (r877has_redefine(((T877*)_p2),a2)) {
}
else {
r683add_position(X776start_position(a2));
r683add_position(r877start_position(((T877*)_p2)));
r683add_position(X359start_position(_f2));
/*[IRF3.6append*/{T0* b1=((T0*)ms2_673);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r683print_as_fatal_error(((T683*)(oBC364eh)));
}
/*FI*/}
 else if (r877has_redefine(((T877*)_p2),a2)) {
r683add_position(X776start_position(a2));
r683add_position(r877start_position(((T877*)_p1)));
r683add_position(X359start_position(_f1));
/*[IRF3.6append*/{T0* b1=((T0*)ms2_673);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r683print_as_fatal_error(((T683*)(oBC364eh)));
}
else {
r683add_position(r877start_position(((T877*)_p2)));
r683add_position(r877start_position(((T877*)_p1)));
r683add_position(X359start_position(_f1));
r683add_position(X359start_position(_f2));
/*[IRF3.6append*/{T0* b1=((T0*)ms2_673);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r683print_as_fatal_error(((T683*)(oBC364eh)));
}
/*FI*/_i=(_i)-(1);
}
R=_f1;
return R;
}
T0* r673repeated_inheritance(T673* C,T0* a1,T0* a2,T0* a3){
T0* R=NULL;
T0* _bc1=NULL;
T0* _p2=NULL;
int _i=0;
_bc1=X291base_class((((T877*)((T877*)a1)))->_type/*4*/);
_i=(((T26*)((T26*)((((T673*)C))->_list/*12*/))))->_upper/*8*/;
while (!((_i)==(0))) {
_p2=r26item(((T26*)((((T673*)C))->_list/*12*/)),_i);
/*IF*/if ((a1)!=((void*)(_p2))) {
/*IF*/if ((_bc1)==((void*)(X291base_class((((T877*)((T877*)_p2)))->_type/*4*/)))) {
/*IF*/if ((X776to_string(r877do_rename(((T877*)_p2),a2)))==((void*)(X776to_string(a3)))) {
R=a3;
}
 else if ((X776to_string(r877do_rename(((T877*)a1),a2)))==((void*)(X776to_string(a3)))) {
R=a3;
}
/*FI*/}
/*FI*/}
/*FI*/_i=(_i)-(1);
}
/*IF*/if ((R)==((void*)(NULL))) {
R=a2;
}
/*FI*/return R;
}
/*No:PARENT_LIST.super*/
T0* r673clients_for(T673* C,T0* a1){
T0* R=NULL;
T0* _cl=NULL;
int _i=0;
_i=(((T26*)((T26*)((((T673*)C))->_list/*12*/))))->_upper/*8*/;
while (!((_i)==(0))) {
_cl=r877clients_for(((T877*)(r26item(((T26*)((((T673*)C))->_list/*12*/)),_i))),a1);
/*IF*/if ((R)==((void*)(NULL))) {
R=_cl;
}
 else if ((_cl)!=((void*)(NULL))) {
R=r636append(((T636*)R),_cl);
}
/*FI*//*IF*/if (((R)!=((void*)(NULL)))&&(r636gives_permission_to_any(((T636*)R)))) {
_i=0;
}
else {
_i=(_i)-(1);
}
/*FI*/}
return R;
}
T0* r673going_up(T673* C,T0* a1,T0* a2,T0* a3){
T0* R=NULL;
T0* _fn2=NULL;
T0* _fn1=NULL;
T0* _p2=NULL;
T0* _p1=NULL;
int _i=0;
_i=(((T26*)((T26*)((((T673*)C))->_list/*12*/))))->_upper/*8*/;
while (!(((_fn1)!=((void*)(NULL)))||((_i)==(0)))) {
_p1=r26item(((T26*)((((T673*)C))->_list/*12*/)),_i);
_fn1=r877going_up(((T877*)_p1),a1,a2,a3);
_i=(_i)-(1);
}
while (!((_i)==(0))) {
_p2=r26item(((T26*)((((T673*)C))->_list/*12*/)),_i);
_fn2=r877going_up(((T877*)_p2),a1,a2,a3);
/*IF*/if ((_fn2)!=((void*)(NULL))) {
/*IF*/if (r877has_select_for(((T877*)_p2),_fn2)) {
_p1=_p2;
_fn1=_fn2;
}
/*FI*/}
/*FI*/_i=(_i)-(1);
}
R=_fn1;
return R;
}
void r673collect_for(T673* C,int a1,T0* a2){
int _i=0;
_i=1;
while (!((_i)>((((T26*)((T26*)((((T673*)C))->_list/*12*/))))->_upper/*8*/))) {
r877collect_for(((T877*)(r26item(((T26*)((((T673*)C))->_list/*12*/)),_i))),a1,a2);
_i=(_i)+(1);
}
}
int r673is_a_vncg(T673* C,T0* a1,T0* a2){
int R=0;
int _i=0;
_i=(((T26*)((T26*)((((T673*)C))->_list/*12*/))))->_upper/*8*/;
while (!((R)||((_i)==(0)))) {
R=r877is_a_vncg(((T877*)(r26item(((T26*)((((T673*)C))->_list/*12*/)),_i))),a1,a2);
_i=(_i)-(1);
}
return R;
}
/*No:PARENT_LIST.heading_comment*/
/*No:PARENT_LIST.count*/
/*No:PARENT_LIST.base_class*/
/*No:PARENT_LIST.fatal_error*/
/*No:PARENT_LIST.fz_ich*/
/*No:PREFIX_NAME.set_is_frozen*/
void r406make(T406* C,T0* a1,T0* a2){
C->_to_string=r902item(a1);
C->_start_position=a2;
C->_to_key=r902for_prefix((((T406*)C))->_to_string/*4*/);
}
/*No:PREFIX_NAME.to_string*/
/*No:PREFIX_NAME.fz_prefix*/
/*No:PREFIX_NAME.start_position*/
void r406definition_pretty_print(T406* C){
r238keyword(((T238*)(oBC364fmt)),((T0*)ms37_470));
r238put_character(((T238*)(oBC364fmt)),'\42');
r238put_string(((T238*)(oBC364fmt)),(((T406*)C))->_to_string/*4*/);
r238put_character(((T238*)(oBC364fmt)),'\42');
}
/*No:PREFIX_NAME.pretty_print*/
/*No:PREFIX_NAME.to_key*/
/*No:PREFIX_NAME.is_frozen*/
void r406undefine_in(T406* C,T0* a1){
/*IF*/if ((((T406*)C))->_is_frozen/*12*/) {
r406error((((T406*)C))->_start_position/*8*/,((T0*)ms1_776));
r605fatal_undefine(((T605*)a1),(T0*)C);
}
/*FI*/}
void r406error(T0* a1,T0* a2){
r683add_position(a1);
r683error(((T683*)(oBC364eh)),a2);
}
T0* r406origin_base_class(T406* C){
T0* R=NULL;
T0* _sp=NULL;
_sp=(((T406*)C))->_start_position/*8*/;
/*IF*/if ((_sp)!=((void*)(NULL))) {
R=r627base_class(((T627*)_sp));
}
/*FI*/return R;
}
void r675connect_to(T675* C,T0* a1){
C->_input_stream=fopen(r7to_external(((T7*)a1)),"r");
/*IF*/if ((NULL!=(((T675*)C))->_input_stream/*8*/)) {
C->_push_back_flag=0;
C->_memory=((unsigned char)'\40');
C->_path=a1;
}
/*FI*/}
T0*oBC762last_string=NULL;
/*No:STD_FILE_READ.push_back_flag*/
void r675skip_separators(T675* C){
while (!((r675end_of_input(C))||(!(r3is_separator(/*(IRF4.6last_character*/((char)((((T675*)C))->_memory/*12*/))/*)*/))))) {
r675read_character(C);
}
}
/*No:STD_FILE_READ.make*/
void r675disconnect(T675* C){
fclose((((T675*)C))->_input_stream/*8*/);
C->_path=NULL;
}
/*No:STD_FILE_READ.path*/
void r675read_character(T675* C){
/*IF*/if ((((T675*)C))->_push_back_flag/*0*/) {
C->_push_back_flag=0;
}
else {
C->_memory=getc((FILE*)((((T675*)C))->_input_stream/*8*/));
}
/*FI*/}
/*No:STD_FILE_READ.is_connected*/
void r675read_word(T675* C){
r675skip_separators(C);
/*[IRF3.3clear*/((((T7*)(((T7*)(oBC762last_string)))))->_count)=(0);
/*]*/
while (!((r675end_of_input(C))||(r3is_separator(/*(IRF4.6last_character*/((char)((((T675*)C))->_memory/*12*/))/*)*/)))) {
r7extend(((T7*)(oBC762last_string)),/*(IRF4.6last_character*/((char)((((T675*)C))->_memory/*12*/))/*)*/);
r675read_character(C);
}
}
/*No:STD_FILE_READ.last_character*/
void r675read_line_in(T675* C,T0* a1){
int _mem=0;
r675read_character(C);
_mem=(((T675*)C))->_memory/*12*/;
while (!(((_mem)==((EOF)))||((_mem)==(((unsigned char)'\n'))))) {
r7extend(((T7*)a1),((char)(_mem)));
_mem=getc((FILE*)((((T675*)C))->_input_stream/*8*/));
}
C->_memory=_mem;
}
int r675end_of_input(T675* C){
int R=0;
/*IF*/if (!((((T675*)C))->_push_back_flag/*0*/)) {
R=((((T675*)C))->_memory/*12*/)==((EOF));
}
/*FI*/return R;
}
void r675read_line(T675* C){
/*[IRF3.3clear*/((((T7*)(((T7*)(oBC762last_string)))))->_count)=(0);
/*]*/
r675read_line_in(C,oBC762last_string);
}
/*No:STD_FILE_READ.input_stream*/
/*No:STD_FILE_READ.memory*/
T0* r347add_comment(T347* 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 {/*AT*//*IF*/if ((/*(IRF4.6count*/r52count(((T52*)((((T393*)((T393*)a1)))->_list/*4*/)))/*)*/)==(1)) {
R=(T0*)C;
}
else {
{T46*n=malloc(sizeof(*n));
*n=M46;
r46make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI*/}
/*FI*/return R;
}
void r347make(T347* C,T0* a1,T0* a2,T0* a3){
C->_start_position=a1;
C->_list=a2;
C->_compound=a3;
}
/*No:E_DEBUG.start_position*/
T0* r347to_runnable(T347* C,T0* a1){
T0* R=NULL;
/*IF*/if (((((T347*)C))->_run_compound/*4*/)==((void*)(NULL))) {
C->_run_compound=a1;
/*IF*/if (r590debug_check(((T590*)(oBC364run_control)))) {
/*IF*/if (((((T347*)C))->_compound/*16*/)!=((void*)(NULL))) {
C->_compound=r592to_runnable(((T592*)((((T347*)C))->_compound/*16*/)),r347current_type(C));
}
/*FI*/}
/*FI*/R=(T0*)C;
}
else {
{T347*n=malloc(sizeof(*n));
*n=M347;
r347make(n,(((T347*)C))->_start_position/*8*/,(((T347*)C))->_list/*12*/,(((T347*)C))->_compound/*16*/);
R=(T0*)n;
}
R=r347to_runnable(((T347*)R),a1);
}
/*FI*/return R;
}
void r347pretty_print(T347* C){
int _i=0;
r238keyword(((T238*)(oBC364fmt)),((T0*)ms1_347));
r238level_incr(((T238*)(oBC364fmt)));
/*IF*/if (((((T347*)C))->_list/*12*/)!=((void*)(NULL))) {
r238put_character(((T238*)(oBC364fmt)),'\50');
_i=(((T381*)((T381*)((((T347*)C))->_list/*12*/))))->_lower/*16*/;
while (!((_i)>((((T381*)((T381*)((((T347*)C))->_list/*12*/))))->_upper/*12*/))) {
r805pretty_print(((T805*)(r381item(((T381*)((((T347*)C))->_list/*12*/)),_i))));
_i=(_i)+(1);
/*IF*/if ((_i)<=((((T381*)((T381*)((((T347*)C))->_list/*12*/))))->_upper/*12*/)) {
r238put_character(((T238*)(oBC364fmt)),'\54');
}
/*FI*/}
r238put_character(((T238*)(oBC364fmt)),'\51');
}
/*FI*/r238level_decr(((T238*)(oBC364fmt)));
/*IF*/if (((((T347*)C))->_compound/*16*/)!=((void*)(NULL))) {
r592pretty_print(((T592*)((((T347*)C))->_compound/*16*/)));
}
/*FI*/r238indent(((T238*)(oBC364fmt)));
r238keyword(((T238*)(oBC364fmt)),((T0*)ms2_347));
/*IF*/if (r238print_end_debug(((T238*)(oBC364fmt)))) {
r238put_end(((T238*)(oBC364fmt)),((T0*)ms3_347));
}
/*FI*/}
/*No:E_DEBUG.list*/
T0* r347current_type(T347* C){
T0* R=NULL;
/*IF*/if (((((T347*)C))->_run_compound/*4*/)!=((void*)(NULL))) {
R=(((T592*)((T592*)((((T347*)C))->_run_compound/*4*/))))->_current_type/*4*/;
}
/*FI*/return R;
}
/*No:E_DEBUG.run_compound*/
/*No:E_DEBUG.compound*/
/*No:E_DEBUG.end_mark_comment*/

