示例#1
0
void Button::call()
{
    if(value_.size() > 0)
        callback2_(value_);
    else if(node_)
        callback3_(node_);
    else
        callback_();
}
示例#2
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;
		}
	}
}