dnl @ ../doc/m4.texinfo:6207: Origin of test dnl @ expected status: 0 dnl @ Copyright (C) 2006, 2007 Free Software Foundation dnl @ This file is free software; the Free Software Foundation dnl @ gives unlimited permission to copy and/or distribute it dnl @ with or without modifications, as long as this notice dnl @ is preserved. undivert(`forloop2.m4')dnl dnl @result{}divert(`-1') dnl @result{}# forloop(var, from, to, stmt) - improved version: dnl @result{}# works even if VAR is not a strict macro name dnl @result{}# performs sanity check that FROM is larger than TO dnl @result{}# allows complex numerical expressions in TO and FROM dnl @result{}define(`forloop', `ifelse(eval(`($3) >= ($2)'), `1', dnl @result{} `pushdef(`$1', eval(`$2'))_forloop(`$1', dnl @result{} eval(`$3'), `$4')popdef(`$1')')') dnl @result{}define(`_forloop', dnl @result{} `$3`'ifelse(indir(`$1'), `$2', `', dnl @result{} `define(`$1', incr(indir(`$1')))$0($@)')') dnl @result{}divert`'dnl include(`forloop2.m4') dnl @result{} forloop(`i', `2', `1', `no iteration occurs') dnl @result{} forloop(`', `1', `2', ` odd iterator name') dnl @result{} odd iterator name odd iterator name forloop(`i', `5 + 5', `0xc', ` 0x`'eval(i, `16')') dnl @result{} 0xa 0xb 0xc forloop(`i', `a', `b', `non-numeric bounds') dnl @error{}m4:stdin:6: bad expression in eval (bad input): (b) >= (a) dnl @result{}