Esempio n. 1
0
static void sighandler__(int signum) {
	int err;
	char signum2[16];
	const char* ret = callback_(jsq_, main_qu_, &err, NULL, code_.c_str(), false, NULL,
			1, i2s__(signum, signum2));
	switch(err) {
	case jieshiqi_err_go_ + keyword_exit_:
		break;
	default:
		l4_err_out_(jsq_, ret, err, 1);
	}
}
Esempio n. 2
0
dlle___ void dlln___(foreach__)(int*err,char**addr_ret,void*ce,void* shangji,bool no,const char*code,int argc,...){
	string ret;
	_for_args( argc )
	if(no){
		char buf[32];
		ret+=callback_(jsq_,shangji,err,ce,code,false,NULL,2,i2s__(i+1,buf),s);
	}else
		ret+=callback_(jsq_,shangji,err,ce,code,false,NULL,1,s);
	if(*err){
		if(*err==jieshiqi_err_go_+keyword_continue_){
			*err=0;
			continue;
		}
		if(*err==jieshiqi_err_go_+keyword_break_){
			*err=0;
			break;
		}
		break;
	}
	_next_args
	*addr_ret=dup__(ret.c_str());
}
Esempio n. 3
0
void array_cb__(int*err,void*ce,void* qu,const char*code,char*head1,bool no,bool desc,string&ret){
	string name;
	name=head1;
	name+=kw_length_;
	const char*val;
	if(!(val=var_get_(jsq_,qu,name.c_str())))
		return;
	int len=s2i__(val),len2;
	bool has2;
	char buf2[32];
	name=head1;
	name+=kw_length_;
	name+='2';
	if((val=var_get_(jsq_,qu,name.c_str()))){
		len2=s2i__(val);
		has2=true;
	}else{
		len2=1;
		has2=false;
		buf2[0]='1';
		buf2[1]=0;
	}
	char buf1[32];
	const char*val1[8];
#define val1_length sizeof(val1)/sizeof(const char*)
	if(len2>val1_length)
		len2=val1_length;
	int i1_b,i1_e,i1_i,i2_b,i2_e,i2_i;
	if(desc){
		i1_e=1;
		i1_b=len;
		i2_e=1;
		i2_b=len2;
		i1_i=i2_i=-1;
	}else{
		i1_b=1;
		i1_e=len;
		i2_b=1;
		i2_e=len2;
		i1_i=i2_i=1;
	}
	int v1_add=0;
	if(no)
		v1_add+=1;
	for(int i1=i1_b;;i1+=i1_i){
		if(desc){
			if(i1<i1_e)
				break;
		}else{
			if(i1>i1_e)
				break;
		}
		i2s__(i1,buf1);
		for(int i2=i2_b;;i2+=i2_i){
			if(desc){
				if(i2<i2_e)
					break;
			}else{
				if(i2>i2_e)
					break;
			}
			name=head1;
			if(has2){
				if(len>1){
					name+=kw_dian_;
					name+=buf1;
				}
				if(len2>1||len==1){
					name+=kw_dian_;
					name+=i2s__(i2,buf2);
				}
			}else
				name+=buf1;
			val=var_get_(jsq_,qu,name.c_str());
			if(!val){
				if(has2){
					name=head1+kw_dian_+buf1+kw_dian_+i2s__(i2,buf2);
					val=var_get_(jsq_,qu,name.c_str());
				}
			}
			val1[i2-1+v1_add]=val;
		}
		if(no){
			val1[0]=buf1;
		}
		ret+=callback3_(jsq_,qu,err,ce,code,false,NULL,len2+v1_add,val1,0);
		if(*err){
			if(*err==jieshiqi_err_go_+keyword_continue_){
				*err=0;
				continue;
			}
			if(*err==jieshiqi_err_go_+keyword_break_){
				*err=0;
				break;
			}
			break;
		}
	}
}