#line 16420 "qb64pe.bas"
qbs* FUNC_UDTARRAYBOUNDEXPR(qbs*_FUNC_UDTARRAYBOUNDEXPR_STRING_DESCRIPTOR,int32*_FUNC_UDTARRAYBOUNDEXPR_LONG_DIMENSION_COUNT,qbs*_FUNC_UDTARRAYBOUNDEXPR_STRING_DIMENSION_EXPR,int32*_FUNC_UDTARRAYBOUNDEXPR_LONG_WANT_UPPER){
#line 16420 "qb64pe.bas"
qbs *tqbs;
#line 16420 "qb64pe.bas"
ptrszint tmp_long;
#line 16420 "qb64pe.bas"
int32 tmp_fileno;
#line 16420 "qb64pe.bas"
uint32 qbs_tmp_base=qbs_tmp_list_nexti;
#line 16420 "qb64pe.bas"
uint8 *tmp_mem_static_pointer=mem_static_pointer;
#line 16420 "qb64pe.bas"
uint32 tmp_cmem_sp=cmem_sp;
#line 16420 "qb64pe.bas"
#include "data34.txt"
#line 16420 "qb64pe.bas"
mem_lock *sf_mem_lock;
#line 16420 "qb64pe.bas"
new_mem_lock();
#line 16420 "qb64pe.bas"
sf_mem_lock=mem_lock_tmp;
#line 16420 "qb64pe.bas"
sf_mem_lock->type=3;
#line 16420 "qb64pe.bas"
libqb_check_stack();
#line 16420 "qb64pe.bas"
if (is_error_pending()) goto exit_subfunc;
#line 16421 "qb64pe.bas"
do{
#line 16421 "qb64pe.bas"
if(!qbevent)break;evnt(16421);}while(r);
#line 16422 "qb64pe.bas"
do{
#line 16422 "qb64pe.bas"
if(!qbevent)break;evnt(16422);}while(r);
#line 16423 "qb64pe.bas"
do{
#line 16423 "qb64pe.bas"
if(!qbevent)break;evnt(16423);}while(r);
#line 16424 "qb64pe.bas"
do{
#line 16424 "qb64pe.bas"
if(!qbevent)break;evnt(16424);}while(r);
#line 16425 "qb64pe.bas"
do{
#line 16425 "qb64pe.bas"
if(!qbevent)break;evnt(16425);}while(r);
#line 16426 "qb64pe.bas"
do{
#line 16426 "qb64pe.bas"
if(!qbevent)break;evnt(16426);}while(r);
#line 16436 "qb64pe.bas"
S_18889:;
#line 16436 "qb64pe.bas"
if ((-(*_FUNC_UDTARRAYBOUNDEXPR_LONG_DIMENSION_COUNT<= 0 ))||is_error_pending()){
#line 16436 "qb64pe.bas"
if(qbevent){evnt(16436);if(r)goto S_18889;}
#line 16436 "qb64pe.bas"
do{
#line 16436 "qb64pe.bas"
SUB_GIVE_ERROR(qbs_new_txt_len("TYPE member is not an array",27));
#line 16436 "qb64pe.bas"
qbs_cleanup(qbs_tmp_base,0);
#line 16436 "qb64pe.bas"
if(!qbevent)break;evnt(16436);}while(r);
#line 16436 "qb64pe.bas"
do{
#line 16436 "qb64pe.bas"
goto exit_subfunc;
#line 16436 "qb64pe.bas"
if(!qbevent)break;evnt(16436);}while(r);
#line 16436 "qb64pe.bas"
}
#line 16438 "qb64pe.bas"
do{
#line 16438 "qb64pe.bas"
qbs_set(_FUNC_UDTARRAYBOUNDEXPR_STRING_HELPER_NAME,qbs_add(qbs_new_txt_len("udt_array_bound_",16),qbs__tostr((int32)(FUNC_UNIQUENUMBER()),NULL,0)));
#line 16438 "qb64pe.bas"
qbs_cleanup(qbs_tmp_base,0);
#line 16438 "qb64pe.bas"
if(!qbevent)break;evnt(16438);}while(r);
#line 16440 "qb64pe.bas"
do{
#line 16440 "qb64pe.bas"
SUB_WRITEBUFLINE(&(pass2220=*__LONG_GLOBTXTBUF),qbs_add(qbs_add(qbs_new_txt_len("static int64 ",13),_FUNC_UDTARRAYBOUNDEXPR_STRING_HELPER_NAME),qbs_new_txt_len("(int64 qb_dim){",15)));
#line 16440 "qb64pe.bas"
qbs_cleanup(qbs_tmp_base,0);
#line 16440 "qb64pe.bas"
if(!qbevent)break;evnt(16440);}while(r);
#line 16441 "qb64pe.bas"
do{
#line 16441 "qb64pe.bas"
SUB_WRITEBUFLINE(&(pass2221=*__LONG_GLOBTXTBUF),qbs_new_txt_len("switch(qb_dim){",15));
#line 16441 "qb64pe.bas"
qbs_cleanup(qbs_tmp_base,0);
#line 16441 "qb64pe.bas"
if(!qbevent)break;evnt(16441);}while(r);
#line 16443 "qb64pe.bas"
do{
#line 16443 "qb64pe.bas"
*_FUNC_UDTARRAYBOUNDEXPR_LONG_DESC_POS= 1 ;
#line 16443 "qb64pe.bas"
if(!qbevent)break;evnt(16443);}while(r);
#line 16444 "qb64pe.bas"
S_18897:;
#line 16444 "qb64pe.bas"
fornext_value2223= 1 ;
#line 16444 "qb64pe.bas"
fornext_finalvalue2223=*_FUNC_UDTARRAYBOUNDEXPR_LONG_DIMENSION_COUNT;
#line 16444 "qb64pe.bas"
fornext_step2223= 1 ;
#line 16444 "qb64pe.bas"
if (fornext_step2223<0) fornext_step_negative2223=1; else fornext_step_negative2223=0;
#line 16444 "qb64pe.bas"
if (is_error_pending()) goto fornext_error2223;
#line 16444 "qb64pe.bas"
goto fornext_entrylabel2223;
#line 16444 "qb64pe.bas"
while(1){
#line 16444 "qb64pe.bas"
fornext_value2223=fornext_step2223+(*_FUNC_UDTARRAYBOUNDEXPR_LONG_DIM_I);
#line 16444 "qb64pe.bas"
fornext_entrylabel2223:
#line 16444 "qb64pe.bas"
*_FUNC_UDTARRAYBOUNDEXPR_LONG_DIM_I=fornext_value2223;
#line 16444 "qb64pe.bas"
if (fornext_step_negative2223){
#line 16444 "qb64pe.bas"
if (fornext_value2223<fornext_finalvalue2223) break;
#line 16444 "qb64pe.bas"
}else{
#line 16444 "qb64pe.bas"
if (fornext_value2223>fornext_finalvalue2223) break;
#line 16444 "qb64pe.bas"
}
#line 16444 "qb64pe.bas"
fornext_error2223:;
#line 16444 "qb64pe.bas"
if(qbevent){evnt(16444);if(r)goto S_18897;}
#line 16445 "qb64pe.bas"
S_18898:;
#line 16445 "qb64pe.bas"
if ((qbs_cleanup(qbs_tmp_base,-(FUNC_PARSENEXTUDTARRAYDESCRIPTORDIM(_FUNC_UDTARRAYBOUNDEXPR_STRING_DESCRIPTOR,_FUNC_UDTARRAYBOUNDEXPR_LONG_DESC_POS,_FUNC_UDTARRAYBOUNDEXPR_LONG_DIM_LOWER,_FUNC_UDTARRAYBOUNDEXPR_LONG_DIM_ELEMENTS)== 0 )))||is_error_pending()){
#line 16445 "qb64pe.bas"
if(qbevent){evnt(16445);if(r)goto S_18898;}
#line 16446 "qb64pe.bas"
do{
#line 16446 "qb64pe.bas"
SUB_GIVE_ERROR(qbs_new_txt_len("Cannot process the declared bounds of this TYPE member array",60));
#line 16446 "qb64pe.bas"
qbs_cleanup(qbs_tmp_base,0);
#line 16446 "qb64pe.bas"
if(!qbevent)break;evnt(16446);}while(r);
#line 16446 "qb64pe.bas"
do{
#line 16446 "qb64pe.bas"
goto exit_subfunc;
#line 16446 "qb64pe.bas"
if(!qbevent)break;evnt(16446);}while(r);
#line 16447 "qb64pe.bas"
}
#line 16449 "qb64pe.bas"
S_18902:;
#line 16449 "qb64pe.bas"
if ((*_FUNC_UDTARRAYBOUNDEXPR_LONG_WANT_UPPER)||is_error_pending()){
#line 16449 "qb64pe.bas"
if(qbevent){evnt(16449);if(r)goto S_18902;}
#line 16450 "qb64pe.bas"
do{
#line 16450 "qb64pe.bas"
*_FUNC_UDTARRAYBOUNDEXPR_LONG_BOUND_VALUE=*_FUNC_UDTARRAYBOUNDEXPR_LONG_DIM_LOWER+*_FUNC_UDTARRAYBOUNDEXPR_LONG_DIM_ELEMENTS- 1 ;
#line 16450 "qb64pe.bas"
if(!qbevent)break;evnt(16450);}while(r);
#line 16451 "qb64pe.bas"
}else{
#line 16452 "qb64pe.bas"
do{
#line 16452 "qb64pe.bas"
*_FUNC_UDTARRAYBOUNDEXPR_LONG_BOUND_VALUE=*_FUNC_UDTARRAYBOUNDEXPR_LONG_DIM_LOWER;
#line 16452 "qb64pe.bas"
if(!qbevent)break;evnt(16452);}while(r);
#line 16453 "qb64pe.bas"
}
#line 16455 "qb64pe.bas"
do{
#line 16455 "qb64pe.bas"
SUB_WRITEBUFLINE(&(pass2224=*__LONG_GLOBTXTBUF),qbs_add(qbs_add(qbs_add(qbs_add(qbs_new_txt_len("case ",5),qbs__tostr((int32)(*_FUNC_UDTARRAYBOUNDEXPR_LONG_DIM_I),NULL,0)),qbs_new_txt_len(": return ",9)),qbs__tostr((int32)(*_FUNC_UDTARRAYBOUNDEXPR_LONG_BOUND_VALUE),NULL,0)),qbs_new_txt_len(";",1)));
#line 16455 "qb64pe.bas"
qbs_cleanup(qbs_tmp_base,0);
#line 16455 "qb64pe.bas"
if(!qbevent)break;evnt(16455);}while(r);
#line 16456 "qb64pe.bas"
fornext_continue_2222:;
#line 16456 "qb64pe.bas"
}
#line 16456 "qb64pe.bas"
fornext_exit_2222:;
#line 16458 "qb64pe.bas"
do{
#line 16458 "qb64pe.bas"
SUB_WRITEBUFLINE(&(pass2225=*__LONG_GLOBTXTBUF),qbs_new_txt_len("default: error(9); return 0;",28));
#line 16458 "qb64pe.bas"
qbs_cleanup(qbs_tmp_base,0);
#line 16458 "qb64pe.bas"
if(!qbevent)break;evnt(16458);}while(r);
#line 16459 "qb64pe.bas"
do{
#line 16459 "qb64pe.bas"
SUB_WRITEBUFLINE(&(pass2226=*__LONG_GLOBTXTBUF),qbs_new_txt_len("}",1));
#line 16459 "qb64pe.bas"
qbs_cleanup(qbs_tmp_base,0);
#line 16459 "qb64pe.bas"
if(!qbevent)break;evnt(16459);}while(r);
#line 16460 "qb64pe.bas"
do{
#line 16460 "qb64pe.bas"
SUB_WRITEBUFLINE(&(pass2227=*__LONG_GLOBTXTBUF),qbs_new_txt_len("}",1));
#line 16460 "qb64pe.bas"
qbs_cleanup(qbs_tmp_base,0);
#line 16460 "qb64pe.bas"
if(!qbevent)break;evnt(16460);}while(r);
#line 16462 "qb64pe.bas"
do{
#line 16462 "qb64pe.bas"
qbs_set(_FUNC_UDTARRAYBOUNDEXPR_STRING_UDTARRAYBOUNDEXPR,qbs_add(qbs_add(qbs_add(_FUNC_UDTARRAYBOUNDEXPR_STRING_HELPER_NAME,qbs_new_txt_len("(",1)),_FUNC_UDTARRAYBOUNDEXPR_STRING_DIMENSION_EXPR),qbs_new_txt_len(")",1)));
#line 16462 "qb64pe.bas"
qbs_cleanup(qbs_tmp_base,0);
#line 16462 "qb64pe.bas"
if(!qbevent)break;evnt(16462);}while(r);
#line 16463 "qb64pe.bas"
exit_subfunc:;
#line 16463 "qb64pe.bas"
free_mem_lock(sf_mem_lock);
#line 16463 "qb64pe.bas"
#include "free34.txt"
#line 16463 "qb64pe.bas"
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;
#line 16463 "qb64pe.bas"
cmem_sp=tmp_cmem_sp;
#line 16463 "qb64pe.bas"
qbs_maketmp(_FUNC_UDTARRAYBOUNDEXPR_STRING_UDTARRAYBOUNDEXPR);return _FUNC_UDTARRAYBOUNDEXPR_STRING_UDTARRAYBOUNDEXPR;
#line 16463 "qb64pe.bas"
}
