qbs* FUNC_UDTARRAYINDEXEXPR(qbs*_FUNC_UDTARRAYINDEXEXPR_STRING_INDEXES,int32*_FUNC_UDTARRAYINDEXEXPR_LONG_DIMENSION_COUNT,qbs*_FUNC_UDTARRAYINDEXEXPR_STRING_DESCRIPTOR){
qbs *tqbs;
ptrszint tmp_long;
int32 tmp_fileno;
uint32 qbs_tmp_base=qbs_tmp_list_nexti;
uint8 *tmp_mem_static_pointer=mem_static_pointer;
uint32 tmp_cmem_sp=cmem_sp;
#include "data25.txt"
mem_lock *sf_mem_lock;
new_mem_lock();
sf_mem_lock=mem_lock_tmp;
sf_mem_lock->type=3;
libqb_check_stack();
if (is_error_pending()) goto exit_subfunc;
do{
if(!qbevent)break;evnt(16008);}while(r);
do{
*_FUNC_UDTARRAYINDEXEXPR_LONG_N=FUNC_NUMELEMENTS(_FUNC_UDTARRAYINDEXEXPR_STRING_INDEXES);
qbs_cleanup(qbs_tmp_base,0);
if(!qbevent)break;evnt(16010);}while(r);
S_18528:;
if ((-(*_FUNC_UDTARRAYINDEXEXPR_LONG_N== 0 ))||is_error_pending()){
if(qbevent){evnt(16011);if(r)goto S_18528;}
do{
SUB_GIVE_ERROR(qbs_new_txt_len("Array index missing",19));
qbs_cleanup(qbs_tmp_base,0);
if(!qbevent)break;evnt(16011);}while(r);
do{
goto exit_subfunc;
if(!qbevent)break;evnt(16011);}while(r);
}
S_18532:;
if ((-(*_FUNC_UDTARRAYINDEXEXPR_LONG_DIMENSION_COUNT<= 0 ))||is_error_pending()){
if(qbevent){evnt(16012);if(r)goto S_18532;}
do{
SUB_GIVE_ERROR(qbs_new_txt_len("TYPE member is not an array",27));
qbs_cleanup(qbs_tmp_base,0);
if(!qbevent)break;evnt(16012);}while(r);
do{
goto exit_subfunc;
if(!qbevent)break;evnt(16012);}while(r);
}
do{
qbs_set(_FUNC_UDTARRAYINDEXEXPR_STRING_RESULT_EXPR,qbs_new_txt_len("",0));
qbs_cleanup(qbs_tmp_base,0);
if(!qbevent)break;evnt(16014);}while(r);
do{
*_FUNC_UDTARRAYINDEXEXPR_LONG_STRIDE= 1 ;
if(!qbevent)break;evnt(16015);}while(r);
do{
*_FUNC_UDTARRAYINDEXEXPR_LONG_DESC_POS= 1 ;
if(!qbevent)break;evnt(16016);}while(r);
do{
*_FUNC_UDTARRAYINDEXEXPR_LONG_FOUND_DIMENSIONS= 0 ;
if(!qbevent)break;evnt(16017);}while(r);
do{
*_FUNC_UDTARRAYINDEXEXPR_LONG_B= 0 ;
if(!qbevent)break;evnt(16018);}while(r);
do{
*_FUNC_UDTARRAYINDEXEXPR_LONG_FIRSTI= 1 ;
if(!qbevent)break;evnt(16019);}while(r);
S_18542:;
fornext_value2707= 1 ;
fornext_finalvalue2707=*_FUNC_UDTARRAYINDEXEXPR_LONG_N;
fornext_step2707= 1 ;
if (fornext_step2707<0) fornext_step_negative2707=1; else fornext_step_negative2707=0;
if (is_error_pending()) goto fornext_error2707;
goto fornext_entrylabel2707;
while(1){
fornext_value2707=fornext_step2707+(*_FUNC_UDTARRAYINDEXEXPR_LONG_I);
fornext_entrylabel2707:
*_FUNC_UDTARRAYINDEXEXPR_LONG_I=fornext_value2707;
if (fornext_step_negative2707){
if (fornext_value2707<fornext_finalvalue2707) break;
}else{
if (fornext_value2707>fornext_finalvalue2707) break;
}
fornext_error2707:;
if(qbevent){evnt(16021);if(r)goto S_18542;}
do{
qbs_set(_FUNC_UDTARRAYINDEXEXPR_STRING_E,FUNC_GETELEMENT(_FUNC_UDTARRAYINDEXEXPR_STRING_INDEXES,_FUNC_UDTARRAYINDEXEXPR_LONG_I));
qbs_cleanup(qbs_tmp_base,0);
if(!qbevent)break;evnt(16022);}while(r);
S_18544:;
if ((qbs_cleanup(qbs_tmp_base,qbs_equal(_FUNC_UDTARRAYINDEXEXPR_STRING_E,qbs_new_txt_len("(",1))))||is_error_pending()){
if(qbevent){evnt(16023);if(r)goto S_18544;}
do{
*_FUNC_UDTARRAYINDEXEXPR_LONG_B=*_FUNC_UDTARRAYINDEXEXPR_LONG_B+ 1 ;
if(!qbevent)break;evnt(16023);}while(r);
}
S_18547:;
if ((qbs_cleanup(qbs_tmp_base,qbs_equal(_FUNC_UDTARRAYINDEXEXPR_STRING_E,qbs_new_txt_len(")",1))))||is_error_pending()){
if(qbevent){evnt(16024);if(r)goto S_18547;}
do{
*_FUNC_UDTARRAYINDEXEXPR_LONG_B=*_FUNC_UDTARRAYINDEXEXPR_LONG_B- 1 ;
if(!qbevent)break;evnt(16024);}while(r);
}
S_18550:;
if ((qbs_cleanup(qbs_tmp_base,(((-(*_FUNC_UDTARRAYINDEXEXPR_LONG_B== 0 ))&(qbs_equal(_FUNC_UDTARRAYINDEXEXPR_STRING_E,qbs_new_txt_len(",",1)))))|(-(*_FUNC_UDTARRAYINDEXEXPR_LONG_I==*_FUNC_UDTARRAYINDEXEXPR_LONG_N))))||is_error_pending()){
if(qbevent){evnt(16025);if(r)goto S_18550;}
S_18551:;
if ((-(*_FUNC_UDTARRAYINDEXEXPR_LONG_I==*_FUNC_UDTARRAYINDEXEXPR_LONG_N))||is_error_pending()){
if(qbevent){evnt(16026);if(r)goto S_18551;}
do{
qbs_set(_FUNC_UDTARRAYINDEXEXPR_STRING_IDX_SRC,FUNC_GETELEMENTS(_FUNC_UDTARRAYINDEXEXPR_STRING_INDEXES,_FUNC_UDTARRAYINDEXEXPR_LONG_FIRSTI,_FUNC_UDTARRAYINDEXEXPR_LONG_I));
qbs_cleanup(qbs_tmp_base,0);
if(!qbevent)break;evnt(16027);}while(r);
}else{
do{
qbs_set(_FUNC_UDTARRAYINDEXEXPR_STRING_IDX_SRC,FUNC_GETELEMENTS(_FUNC_UDTARRAYINDEXEXPR_STRING_INDEXES,_FUNC_UDTARRAYINDEXEXPR_LONG_FIRSTI,&(pass2708=*_FUNC_UDTARRAYINDEXEXPR_LONG_I- 1 )));
qbs_cleanup(qbs_tmp_base,0);
if(!qbevent)break;evnt(16029);}while(r);
}
do{
qbs_set(_FUNC_UDTARRAYINDEXEXPR_STRING_IDX_SRC,FUNC_EVALUATETOTYP(_FUNC_UDTARRAYINDEXEXPR_STRING_IDX_SRC,&(pass2709= 64 )));
qbs_cleanup(qbs_tmp_base,0);
if(!qbevent)break;evnt(16031);}while(r);
S_18557:;
if ((*__LONG_ERROR_HAPPENED)||is_error_pending()){
if(qbevent){evnt(16032);if(r)goto S_18557;}
do{
goto exit_subfunc;
if(!qbevent)break;evnt(16032);}while(r);
}
S_18560:;
if ((qbs_cleanup(qbs_tmp_base,qbs_equal(_FUNC_UDTARRAYINDEXEXPR_STRING_IDX_SRC,qbs_new_txt_len("",0))))||is_error_pending()){
if(qbevent){evnt(16033);if(r)goto S_18560;}
do{
SUB_GIVE_ERROR(qbs_new_txt_len("Array index missing",19));
qbs_cleanup(qbs_tmp_base,0);
if(!qbevent)break;evnt(16033);}while(r);
do{
goto exit_subfunc;
if(!qbevent)break;evnt(16033);}while(r);
}
do{
*_FUNC_UDTARRAYINDEXEXPR_LONG_FOUND_DIMENSIONS=*_FUNC_UDTARRAYINDEXEXPR_LONG_FOUND_DIMENSIONS+ 1 ;
if(!qbevent)break;evnt(16035);}while(r);
S_18565:;
if ((-(*_FUNC_UDTARRAYINDEXEXPR_LONG_FOUND_DIMENSIONS>*_FUNC_UDTARRAYINDEXEXPR_LONG_DIMENSION_COUNT))||is_error_pending()){
if(qbevent){evnt(16036);if(r)goto S_18565;}
do{
SUB_GIVE_ERROR(qbs_new_txt_len("Cannot change the number of elements an array has!",50));
qbs_cleanup(qbs_tmp_base,0);
if(!qbevent)break;evnt(16036);}while(r);
do{
goto exit_subfunc;
if(!qbevent)break;evnt(16036);}while(r);
}
S_18569:;
if ((qbs_cleanup(qbs_tmp_base,-(FUNC_PARSENEXTUDTARRAYDESCRIPTORDIM(_FUNC_UDTARRAYINDEXEXPR_STRING_DESCRIPTOR,_FUNC_UDTARRAYINDEXEXPR_LONG_DESC_POS,_FUNC_UDTARRAYINDEXEXPR_LONG_DIM_LOWER,_FUNC_UDTARRAYINDEXEXPR_LONG_DIM_ELEMENTS)== 0 )))||is_error_pending()){
if(qbevent){evnt(16037);if(r)goto S_18569;}
do{
SUB_GIVE_ERROR(qbs_new_txt_len("Cannot process the declared bounds of this TYPE member array",60));
qbs_cleanup(qbs_tmp_base,0);
if(!qbevent)break;evnt(16037);}while(r);
do{
goto exit_subfunc;
if(!qbevent)break;evnt(16037);}while(r);
}
do{
qbs_set(_FUNC_UDTARRAYINDEXEXPR_STRING_DIM_LOWER_TXT,qbs_ltrim(qbs_str((int32)(*_FUNC_UDTARRAYINDEXEXPR_LONG_DIM_LOWER))));
qbs_cleanup(qbs_tmp_base,0);
if(!qbevent)break;evnt(16039);}while(r);
do{
qbs_set(_FUNC_UDTARRAYINDEXEXPR_STRING_DIM_ELEMENTS_TXT,qbs_ltrim(qbs_str((int32)(*_FUNC_UDTARRAYINDEXEXPR_LONG_DIM_ELEMENTS))));
qbs_cleanup(qbs_tmp_base,0);
if(!qbevent)break;evnt(16040);}while(r);
do{
qbs_set(_FUNC_UDTARRAYINDEXEXPR_STRING_STRIDE_TXT,qbs_ltrim(qbs_str((int32)(*_FUNC_UDTARRAYINDEXEXPR_LONG_STRIDE))));
qbs_cleanup(qbs_tmp_base,0);
if(!qbevent)break;evnt(16041);}while(r);
S_18576:;
if ((-(*_FUNC_UDTARRAYINDEXEXPR_LONG_FOUND_DIMENSIONS== 1 ))||is_error_pending()){
if(qbevent){evnt(16043);if(r)goto S_18576;}
S_18577:;
if ((*__LONG_CHECKINGON)||is_error_pending()){
if(qbevent){evnt(16044);if(r)goto S_18577;}
do{
qbs_set(_FUNC_UDTARRAYINDEXEXPR_STRING_RESULT_EXPR,qbs_add(qbs_add(qbs_add(qbs_add(qbs_add(qbs_add(qbs_add(_FUNC_UDTARRAYINDEXEXPR_STRING_RESULT_EXPR,qbs_new_txt_len("array_check((",13)),_FUNC_UDTARRAYINDEXEXPR_STRING_IDX_SRC),qbs_new_txt_len(")-(",3)),_FUNC_UDTARRAYINDEXEXPR_STRING_DIM_LOWER_TXT),qbs_new_txt_len("),",2)),_FUNC_UDTARRAYINDEXEXPR_STRING_DIM_ELEMENTS_TXT),qbs_new_txt_len(")+",2)));
qbs_cleanup(qbs_tmp_base,0);
if(!qbevent)break;evnt(16045);}while(r);
}else{
do{
qbs_set(_FUNC_UDTARRAYINDEXEXPR_STRING_RESULT_EXPR,qbs_add(qbs_add(qbs_add(qbs_add(qbs_add(_FUNC_UDTARRAYINDEXEXPR_STRING_RESULT_EXPR,qbs_new_txt_len("((",2)),_FUNC_UDTARRAYINDEXEXPR_STRING_IDX_SRC),qbs_new_txt_len(")-(",3)),_FUNC_UDTARRAYINDEXEXPR_STRING_DIM_LOWER_TXT),qbs_new_txt_len("))+",3)));
qbs_cleanup(qbs_tmp_base,0);
if(!qbevent)break;evnt(16047);}while(r);
}
}else{
S_18583:;
if ((*__LONG_CHECKINGON)||is_error_pending()){
if(qbevent){evnt(16050);if(r)goto S_18583;}
do{
qbs_set(_FUNC_UDTARRAYINDEXEXPR_STRING_RESULT_EXPR,qbs_add(qbs_add(qbs_add(qbs_add(qbs_add(qbs_add(qbs_add(qbs_add(qbs_add(_FUNC_UDTARRAYINDEXEXPR_STRING_RESULT_EXPR,qbs_new_txt_len("array_check((",13)),_FUNC_UDTARRAYINDEXEXPR_STRING_IDX_SRC),qbs_new_txt_len(")-(",3)),_FUNC_UDTARRAYINDEXEXPR_STRING_DIM_LOWER_TXT),qbs_new_txt_len("),",2)),_FUNC_UDTARRAYINDEXEXPR_STRING_DIM_ELEMENTS_TXT),qbs_new_txt_len(")*",2)),_FUNC_UDTARRAYINDEXEXPR_STRING_STRIDE_TXT),qbs_new_txt_len("+",1)));
qbs_cleanup(qbs_tmp_base,0);
if(!qbevent)break;evnt(16051);}while(r);
}else{
do{
qbs_set(_FUNC_UDTARRAYINDEXEXPR_STRING_RESULT_EXPR,qbs_add(qbs_add(qbs_add(qbs_add(qbs_add(qbs_add(qbs_add(_FUNC_UDTARRAYINDEXEXPR_STRING_RESULT_EXPR,qbs_new_txt_len("((",2)),_FUNC_UDTARRAYINDEXEXPR_STRING_IDX_SRC),qbs_new_txt_len(")-(",3)),_FUNC_UDTARRAYINDEXEXPR_STRING_DIM_LOWER_TXT),qbs_new_txt_len("))*",3)),_FUNC_UDTARRAYINDEXEXPR_STRING_STRIDE_TXT),qbs_new_txt_len("+",1)));
qbs_cleanup(qbs_tmp_base,0);
if(!qbevent)break;evnt(16053);}while(r);
}
}
do{
*_FUNC_UDTARRAYINDEXEXPR_LONG_STRIDE=*_FUNC_UDTARRAYINDEXEXPR_LONG_STRIDE**_FUNC_UDTARRAYINDEXEXPR_LONG_DIM_ELEMENTS;
if(!qbevent)break;evnt(16057);}while(r);
do{
*_FUNC_UDTARRAYINDEXEXPR_LONG_FIRSTI=*_FUNC_UDTARRAYINDEXEXPR_LONG_I+ 1 ;
if(!qbevent)break;evnt(16058);}while(r);
}
fornext_continue_2706:;
}
fornext_exit_2706:;
S_18593:;
if ((-(*_FUNC_UDTARRAYINDEXEXPR_LONG_FOUND_DIMENSIONS!=*_FUNC_UDTARRAYINDEXEXPR_LONG_DIMENSION_COUNT))||is_error_pending()){
if(qbevent){evnt(16062);if(r)goto S_18593;}
do{
SUB_GIVE_ERROR(qbs_new_txt_len("Cannot change the number of elements an array has!",50));
qbs_cleanup(qbs_tmp_base,0);
if(!qbevent)break;evnt(16062);}while(r);
do{
goto exit_subfunc;
if(!qbevent)break;evnt(16062);}while(r);
}
S_18597:;
if ((qbs_cleanup(qbs_tmp_base,FUNC_PARSENEXTUDTARRAYDESCRIPTORDIM(_FUNC_UDTARRAYINDEXEXPR_STRING_DESCRIPTOR,_FUNC_UDTARRAYINDEXEXPR_LONG_DESC_POS,_FUNC_UDTARRAYINDEXEXPR_LONG_DIM_LOWER,_FUNC_UDTARRAYINDEXEXPR_LONG_DIM_ELEMENTS)))||is_error_pending()){
if(qbevent){evnt(16063);if(r)goto S_18597;}
do{
SUB_GIVE_ERROR(qbs_new_txt_len("Cannot change the number of elements an array has!",50));
qbs_cleanup(qbs_tmp_base,0);
if(!qbevent)break;evnt(16063);}while(r);
do{
goto exit_subfunc;
if(!qbevent)break;evnt(16063);}while(r);
}
S_18601:;
if ((qbs_cleanup(qbs_tmp_base,qbs_equal(_FUNC_UDTARRAYINDEXEXPR_STRING_RESULT_EXPR,qbs_new_txt_len("",0))))||is_error_pending()){
if(qbevent){evnt(16064);if(r)goto S_18601;}
do{
SUB_GIVE_ERROR(qbs_new_txt_len("Array index missing",19));
qbs_cleanup(qbs_tmp_base,0);
if(!qbevent)break;evnt(16064);}while(r);
do{
goto exit_subfunc;
if(!qbevent)break;evnt(16064);}while(r);
}
do{
qbs_set(_FUNC_UDTARRAYINDEXEXPR_STRING_UDTARRAYINDEXEXPR,qbs_left(_FUNC_UDTARRAYINDEXEXPR_STRING_RESULT_EXPR,_FUNC_UDTARRAYINDEXEXPR_STRING_RESULT_EXPR->len- 1 ));
qbs_cleanup(qbs_tmp_base,0);
if(!qbevent)break;evnt(16066);}while(r);
exit_subfunc:;
free_mem_lock(sf_mem_lock);
#include "free25.txt"
if ((tmp_mem_static_pointer>=mem_static)&&(tmp_mem_static_pointer<=mem_static_limit)) mem_static_pointer=tmp_mem_static_pointer; else mem_static_pointer=mem_static;
cmem_sp=tmp_cmem_sp;
qbs_maketmp(_FUNC_UDTARRAYINDEXEXPR_STRING_UDTARRAYINDEXEXPR);return _FUNC_UDTARRAYINDEXEXPR_STRING_UDTARRAYINDEXEXPR;
}
