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


void r195warning(T0* a1,T0* a2){
r21add_position(a1);
r21warning((T21*)(oBC12eh),a2);
}
/*No:CLASS_NAME_LIST.first*/


T2 r195count(T195* C){
T2 R=0;
/*[IF*/
if(((C)->_remainder/*4*/)==((void*)(NULL))){
R=1;
}
else{
R=(2)+(((T196*)((C)->_remainder/*4*/))->_upper/*8*/);
}
/*FI]*/
return R;
}


T6 r195gives_permission_to(T195* C,T0* a1){
T6 R=0;
T2 _i=0;
/*[IF*/
if((r195index_of(C,a1))>(0)){
R=1;
}
else{
_i=r195count(C);
while (!((R)||((_i)==(0)))) {
R=r64is_subclass_of(((T64*)a1),r195item(C,_i));
_i=(_i)-(1);
}
}
/*FI]*/
return R;
}
/*No:CLASS_NAME_LIST.us_any*/
/*No:CLASS_NAME_LIST.remainder*/


T2 r195index_of(T195* C,T0* a1){
T2 R=0;
T0* _to_string=NULL;
_to_string=(((T64*)a1))->_to_string/*0*/;
R=r195count(C);
while (!(((R)==(0))||((_to_string)==((void*)(((T64*)(r195item(C,R)))->_to_string/*0*/))))) {
R=(R)-(1);
}
return R;
}
/*No:IMPLICIT_CURRENT.fz_cast_t0_star*/
/*No:IMPLICIT_CURRENT.static_value*/


