aewl

diff tag.c @ 178:e848966a1ac6

removed TLast tag enum, now tags is simple defined as char *[] array, the rest is calculated correctly, rules take an int array for the tags
author arg@10ksloc.org
date Thu, 03 Aug 2006 12:12:26 +0200
parents e890cee887d1
children 56fee1dc9d53
line diff
     1.1 --- a/tag.c	Thu Aug 03 11:38:26 2006 +0200
     1.2 +++ b/tag.c	Thu Aug 03 12:12:26 2006 +0200
     1.3 @@ -13,7 +13,7 @@
     1.4  
     1.5  typedef struct {
     1.6  	const char *pattern;
     1.7 -	Bool tags[TLast];
     1.8 +	const unsigned int *tags;
     1.9  	Bool isfloat;
    1.10  } Rule;
    1.11  
    1.12 @@ -145,7 +145,7 @@
    1.13  	if(!sel)
    1.14  		return;
    1.15  
    1.16 -	for(i = 0; i < TLast; i++)
    1.17 +	for(i = 0; i < ntags; i++)
    1.18  		sel->tags[i] = False;
    1.19  	appendtag(arg);
    1.20  }
    1.21 @@ -155,7 +155,7 @@
    1.22  {
    1.23  	char classinst[256];
    1.24  	static unsigned int len = sizeof(rule) / sizeof(rule[0]);
    1.25 -	unsigned int i, j;
    1.26 +	unsigned int i, j, n;
    1.27  	regex_t regex;
    1.28  	regmatch_t tmp;
    1.29  	Bool matched = False;
    1.30 @@ -168,10 +168,11 @@
    1.31  		for(i = 0; !matched && i < len; i++) {
    1.32  			if(!regcomp(&regex, rule[i].pattern, 0)) {
    1.33  				if(!regexec(&regex, classinst, 1, &tmp, 0)) {
    1.34 -					for(j = 0; j < TLast; j++) {
    1.35 -						if((c->tags[j] = rule[i].tags[j]))
    1.36 -							matched = True;
    1.37 -					}
    1.38 +					n = rule[i].tags ?
    1.39 +						sizeof(rule[i].tags) / sizeof(rule[i].tags[0]) : 0;
    1.40 +					matched = n != 0;
    1.41 +					for(j = 0; j < n; j++)
    1.42 +						c->tags[rule[i].tags[j]] = True;
    1.43  					c->isfloat = rule[i].isfloat;
    1.44  				}
    1.45  				regfree(&regex);
    1.46 @@ -204,13 +205,13 @@
    1.47  void
    1.48  viewnext(Arg *arg)
    1.49  {
    1.50 -	arg->i = (tsel < TLast-1) ? tsel+1 : 0;
    1.51 +	arg->i = (tsel < ntags-1) ? tsel+1 : 0;
    1.52  	view(arg);
    1.53  }
    1.54  
    1.55  void
    1.56  viewprev(Arg *arg)
    1.57  {
    1.58 -	arg->i = (tsel > 0) ? tsel-1 : TLast-1;
    1.59 +	arg->i = (tsel > 0) ? tsel-1 : ntags-1;
    1.60  	view(arg);
    1.61  }