CVSROOT: /sources/m4 Module name: m4 Branch: branch-1_4 Changes by: Eric Blake <ericb> 06/10/21 02:55:56
Index: examples/foreach.m4 =================================================================== RCS file: /sources/m4/m4/examples/foreach.m4,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -u -b -r1.1.1.1 -r1.1.1.1.2.1 --- examples/foreach.m4 17 Feb 2000 03:03:19 -0000 1.1.1.1 +++ examples/foreach.m4 21 Oct 2006 02:55:56 -0000 1.1.1.1.2.1 @@ -1,19 +1,8 @@ -divert(-1) +divert(`-1') # foreach(x, (item_1, item_2, ..., item_n), stmt) -define(`foreach', `pushdef(`$1', `')_foreach(`$1', `$2', `$3')popdef(`$1')') +# parenthesized list, simple version +define(`foreach', `pushdef(`$1')_foreach($@)popdef(`$1')') define(`_arg1', `$1') -define(`_foreach', - `ifelse(`$2', `()', , - `define(`$1', _arg1$2)$3`'_foreach(`$1', (shift$2), `$3')')') -# traceon(`define', `foreach', `_foreach', `ifelse') -divert -foreach(`x', `(foo, bar, foobar)', `Word was: x -') -# Something more complex, from Pierre Gaumond <[EMAIL PROTECTED]>. -define(`case', ` $1) - $2=" -$1";; -')dnl -define(`_cat', `$1$2')dnl -`case' "$1" in -foreach(`x', ((a, vara), (b, varb), (c, varc)), `_cat(`case', x)')dnl -esac +define(`_foreach', `ifelse(`$2', `()', `', + `define(`$1', _arg1$2)$3`'$0(`$1', (shift$2), `$3')')') +divert`'dnl