void r193mapping_c_target(T0* a1){
T6 _flag=0;
/*[IF*/
/*AF*//*AE*/
/*FI]*/
r25print_current((T25*)(oBC12cpp));
/*[IF*/
if(_flag){
/*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T45* C1=(T45*)(oBC25out_c);
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}
/*No:IMPLICIT_CURRENT.is_static*/
/*No:IMPLICIT_CURRENT.can_be_dropped*/
/*No:IMPLICIT_CURRENT.is_manifest_string*/
/*No:IMPLICIT_CURRENT.start_position*/
/*No:IMPLICIT_CURRENT.c_simple*/
/*No:IMPLICIT_CURRENT.c_declare_for_old*/


T0* r193add_comment(T193* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r39count(((T39*)((((T82*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
else{
{T230*n=malloc(sizeof(*n));
*n=M230;
r230make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}
/*No:IMPLICIT_CURRENT.is_written*/


T2 r193to_integer(T193* C){
T2 R=0;
r193error((C)->_start_position/*4*/,((T0*)ms13_45846));
return R;
}
/*No:IMPLICIT_CURRENT.use_current*/
/*No:IMPLICIT_CURRENT.dca_inline_argument*/


void r193compile_to_c(T193* C){
/*[IF*/
if(X54is_user_expanded((C)->_result_type/*8*/)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\52';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
r25print_current((T25*)(oBC12cpp));
}


T0* r193to_runnable(T193* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((C)->_result_type/*8*/)==((void*)(NULL))){
C->_result_type=a1;
R=(T0*)C;
}
 else if(((C)->_result_type/*8*/)==((void*)(a1))){
R=(T0*)C;
}
else{
{T193*n=malloc(sizeof(*n));
*n=M193;
/*[IRF3.3make*/((((T193*)(n)))->_start_position)=((C)->_start_position/*4*/);
/*]*/
R=(T0*)n;
}
R=r193to_runnable(((T193*)R),a1);
}
/*FI]*/
return R;
}
/*No:IMPLICIT_CURRENT.isa_dca_inline_argument*/
/*No:IMPLICIT_CURRENT.compile_to_c_old*/
/*No:IMPLICIT_CURRENT.is_pre_computable*/
/*No:IMPLICIT_CURRENT.collect_c_tmp*/
/*No:IMPLICIT_CURRENT.fz_iinaiv*/
/*No:IMPLICIT_CURRENT.result_type*/


void r193error(T0* a1,T0* a2){
r21add_position(a1);
r21error((T21*)(oBC12eh),a2);
}
/*No:IMPLICIT_CURRENT.make*/
/*No:IMPLICIT_CURRENT.is_current*/


void r193mapping_c_arg(T193* C,T0* a1){
T0* _rt=NULL;
_rt=X54run_type((C)->_result_type/*8*/);
/*[IF*/
if(X54is_reference(_rt)){
/*[IF*/
if(X54is_reference(a1)){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_1350));
/*]*/
r25print_current((T25*)(oBC12cpp));
}
else{
X54to_expanded(_rt);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
r25print_current((T25*)(oBC12cpp));
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}
else{
/*[IF*/
if(X54is_reference(a1)){
X54to_reference(_rt);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
r25print_current((T25*)(oBC12cpp));
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
r25print_current((T25*)(oBC12cpp));
}
/*FI]*/
}
/*FI]*/
}
/*No:IMPLICIT_CURRENT.is_void*/
/*No:IMPLICIT_CURRENT.afd_check*/
/*No:IMPLICIT_CURRENT.is_result*/
/*No:TMP_NAME.fz_once*/


T6 r109look_in(T0* a1){
T6 R=0;
T2 _i=0;
_i=(((T39*)a1))->_upper/*8*/;
while (!((R)||((_i)==(0)))) {
R=r7same_as((T7*)(r39item(((T39*)a1),_i)),oBC109tmp_string);
_i=(_i)-(1);
}
return R;
}
/*No:TMP_NAME.fz_old*/
/*No:TMP_NAME.fz_check*/


T0* r109start_position(T109* C){
T0* R=NULL;
{T70*n=malloc(sizeof(*n));
*n=M70;
r70make(n,(C)->_li/*4*/,(C)->_co/*8*/);
R=(T0*)n;
}
return R;
}


T0* r109to_string(T109* C){
T0* R=NULL;
/*[IF*/
if(((C)->_unique_string_memory/*0*/)==((void*)(NULL))){
R=r84item(oBC109tmp_string);
C->_unique_string_memory=R;
}
else{
R=(C)->_unique_string_memory/*0*/;
}
/*FI]*/
return R;
}
/*No:TMP_NAME.fz_if*/


T0* r109to_prefix_name(T109* C){
T0* R=NULL;
{T142*n=malloc(sizeof(*n));
*n=M142;
r142make(n,oBC109tmp_string,r109pos((C)->_li/*4*/,(C)->_co/*8*/));
R=(T0*)n;
}
return R;
}
/*No:TMP_NAME.fz_ensure*/
T0*oBC109keyword_p=NULL;
/*No:TMP_NAME.unique_string_memory*/
/*No:TMP_NAME.fz_frozen*/
/*No:TMP_NAME.fz_do*/
/*No:TMP_NAME.co*/
/*No:TMP_NAME.fz_as*/
/*No:TMP_NAME.li*/
T0*oBC109keyword_u=NULL;
/*No:TMP_NAME.fz_then*/


T0* r109to_argument_name1(T109* C){
T0* R=NULL;
{T190*n=malloc(sizeof(*n));
*n=M190;
r190make(n,r109pos((C)->_li/*4*/,(C)->_co/*8*/),oBC109tmp_string);
R=(T0*)n;
}
return R;
}


T0* r109to_infix_name(T0* a1){
T0* R=NULL;
{T138*n=malloc(sizeof(*n));
*n=M138;
r138make(n,oBC109tmp_string,a1);
R=(T0*)n;
}
return R;
}
/*No:TMP_NAME.us_void*/
/*No:TMP_NAME.fz_true*/
/*No:TMP_NAME.extend*/
/*No:TMP_NAME.fz_rename*/
/*No:TMP_NAME.fz_rescue*/
/*No:TMP_NAME.fz_indexing*/
/*No:TMP_NAME.fz_when*/


T0* r109to_simple_feature_name(T109* C){
T0* R=NULL;
{T148*n=malloc(sizeof(*n));
*n=M148;
r148make(n,oBC109tmp_string,r109pos((C)->_li/*4*/,(C)->_co/*8*/));
R=(T0*)n;
}
return R;
}
/*No:TMP_NAME.fz_is*/
T0*oBC109keyword_l=NULL;


T6 r109is_result(void){
T6 R=0;
/*[IF*/
if((((T7*)(oBC109tmp_string))->_count/*4*/)==(6)){
R=r7same_as((T7*)(((T0*)ms14_7404)),oBC109tmp_string);
}
/*FI]*/
return R;
}
/*No:TMP_NAME.fz_elseif*/


T0* r109to_local_name1(T109* C){
T0* R=NULL;
{T183*n=malloc(sizeof(*n));
*n=M183;
r183make(n,r109pos((C)->_li/*4*/,(C)->_co/*8*/),oBC109tmp_string);
R=(T0*)n;
}
return R;
}
/*No:TMP_NAME.fz_feature*/
/*No:TMP_NAME.fz_debug*/
/*No:TMP_NAME.fz_creation*/
T0*oBC109keyword_c=NULL;
/*No:TMP_NAME.fz_select*/
/*No:TMP_NAME.fz_loop*/
/*No:TMP_NAME.fz_obsolete*/
/*No:TMP_NAME.us_or*/
/*No:TMP_NAME.count*/
/*No:TMP_NAME.fz_alias*/
/*No:TMP_NAME.fz_expanded*/
/*No:TMP_NAME.make*/


T6 r109is_current(void){
T6 R=0;
/*[IF*/
if((((T7*)(oBC109tmp_string))->_count/*4*/)==(7)){
R=r7same_as((T7*)(((T0*)ms14_9380)),oBC109tmp_string);
}
/*FI]*/
return R;
}
/*No:TMP_NAME.us_implies*/
/*No:TMP_NAME.fz_class*/
/*No:TMP_NAME.fz_strip*/
/*No:TMP_NAME.fz_prefix*/
/*No:TMP_NAME.fz_infix*/


T0* r109to_infix_name_use(T109* C){
T0* R=NULL;
{T138*n=malloc(sizeof(*n));
*n=M138;
r138make(n,oBC109tmp_string,r109pos((C)->_li/*4*/,(C)->_co/*8*/));
R=(T0*)n;
}
return R;
}
/*No:TMP_NAME.fz_unique*/
T0*oBC109tmp_string=NULL;
/*No:TMP_NAME.fz_export*/
T0*oBC109keyword_r=NULL;
/*No:TMP_NAME.us_precursor*/
/*No:TMP_NAME.fz_variant*/
/*No:TMP_NAME.fz_inherit*/
/*No:TMP_NAME.fz_inspect*/
/*No:TMP_NAME.fz_local*/
/*No:TMP_NAME.us_result*/
T0*oBC109keyword_d=NULL;
/*No:TMP_NAME.fz_all*/
/*No:TMP_NAME.fz_redefine*/


T0* r109to_tag_name(T109* C){
T0* R=NULL;
{T107*n=malloc(sizeof(*n));
*n=M107;
r107make(n,oBC109tmp_string,r109pos((C)->_li/*4*/,(C)->_co/*8*/));
R=(T0*)n;
}
return R;
}
/*No:TMP_NAME.fz_separate*/


T0* r109to_e_void(T109* C){
T0* R=NULL;
{T157*n=malloc(sizeof(*n));
*n=M157;
/*[IRF3.3make*/((((T157*)(n)))->_start_position)=(r109pos((C)->_li/*4*/,(C)->_co/*8*/));
/*]*/
R=(T0*)n;
}
return R;
}
/*No:TMP_NAME.fz_require*/
T0*oBC109keyword_i=NULL;
/*No:TMP_NAME.fz_retry*/
/*No:TMP_NAME.us_xor*/
/*No:TMP_NAME.fz_invariant*/


T0* r109pos(T2 a1,T2 a2){
T0* R=NULL;
{T70*n=malloc(sizeof(*n));
*n=M70;
r70make(n,a1,a2);
R=(T0*)n;
}
return R;
}
/*No:TMP_NAME.fz_until*/
T0*oBC109keyword_s=NULL;
/*No:TMP_NAME.us_current*/
T0*oBC109keyword_e=NULL;


void r109initialize(T109* C,T2 a1,T2 a2){
C->_li=a1;
C->_co=a2;
/*[IRF3.3clear*/((((T7*)((T7*)(oBC109tmp_string))))->_count)=(0);
/*]*/
C->_unique_string_memory=NULL;
}
/*No:TMP_NAME.fz_else*/


T0* r109to_local_name2(T109* C,T0* a1,T2 a2){
T0* R=NULL;
{T180*n=malloc(sizeof(*n));
*n=M180;
r180refer_to(n,r109pos((C)->_li/*4*/,(C)->_co/*8*/),a1,a2);
R=(T0*)n;
}
return R;
}


T6 r109isa_keyword(void){
T6 R=0;
T3 _c=0;
_c=r3to_lower(/*(IRF4.6item*/(((T7*)(oBC109tmp_string))->_storage/*0*/)[(1)-(1)]/*)*/);
{int z1=_c;

if((97==z1)){
R=r109look_in(oBC109keyword_a);
}
 else 
if((99==z1)){
R=r109look_in(oBC109keyword_c);
}
 else 
if((100==z1)){
R=r109look_in(oBC109keyword_d);
}
 else 
if((101==z1)){
R=r109look_in(oBC109keyword_e);
}
 else 
if((102==z1)){
R=r109look_in(oBC109keyword_f);
}
 else 
if((105==z1)){
R=r109look_in(oBC109keyword_i);
}
 else 
if((108==z1)){
R=r109look_in(oBC109keyword_l);
}
 else 
if((111==z1)){
R=r109look_in(oBC109keyword_o);
}
 else 
if((112==z1)){
R=r109look_in(oBC109keyword_p);
}
 else 
if((114==z1)){
R=r109look_in(oBC109keyword_r);
}
 else 
if((115==z1)){
R=r109look_in(oBC109keyword_s);
}
 else 
if((116==z1)){
R=r109look_in(oBC109keyword_t);
}
 else 
if((117==z1)){
R=r109look_in(oBC109keyword_u);
}
 else 
if((118==z1)){
R=r7same_as((T7*)(((T0*)ms13_9506)),oBC109tmp_string);
}
 else 
if((119==z1)){
R=r7same_as((T7*)(((T0*)ms13_1776)),oBC109tmp_string);
}
 else 
if((120==z1)){
R=r7same_as((T7*)(((T0*)ms14_1053a)),oBC109tmp_string);
}
}
return R;
}
/*No:TMP_NAME.fz_deferred*/
/*No:TMP_NAME.fz_like*/


T0* r109to_class_name(T109* C){
T0* R=NULL;
{T64*n=malloc(sizeof(*n));
*n=M64;
r64make(n,oBC109tmp_string,r109pos((C)->_li/*4*/,(C)->_co/*8*/));
R=(T0*)n;
}
return R;
}
T0*oBC109keyword_o=NULL;


T0* r109to_argument_name2(T109* C,T0* a1,T2 a2){
T0* R=NULL;
{T188*n=malloc(sizeof(*n));
*n=M188;
r188refer_to(n,r109pos((C)->_li/*4*/,(C)->_co/*8*/),a1,a2);
R=(T0*)n;
}
return R;
}
/*No:TMP_NAME.fz_end*/
/*No:TMP_NAME.fz_undefine*/
T0*oBC109keyword_a=NULL;
T0*oBC109keyword_t=NULL;
/*No:TMP_NAME.fz_external*/
/*No:TMP_NAME.fz_from*/
/*No:TMP_NAME.fz_false*/


T6 r109is_void(void){
T6 R=0;
/*[IF*/
if((((T7*)(oBC109tmp_string))->_count/*4*/)==(4)){
R=r7same_as((T7*)(((T0*)ms14_1648)),oBC109tmp_string);
}
/*FI]*/
return R;
}
/*No:TMP_NAME.us_and*/
T0*oBC109keyword_f=NULL;
/*No:LOOP_VARIANT_1.nb_errors*/


T0* r246start_position(T246* C){
T0* R=NULL;
R=X56start_position((C)->_expression/*8*/);
return R;
}


T0* r246twin(T246* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T246*)R)=*C;
return R;
}
/*No:LOOP_VARIANT_1.expression*/


T6 r246use_current(T246* C){
T6 R=0;
R=X56use_current((C)->_expression/*8*/);
return R;
}


T0* r246to_runnable(T246* C,T0* a1){
T0* R=NULL;
T0* _e=NULL;
/*[IF*/
if(((C)->_current_type/*12*/)==((void*)(NULL))){
C->_current_type=a1;
_e=X56to_runnable((C)->_expression/*8*/,a1);
/*[IF*/
if((_e)==((void*)(NULL))){
r246error(r246start_position(C),((T0*)ms242_20400));
}
else{
C->_expression=_e;
/*[IF*/
if(!(X54is_integer(X56result_type((C)->_expression/*8*/)))){
r246error(X56start_position((C)->_expression/*8*/),((T0*)ms242_86602));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
R=(T0*)C;
}
/*FI]*/
}
else{
R=r246twin(C);
/*[IRF3.3set_current_type*/((((T246*)(((T246*)R))))->_current_type)=(NULL);
/*]*/
R=r246to_runnable(((T246*)R),a1);
}
/*FI]*/
return R;
}
/*No:LOOP_VARIANT_1.set_current_type*/
/*No:LOOP_VARIANT_1.current_type*/


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


void r246make(T246* C,T0* a1,T0* a2){
C->_comment=a2;
C->_expression=a1;
}
/*No:LOOP_VARIANT_1.comment*/


void r246afd_check(T246* C){
X56afd_check((C)->_expression/*8*/);
}

