/*
-- 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 r202with_capacity(T202* C,T2 a1){
/*[IF*/
if(((C)->_capacity/*8*/)<(a1)){
C->_storage=calloc(a1,sizeof(T0*));
C->_capacity=a1;
}
/*FI]*/
C->_upper=-(1);
}


T0* r202twin(T202* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T202*)R)=M202;
r202copy(((T202*)R),((T0*)C));
return R;
}
/*No:FIXED_ARRAY[INTEGER_CONSTANT].clear_all*/


void r202add_last(T202* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if((((C)->_upper/*12*/)+(1))<=(((C)->_capacity/*8*/)-(1))){
C->_upper=((C)->_upper/*12*/)+(1);
}
 else if(((C)->_capacity/*8*/)==(0)){
C->_storage=calloc(2,sizeof(T0*));
C->_capacity=2;
C->_upper=0;
}
else{
_new_capacity=(2)*((C)->_capacity/*8*/);
C->_storage=r203realloc((C)->_storage/*4*/,(C)->_capacity/*8*/,_new_capacity);
C->_capacity=_new_capacity;
C->_upper=((C)->_upper/*12*/)+(1);
}
/*FI]*/
/*[IRF3.5put*/((C)->_storage/*4*/)[(C)->_upper/*12*/]=(a1);
/*]*/
}
/*No:FIXED_ARRAY[INTEGER_CONSTANT].item*/
/*No:FIXED_ARRAY[INTEGER_CONSTANT].set_all_with*/
/*No:FIXED_ARRAY[INTEGER_CONSTANT].count*/


void r202resize(T202* C,T2 a1){
T0* _elt_default=NULL;
T2 _i=0;
T2 _new_capacity=0;
/*[IF*/
if((a1)<=(/*(IRF4.6count*/((C)->_upper/*12*/)+(1)/*)*/)){
C->_upper=(a1)-(1);
}
else{
_new_capacity=a1;
/*[IF*/
if(((C)->_capacity/*8*/)<(_new_capacity)){
/*[IF*/
if(((C)->_capacity/*8*/)==(0)){
C->_storage=calloc(_new_capacity,sizeof(T0*));
}
else{
C->_storage=r203realloc((C)->_storage/*4*/,(C)->_capacity/*8*/,_new_capacity);
}
/*FI]*/
C->_capacity=_new_capacity;
}
/*FI]*/
_new_capacity=(C)->_upper/*12*/;
C->_upper=(a1)-(1);
_i=(C)->_upper/*12*/;
while (!((_i)==(_new_capacity))) {
/*[IRF3.5put*/((C)->_storage/*4*/)[_i]=(_elt_default);
/*]*/
_i=(_i)-(1);
}
}
/*FI]*/
}


void r202make(T202* C,T2 a1){
/*[IF*/
if((a1)==(0)){
C->_upper=-(1);
}
 else if(((C)->_capacity/*8*/)==(0)){
C->_storage=calloc(a1,sizeof(T0*));
C->_capacity=a1;
C->_upper=(a1)-(1);
}
 else if(((C)->_capacity/*8*/)<(a1)){
C->_storage=calloc(a1,sizeof(T0*));
C->_capacity=a1;
C->_upper=(a1)-(1);
}
else{
C->_upper=(a1)-(1);
/*[IRF3.6clear_all*/{T202* C1=C;
T0* __value=NULL;
/*[IRF3.6set_all_with*/{T202* C2=C1;
T0* c1=__value;
r203set_all_with((C2)->_storage/*4*/,c1,(C2)->_upper/*12*/);
}/*]*/
}/*]*/
}
/*FI]*/
}
/*No:FIXED_ARRAY[INTEGER_CONSTANT].upper*/


void r202copy(T202* C,T0* a1){
T2 _new_capacity=0;
T2 _other_upper=0;
_other_upper=(((T202*)a1))->_upper/*12*/;
/*[IF*/
if((_other_upper)>=(0)){
_new_capacity=(_other_upper)+(1);
/*[IF*/
if(((C)->_capacity/*8*/)<(_new_capacity)){
C->_capacity=_new_capacity;
C->_storage=calloc(_new_capacity,sizeof(T0*));
}
 else if(((C)->_capacity/*8*/)>(0)){
r203clear_all((C)->_storage/*4*/,((C)->_capacity/*8*/)-(1));
}
/*FI]*/
r203copy_from((C)->_storage/*4*/,(((T202*)a1))->_storage/*4*/,_other_upper);
}
 else if(((C)->_capacity/*8*/)>(0)){
r203clear_all((C)->_storage/*4*/,((C)->_capacity/*8*/)-(1));
}
/*FI]*/
C->_upper=_other_upper;
}
/*No:FIXED_ARRAY[INTEGER_CONSTANT].capacity*/
/*No:FIXED_ARRAY[INTEGER_CONSTANT].storage*/
/*No:FIXED_ARRAY[INTEGER_CONSTANT].put*/


