TagList *ApplyTaggingRules(TaggingRuleList *rules,TagList *tags,node_t id)
{
 TagList *result=NewTagList();
 int i,j;

 for(i=0;i<rules->nrules;i++)
   {
    if(rules->rules[i].k && rules->rules[i].v)
      {
       for(j=0;j<tags->ntags;j++)
          if(!strcmp(tags->k[j],rules->rules[i].k) && !strcmp(tags->v[j],rules->rules[i].v))
             apply_actions(rules,&rules->rules[i],j,tags,result,id);
      }
    else if(rules->rules[i].k && !rules->rules[i].v)
      {
       for(j=0;j<tags->ntags;j++)
          if(!strcmp(tags->k[j],rules->rules[i].k))
             apply_actions(rules,&rules->rules[i],j,tags,result,id);
      }
    else if(!rules->rules[i].k && rules->rules[i].v)
      {
       for(j=0;j<tags->ntags;j++)
          if(!strcmp(tags->v[j],rules->rules[i].v))
             apply_actions(rules,&rules->rules[i],j,tags,result,id);
      }
    else /* if(!rules->rules[i].k && !rules->rules[i].v) */
      {
       for(j=0;j<tags->ntags;j++)
          apply_actions(rules,&rules->rules[i],j,tags,result,id);
      }
   }

 return(result);
}
Exemple #2
0
 auto process_format_aux(F f, Format, Pairs... pairs)
 {
     return apply_actions
     (
         make_actions<CTTE_MAKE_STRING(Format)>{},
         make_context(pairs...),
         std::move(f)
     );
 }
Exemple #3
0
static void appmouse_drag(ViewInfo* v,int x,int y)
{
    v->mouse.pos.x=x;
    v->mouse.pos.y=y;
    to3D( x,y, &v->mouse.GLpos.x,&v->mouse.GLpos.y,&v->mouse.GLpos.z);
    prevX=v->mouse.GLpos.x;
    prevY=v->mouse.GLpos.y;
    apply_actions(v,x,y);
}
static VALUE
spgd_compute_name(VALUE self, VALUE split_rule, VALUE values)
{
    VALUE res = 0;
    int encoding = -1;
    char *result = (char*) xmalloc(INITIAL_CAPA);
    int pos = 0, capa = INITIAL_CAPA;
    long i, rule_len = RARRAY_LEN(split_rule);
    if (!result) {
	rb_memerror();
    }
    for (i = 0; i < rule_len; i++) {
	VALUE rule = rb_ary_entry(split_rule, i);
	if (rb_class_of(rule) == rb_cArray) {
	    long fieldnum = NUM2LONG(rb_ary_entry(rule, 0));
	    VALUE actions = rb_ary_entry(rule, 1);
	    rule = rb_ary_entry(values, fieldnum);
	    encoding = ENCODING_GET(rule);
	    if (RTEST(actions) && RARRAY_LEN(actions)) {
		rule = apply_actions(rule, actions);
	    }
	}
	if (rb_class_of(rule) == rb_cString) {
	    long size = RSTRING_LEN(rule);
	    if (capa < pos + size + 1) {
		char *tmp;
		capa = pos + size + 1;
		if (i + 1 != rule_len) capa = (capa * 3) >> 1;
		tmp = (char*) xrealloc(result, capa);
		if (!tmp) {
		    xfree(result);
		    rb_memerror();
		}
		result = tmp;
	    }
	    if (encoding == -1) encoding = ENCODING_GET(rule);
	    strncpy(result + pos, RSTRING_PTR(rule), size + 1);
	    pos += size;
	}
Exemple #5
0
static void appmouse_up(ViewInfo* v,int x,int y)
{

    /* int a; */
    v->mouse.down=0;
    v->mouse.finalPos.x=x;
    v->mouse.finalPos.y=y;
    /* a=get_mode(v); */
    to3D(x,y, &v->mouse.GLfinalPos.x,&v->mouse.GLfinalPos.y,&v->mouse.GLfinalPos.z);
    if(singleclick(v))
    {
	if (v->mouse.t==glMouseLeftButton)
	    appmouse_left_click(v,x,y);
	if (v->mouse.t==glMouseRightButton)
	    appmouse_right_click(v,x,y);
    }
    apply_actions(v,x,y);
    view->mouse.dragX = 0;
    view->mouse.dragY = 0;
    view->arcball->isDragging=0;


}
Exemple #6
0
 F operator*(F f)
 {
     return apply_actions(make_actions<CTTE_MAKE_STRING(Format)>{}, context, std::move(f));
 }
Exemple #7
0
 auto apply_actions(vector<Action, Actions...>, Context context, F f)
 {
     return apply_actions(vector<Actions...>{}, context, Action{}(context, f));
 }