m4_divert(-1)`'m4_dnl m4_define(choicez,`$1() m4_divert(2)`'m4_dnl function _$1( str) { str="$1"; if (str in Cache) return Cache[str]; return Cache[str]=$1() } m4_divert' ) m4_define(choicez1,`$1($2) m4_divert(2)`'m4_dnl function _$1($2, str) { str="$1/" $2 if (str in Cache) return Cache[str]; return Cache[str]=$1($2) } m4_divert(0) ' ) m4_define(choicez2,`$1($2,$3) m4_divert(2)`'m4_dnl function _$1($2,$3, str) { str="$1/" $2 "/" $3; if (str in Cache) return Cache[str]; return Cache[str]=$1($2,$3) } m4_divert' ) m4_divert`'m4_dnl