T0* r261twin(T261* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T261*)R)=M261;
r261copy(((T261*)R),((T0*)C));
return R;
}


void r261add_last(T261* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if(((C)->_capacity/*4*/)<((r261count(C))+(1))){
/*[IF*/
if(((C)->_capacity/*4*/)==(0)){
C->_capacity=16;
C->_storage=calloc((C)->_capacity/*4*/,sizeof(T0*));
}
else{
_new_capacity=(2)*((C)->_capacity/*4*/);
C->_storage=r262realloc((C)->_storage/*0*/,(C)->_capacity/*4*/,_new_capacity);
C->_capacity=_new_capacity;
}
/*FI]*/
}
/*FI]*/
C->_upper=((C)->_upper/*8*/)+(1);
/*[IRF3.6put*/{T261* C1=C;
T0* b1=a1;
T2 b2=(C)->_upper/*8*/;
((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
}/*]*/
}


T0* r261item(T261* C,T2 a1){
T0* R=NULL;
R=((C)->_storage/*0*/)[(a1)-((C)->_lower/*12*/)];
return R;
}


T0* r261first(T261* C){
T0* R=NULL;
R=r261item(C,(C)->_lower/*12*/);
return R;
}


T2 r261count(T261* C){
T2 R=0;
R=(((C)->_upper/*8*/)-((C)->_lower/*12*/))+(1);
return R;
}
/*No:ARRAY[TYPE].lower*/
/*No:ARRAY[TYPE].upper*/


void r261copy(T261* C,T0* a1){
T2 _needed_capacity=0;
C->_lower=(((T261*)a1))->_lower/*12*/;
C->_upper=(((T261*)a1))->_upper/*8*/;
_needed_capacity=(((C)->_upper/*8*/)-((C)->_lower/*12*/))+(1);
/*[IF*/
if(((C)->_capacity/*4*/)<(_needed_capacity)){
C->_capacity=_needed_capacity;
C->_storage=calloc((C)->_capacity/*4*/,sizeof(T0*));
}
/*FI]*/
/*[IF*/
if((_needed_capacity)>(0)){
r262copy_from((C)->_storage/*0*/,(((T261*)a1))->_storage/*0*/,(_needed_capacity)-(1));
}
/*FI]*/
}
/*No:ARRAY[TYPE].capacity*/
/*No:ARRAY[TYPE].put*/
/*No:ARRAY[TYPE].storage*/


void r47with_capacity(T47* C,T2 a1){
/*[IF*/
if(((C)->_capacity/*4*/)<(a1)){
C->_storage=calloc(a1,sizeof(T2));
C->_capacity=a1;
}
/*FI]*/
C->_upper=-(1);
}
/*No:FIXED_ARRAY[INTEGER].clear_all*/


void r47add_last(T47* C,T2 a1){
T2 _new_capacity=0;
/*[IF*/
if((((C)->_upper/*8*/)+(1))<=(((C)->_capacity/*4*/)-(1))){
C->_upper=((C)->_upper/*8*/)+(1);
}
 else if(((C)->_capacity/*4*/)==(0)){
C->_storage=calloc(2,sizeof(T2));
C->_capacity=2;
C->_upper=0;
}
else{
_new_capacity=(2)*((C)->_capacity/*4*/);
C->_storage=r48realloc((C)->_storage/*0*/,(C)->_capacity/*4*/,_new_capacity);
C->_capacity=_new_capacity;
C->_upper=((C)->_upper/*8*/)+(1);
}
/*FI]*/
/*[IRF3.5put*/((C)->_storage/*0*/)[(C)->_upper/*8*/]=(a1);
/*]*/
}
/*No:FIXED_ARRAY[INTEGER].item*/
/*No:FIXED_ARRAY[INTEGER].set_all_with*/


T6 r47valid_index(T47* C,T2 a1){
T6 R=0;
R=((0)<=(a1))&&((a1)<=((C)->_upper/*8*/));
return R;
}
/*No:FIXED_ARRAY[INTEGER].lower*/
/*No:FIXED_ARRAY[INTEGER].count*/


void r47resize(T47* C,T2 a1){
T2 _elt_default=0;
T2 _i=0;
T2 _new_capacity=0;
/*[IF*/
if((a1)<=(/*(IRF4.6count*/((C)->_upper/*8*/)+(1)/*)*/)){
C->_upper=(a1)-(1);
}
else{
_new_capacity=a1;
/*[IF*/
if(((C)->_capacity/*4*/)<(_new_capacity)){
/*[IF*/
if(((C)->_capacity/*4*/)==(0)){
C->_storage=calloc(_new_capacity,sizeof(T2));
}
else{
C->_storage=r48realloc((C)->_storage/*0*/,(C)->_capacity/*4*/,_new_capacity);
}
/*FI]*/
C->_capacity=_new_capacity;
}
/*FI]*/
_new_capacity=(C)->_upper/*8*/;
C->_upper=(a1)-(1);
_i=(C)->_upper/*8*/;
while (!((_i)==(_new_capacity))) {
/*[IRF3.5put*/((C)->_storage/*0*/)[_i]=(_elt_default);
/*]*/
_i=(_i)-(1);
}
}
/*FI]*/
}


T6 r47fast_has(T47* C,T2 a1){
T6 R=0;
R=r47valid_index(C,r47fast_index_of(C,a1));
return R;
}


void r47make(T47* C,T2 a1){
/*[IF*/
if((a1)==(0)){
C->_upper=-(1);
}
 else if(((C)->_capacity/*4*/)==(0)){
C->_storage=calloc(a1,sizeof(T2));
C->_capacity=a1;
C->_upper=(a1)-(1);
}
 else if(((C)->_capacity/*4*/)<(a1)){
C->_storage=calloc(a1,sizeof(T2));
C->_capacity=a1;
C->_upper=(a1)-(1);
}
else{
C->_upper=(a1)-(1);
/*[IRF3.6clear_all*/{T47* C1=C;
T2 __value=0;
/*[IRF3.6set_all_with*/{T47* C2=C1;
T2 c1=__value;
r48set_all_with((C2)->_storage/*0*/,c1,(C2)->_upper/*8*/);
}/*]*/
}/*]*/
}
/*FI]*/
}


T2 r47fast_index_of(T47* C,T2 a1){
T2 R=0;
R=r48fast_index_of((C)->_storage/*0*/,a1,(C)->_upper/*8*/);
return R;
}
/*No:FIXED_ARRAY[INTEGER].upper*/
/*No:FIXED_ARRAY[INTEGER].capacity*/
/*No:FIXED_ARRAY[INTEGER].put*/
/*No:FIXED_ARRAY[INTEGER].storage*/


void r360clear_all(T360* C){
T0* _value=NULL;
/*[IRF3.6set_all_with*/{T360* C1=C;
T0* b1=_value;
r327set_all_with((C1)->_storage/*4*/,b1,((C1)->_upper/*12*/)-((C1)->_lower/*16*/));
}/*]*/
}


void r360force(T360* C,T0* a1,T2 a2){
/*[IF*/
if(((C)->_upper/*12*/)<(a2)){
r360resize(C,(C)->_lower/*16*/,a2);
}
 else if((a2)<((C)->_lower/*16*/)){
r360resize(C,a2,(C)->_upper/*12*/);
}
/*FI]*/
/*[IRF3.6put*/{T360* C1=C;
T0* b1=a1;
T2 b2=a2;
((C1)->_storage/*4*/)[(b2)-((C1)->_lower/*16*/)]=(b1);
}/*]*/
}
/*No:ARRAY[RUN_FEATURE].set_all_with*/


T0* r360item(T360* C,T2 a1){
T0* R=NULL;
R=((C)->_storage/*4*/)[(a1)-((C)->_lower/*16*/)];
return R;
}
/*No:ARRAY[RUN_FEATURE].lower*/


void r360resize(T360* C,T2 a1,T2 a2){
T2 _intersize=0;
T2 _offset=0;
T2 _needed=0;
_needed=((a2)-(a1))+(1);
/*[IF*/
if((_needed)>(0)){
/*[IF*/
if((_needed)>((C)->_capacity/*8*/)){
/*[IF*/
if(((C)->_capacity/*8*/)==(0)){
C->_storage=calloc(_needed,sizeof(T0*));
C->_capacity=_needed;
}
else{
C->_storage=r327realloc((C)->_storage/*4*/,(C)->_capacity/*8*/,_needed);
C->_capacity=_needed;
}
/*FI]*/
}
/*FI]*/
_offset=((C)->_lower/*16*/)-(a1);
_intersize=((r2min(a2,(C)->_upper/*12*/))-(r2max(a1,(C)->_lower/*16*/)))+(1);
/*[IF*/
if((_intersize)>(0)){
/*[IF*/
if((_offset)==(0)){
/*[IF*/
if((_intersize)<(_needed)){
r327clear((C)->_storage/*4*/,_intersize,(_needed)-(1));
}
/*FI]*/
}
 else if((_offset)<(0)){
r327move((C)->_storage/*4*/,-(_offset),((_intersize)-(_offset))-(1),_offset);
/*[IF*/
if((_intersize)<(_needed)){
r327clear((C)->_storage/*4*/,_intersize,(_needed)-(1));
}
/*FI]*/
}
else{
r327move((C)->_storage/*4*/,0,(_intersize)-(1),_offset);
r327clear((C)->_storage/*4*/,0,(_offset)-(1));
/*[IF*/
if(((_intersize)+(_offset))<(_needed)){
r327clear((C)->_storage/*4*/,(_intersize)+(_offset),(_needed)-(1));
}
/*FI]*/
}
/*FI]*/
}
else{
r327clear((C)->_storage/*4*/,0,(_needed)-(1));
}
/*FI]*/
}
/*FI]*/
C->_lower=a1;
C->_upper=a2;
}


void r360make(T360* C,T2 a1,T2 a2){
T2 _needed=0;
C->_lower=a1;
C->_upper=a2;
_needed=((a2)-(a1))+(1);
/*[IF*/
if((_needed)>(0)){
/*[IF*/
if(((C)->_capacity/*8*/)<(_needed)){
C->_storage=calloc(_needed,sizeof(T0*));
C->_capacity=_needed;
}
else{
r360clear_all(C);
}
/*FI]*/
}
/*FI]*/
}
/*No:ARRAY[RUN_FEATURE].upper*/
/*No:ARRAY[RUN_FEATURE].capacity*/
/*No:ARRAY[RUN_FEATURE].put*/
/*No:ARRAY[RUN_FEATURE].storage*/


void r89add_last(T89* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if(((C)->_capacity/*4*/)<((r89count(C))+(1))){
/*[IF*/
if(((C)->_capacity/*4*/)==(0)){
C->_capacity=16;
C->_storage=calloc((C)->_capacity/*4*/,sizeof(T0*));
}
else{
_new_capacity=(2)*((C)->_capacity/*4*/);
C->_storage=r90realloc((C)->_storage/*0*/,(C)->_capacity/*4*/,_new_capacity);
C->_capacity=_new_capacity;
}
/*FI]*/
}
/*FI]*/
C->_upper=((C)->_upper/*8*/)+(1);
/*[IRF3.6put*/{T89* C1=C;
T0* b1=a1;
T2 b2=(C)->_upper/*8*/;
((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
}/*]*/
}


T0* r89item(T89* C,T2 a1){
T0* R=NULL;
R=((C)->_storage/*0*/)[(a1)-((C)->_lower/*12*/)];
return R;
}


T2 r89count(T89* C){
T2 R=0;
R=(((C)->_upper/*8*/)-((C)->_lower/*12*/))+(1);
return R;
}
/*No:ARRAY[RENAME_PAIR].lower*/
/*No:ARRAY[RENAME_PAIR].upper*/
/*No:ARRAY[RENAME_PAIR].capacity*/
/*No:ARRAY[RENAME_PAIR].put*/
/*No:ARRAY[RENAME_PAIR].storage*/


T0* r185twin(T185* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T185*)R)=M185;
r185copy(((T185*)R),((T0*)C));
return R;
}
/*No:ARRAY[LOCAL_NAME1].clear_all*/


void r185add_last(T185* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if(((C)->_capacity/*8*/)<((r185count(C))+(1))){
/*[IF*/
if(((C)->_capacity/*8*/)==(0)){
C->_capacity=16;
C->_storage=calloc((C)->_capacity/*8*/,sizeof(T0*));
}
else{
_new_capacity=(2)*((C)->_capacity/*8*/);
C->_storage=r186realloc((C)->_storage/*4*/,(C)->_capacity/*8*/,_new_capacity);
C->_capacity=_new_capacity;
}
/*FI]*/
}
/*FI]*/
C->_upper=((C)->_upper/*12*/)+(1);
/*[IRF3.6put*/{T185* C1=C;
T0* b1=a1;
T2 b2=(C)->_upper/*12*/;
((C1)->_storage/*4*/)[(b2)-((C1)->_lower/*16*/)]=(b1);
}/*]*/
}
/*No:ARRAY[LOCAL_NAME1].set_all_with*/


T0* r185item(T185* C,T2 a1){
T0* R=NULL;
R=((C)->_storage/*4*/)[(a1)-((C)->_lower/*16*/)];
return R;
}


T2 r185count(T185* C){
T2 R=0;
R=(((C)->_upper/*12*/)-((C)->_lower/*16*/))+(1);
return R;
}
/*No:ARRAY[LOCAL_NAME1].lower*/


void r185make(T185* C,T2 a1,T2 a2){
T2 _needed=0;
C->_lower=a1;
C->_upper=a2;
_needed=((a2)-(a1))+(1);
/*[IF*/
if((_needed)>(0)){
/*[IF*/
if(((C)->_capacity/*8*/)<(_needed)){
C->_storage=calloc(_needed,sizeof(T0*));
C->_capacity=_needed;
}
else{
/*[IRF3.6clear_all*/{T185* C1=C;
T0* __value=NULL;
/*[IRF3.6set_all_with*/{T185* C2=C1;
T0* c1=__value;
r186set_all_with((C2)->_storage/*4*/,c1,((C2)->_upper/*12*/)-((C2)->_lower/*16*/));
}/*]*/
}/*]*/
}
/*FI]*/
}
/*FI]*/
}
/*No:ARRAY[LOCAL_NAME1].upper*/


void r185copy(T185* C,T0* a1){
T2 _needed_capacity=0;
C->_lower=(((T185*)a1))->_lower/*16*/;
C->_upper=(((T185*)a1))->_upper/*12*/;
_needed_capacity=(((C)->_upper/*12*/)-((C)->_lower/*16*/))+(1);
/*[IF*/
if(((C)->_capacity/*8*/)<(_needed_capacity)){
C->_capacity=_needed_capacity;
C->_storage=calloc((C)->_capacity/*8*/,sizeof(T0*));
}
/*FI]*/
/*[IF*/
if((_needed_capacity)>(0)){
r186copy_from((C)->_storage/*4*/,(((T185*)a1))->_storage/*4*/,(_needed_capacity)-(1));
}
/*FI]*/
}
/*No:ARRAY[LOCAL_NAME1].capacity*/
/*No:ARRAY[LOCAL_NAME1].put*/
/*No:ARRAY[LOCAL_NAME1].storage*/


void r318add_last(T318* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if(((C)->_capacity/*4*/)<((r318count(C))+(1))){
/*[IF*/
if(((C)->_capacity/*4*/)==(0)){
C->_capacity=16;
C->_storage=calloc((C)->_capacity/*4*/,sizeof(T0*));
}
else{
_new_capacity=(2)*((C)->_capacity/*4*/);
C->_storage=r319realloc((C)->_storage/*0*/,(C)->_capacity/*4*/,_new_capacity);
C->_capacity=_new_capacity;
}
/*FI]*/
}
/*FI]*/
C->_upper=((C)->_upper/*8*/)+(1);
/*[IRF3.6put*/{T318* C1=C;
T0* b1=a1;
T2 b2=(C)->_upper/*8*/;
((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
}/*]*/
}


T0* r318item(T318* C,T2 a1){
T0* R=NULL;
R=((C)->_storage/*0*/)[(a1)-((C)->_lower/*12*/)];
return R;
}


T2 r318count(T318* C){
T2 R=0;
R=(((C)->_upper/*8*/)-((C)->_lower/*12*/))+(1);
return R;
}
/*No:ARRAY[EXPORT_ITEM].lower*/
/*No:ARRAY[EXPORT_ITEM].upper*/
/*No:ARRAY[EXPORT_ITEM].capacity*/
/*No:ARRAY[EXPORT_ITEM].put*/
/*No:ARRAY[EXPORT_ITEM].storage*/


void r308add_last(T308* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if(((C)->_capacity/*4*/)<((r308count(C))+(1))){
/*[IF*/
if(((C)->_capacity/*4*/)==(0)){
C->_capacity=16;
C->_storage=calloc((C)->_capacity/*4*/,sizeof(T0*));
}
else{
_new_capacity=(2)*((C)->_capacity/*4*/);
C->_storage=r309realloc((C)->_storage/*0*/,(C)->_capacity/*4*/,_new_capacity);
C->_capacity=_new_capacity;
}
/*FI]*/
}
/*FI]*/
C->_upper=((C)->_upper/*8*/)+(1);
/*[IRF3.6put*/{T308* C1=C;
T0* b1=a1;
T2 b2=(C)->_upper/*8*/;
((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
}/*]*/
}


T0* r308item(T308* C,T2 a1){
T0* R=NULL;
R=((C)->_storage/*0*/)[(a1)-((C)->_lower/*12*/)];
return R;
}


T2 r308count(T308* C){
T2 R=0;
R=(((C)->_upper/*8*/)-((C)->_lower/*12*/))+(1);
return R;
}
/*No:ARRAY[DECLARATION].lower*/
/*No:ARRAY[DECLARATION].upper*/
/*No:ARRAY[DECLARATION].capacity*/
/*No:ARRAY[DECLARATION].put*/
/*No:ARRAY[DECLARATION].storage*/


void r279add_last(T279* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if(((C)->_capacity/*4*/)<((r279count(C))+(1))){
/*[IF*/
if(((C)->_capacity/*4*/)==(0)){
C->_capacity=16;
C->_storage=calloc((C)->_capacity/*4*/,sizeof(T0*));
}
else{
_new_capacity=(2)*((C)->_capacity/*4*/);
C->_storage=r281realloc((C)->_storage/*0*/,(C)->_capacity/*4*/,_new_capacity);
C->_capacity=_new_capacity;
}
/*FI]*/
}
/*FI]*/
C->_upper=((C)->_upper/*8*/)+(1);
/*[IRF3.6put*/{T279* C1=C;
T0* b1=a1;
T2 b2=(C)->_upper/*8*/;
((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
}/*]*/
}


T0* r279item(T279* C,T2 a1){
T0* R=NULL;
R=((C)->_storage/*0*/)[(a1)-((C)->_lower/*12*/)];
return R;
}


T2 r279count(T279* C){
T2 R=0;
R=(((C)->_upper/*8*/)-((C)->_lower/*12*/))+(1);
return R;
}
/*No:ARRAY[FORMAL_GENERIC_ARG].lower*/
/*No:ARRAY[FORMAL_GENERIC_ARG].upper*/
/*No:ARRAY[FORMAL_GENERIC_ARG].capacity*/
/*No:ARRAY[FORMAL_GENERIC_ARG].put*/
/*No:ARRAY[FORMAL_GENERIC_ARG].storage*/
/*No:ARRAY[RUN_FEATURE_2].clear_all*/


void r361force(T361* C,T0* a1,T2 a2){
/*[IF*/
if(((C)->_upper/*12*/)<(a2)){
r361resize(C,(C)->_lower/*16*/,a2);
}
 else if((a2)<((C)->_lower/*16*/)){
r361resize(C,a2,(C)->_upper/*12*/);
}
/*FI]*/
/*[IRF3.6put*/{T361* C1=C;
T0* b1=a1;
T2 b2=a2;
((C1)->_storage/*4*/)[(b2)-((C1)->_lower/*16*/)]=(b1);
}/*]*/
}


void r361add_last(T361* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if(((C)->_capacity/*8*/)<((r361count(C))+(1))){
/*[IF*/
if(((C)->_capacity/*8*/)==(0)){
C->_capacity=16;
C->_storage=calloc((C)->_capacity/*8*/,sizeof(T0*));
}
else{
_new_capacity=(2)*((C)->_capacity/*8*/);
C->_storage=r362realloc((C)->_storage/*4*/,(C)->_capacity/*8*/,_new_capacity);
C->_capacity=_new_capacity;
}
/*FI]*/
}
/*FI]*/
C->_upper=((C)->_upper/*12*/)+(1);
/*[IRF3.6put*/{T361* C1=C;
T0* b1=a1;
T2 b2=(C)->_upper/*12*/;
((C1)->_storage/*4*/)[(b2)-((C1)->_lower/*16*/)]=(b1);
}/*]*/
}
/*No:ARRAY[RUN_FEATURE_2].set_all_with*/


T0* r361item(T361* C,T2 a1){
T0* R=NULL;
R=((C)->_storage/*4*/)[(a1)-((C)->_lower/*16*/)];
return R;
}


T2 r361count(T361* C){
T2 R=0;
R=(((C)->_upper/*12*/)-((C)->_lower/*16*/))+(1);
return R;
}
/*No:ARRAY[RUN_FEATURE_2].lower*/


void r361resize(T361* C,T2 a1,T2 a2){
T2 _intersize=0;
T2 _offset=0;
T2 _needed=0;
_needed=((a2)-(a1))+(1);
/*[IF*/
if((_needed)>(0)){
/*[IF*/
if((_needed)>((C)->_capacity/*8*/)){
/*[IF*/
if(((C)->_capacity/*8*/)==(0)){
C->_storage=calloc(_needed,sizeof(T0*));
C->_capacity=_needed;
}
else{
C->_storage=r362realloc((C)->_storage/*4*/,(C)->_capacity/*8*/,_needed);
C->_capacity=_needed;
}
/*FI]*/
}
/*FI]*/
_offset=((C)->_lower/*16*/)-(a1);
_intersize=((r2min(a2,(C)->_upper/*12*/))-(r2max(a1,(C)->_lower/*16*/)))+(1);
/*[IF*/
if((_intersize)>(0)){
/*[IF*/
if((_offset)==(0)){
/*[IF*/
if((_intersize)<(_needed)){
r362clear((C)->_storage/*4*/,_intersize,(_needed)-(1));
}
/*FI]*/
}
 else if((_offset)<(0)){
r362move((C)->_storage/*4*/,-(_offset),((_intersize)-(_offset))-(1),_offset);
/*[IF*/
if((_intersize)<(_needed)){
r362clear((C)->_storage/*4*/,_intersize,(_needed)-(1));
}
/*FI]*/
}
else{
r362move((C)->_storage/*4*/,0,(_intersize)-(1),_offset);
r362clear((C)->_storage/*4*/,0,(_offset)-(1));
/*[IF*/
if(((_intersize)+(_offset))<(_needed)){
r362clear((C)->_storage/*4*/,(_intersize)+(_offset),(_needed)-(1));
}
/*FI]*/
}
/*FI]*/
}
else{
r362clear((C)->_storage/*4*/,0,(_needed)-(1));
}
/*FI]*/
}
/*FI]*/
C->_lower=a1;
C->_upper=a2;
}


void r361make(T361* C,T2 a1,T2 a2){
T2 _needed=0;
C->_lower=a1;
C->_upper=a2;
_needed=((a2)-(a1))+(1);
/*[IF*/
if((_needed)>(0)){
/*[IF*/
if(((C)->_capacity/*8*/)<(_needed)){
C->_storage=calloc(_needed,sizeof(T0*));
C->_capacity=_needed;
}
else{
/*[IRF3.6clear_all*/{T361* C1=C;
T0* __value=NULL;
/*[IRF3.6set_all_with*/{T361* C2=C1;
T0* c1=__value;
r362set_all_with((C2)->_storage/*4*/,c1,((C2)->_upper/*12*/)-((C2)->_lower/*16*/));
}/*]*/
}/*]*/
}
/*FI]*/
}
/*FI]*/
}
/*No:ARRAY[RUN_FEATURE_2].upper*/


void r361swap(T361* C,T2 a1,T2 a2){
T0* _tmp=NULL;
_tmp=r361item(C,a1);
/*[IRF3.6put*/{T361* C1=C;
T0* b1=r361item(C,a2);
T2 b2=a1;
((C1)->_storage/*4*/)[(b2)-((C1)->_lower/*16*/)]=(b1);
}/*]*/
/*[IRF3.6put*/{T361* C1=C;
T0* b1=_tmp;
T2 b2=a2;
((C1)->_storage/*4*/)[(b2)-((C1)->_lower/*16*/)]=(b1);
}/*]*/
}
/*No:ARRAY[RUN_FEATURE_2].capacity*/
/*No:ARRAY[RUN_FEATURE_2].put*/
/*No:ARRAY[RUN_FEATURE_2].storage*/

