| divert(`-1') | |
| # forloop(var, from, to, stmt) - improved version: | |
| # works even if VAR is not a strict macro name | |
| # performs sanity check that FROM is larger than TO | |
| # allows complex numerical expressions in TO and FROM | |
| define(`forloop', `ifelse(eval(`($3) >= ($2)'), `1', | |
| `pushdef(`$1', eval(`$2'))_$0(`$1', | |
| eval(`$3'), `$4')popdef(`$1')')') | |
| define(`_forloop', | |
| `$3`'ifelse(indir(`$1'), `$2', `', | |
| `define(`$1', incr(indir(`$1')))$0($@)')') | |
| divert`'dnl |