/*
ANSI C code generated by SmartEiffel The GNU Eiffel Compiler, Eiffel tools and libraries
Release 1.0 (Friday December 6th 2002)
Copyright (C), 1994-2002 - LORIA - UHP - INRIA - FRANCE
Dominique COLNET and Suzanne COLLIN - SmartEiffel@loria.fr
http://SmartEiffel.loria.fr
C Compiler options used: 
*/
#ifdef __cplusplus
}
#endif
#include "compile_to_c.h"
#ifdef __cplusplus
extern "C" {
#endif
T0*oBC24buffer=NULL;

/*STRING_ALIASER*/
T0* r24key_for_prefix_infix(T0* a1,T0* a2){
T0* R=NULL;
T2 _i=0;
T3 _c=0;
r7copy((T7*)(oBC24buffer),a1);
_i=/*IC*/(T2)(INT8_C(1));
while (!((_i)>((/*RF2*/(((T7*)a2))->_count/*4*/))))
{
_c=/*(IRF4.6item*/((/*RF2*/(((T7*)a2))->_storage/*0*/))[(_i)-(INT8_C(1))]/*)*/;
/*[IF*/
if(r3is_letter(_c)){
r7extend((T7*)(oBC24buffer),_c);
}
else{
r2append_in(T3code(_c),oBC24buffer);
}
/*FI]*/
_i=(_i)+(/*IC*/(T2)(INT8_C(1)));
}
R=r24item(oBC24buffer);
return R;
}

/*STRING_ALIASER*/
T0* r24for_infix(T0* a1){
T0* R=NULL;
R=r24key_for_prefix_infix(((T0*)ms24_15195),a1);
return R;
}

/*STRING_ALIASER*/
void r24special_add(T0* a1){
/*[IF*/
if((/*RF2*/((T34*)(oBC14eiffel_parser))->_case_insensitive/*38*/)){
r7to_lower(((T7*)a1));
}
/*FI]*/
/*[IRF3.6regular_add*/{T0* b1=a1;
r28add((T28*)(oBC24memory),b1,b1);
}/*]*/
}

/*STRING_ALIASER*/
T0* r24item(T0* a1){
T0* R=NULL;
R=r28reference_at((T28*)(oBC24memory),a1);
/*[IF*/
if((R)==((void*)(NULL))){
R=r7twin(((T7*)a1));
r28add((T28*)(oBC24memory),R,R);
}
/*FI]*/
return R;
}

/*STRING_ALIASER*/
T0* r24for_prefix(T0* a1){
T0* R=NULL;
R=r24key_for_prefix_infix(((T0*)ms24_15370),a1);
return R;
}
T0*oBC24memory=NULL;

