From f4e2399eab83e65a1b13daab3d5a7c1a148286f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20H=C3=BCbinette=20=28Hubbe=29?= <hubbe@hubbe.net> Date: Sun, 3 Aug 1997 07:33:43 -0700 Subject: [PATCH] map fixed Rev: lib/modules/Array.pmod:1.2 --- lib/modules/Array.pmod | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/lib/modules/Array.pmod b/lib/modules/Array.pmod index 604c6fee81..b16aad3d64 100644 --- a/lib/modules/Array.pmod +++ b/lib/modules/Array.pmod @@ -5,24 +5,28 @@ mixed map(mixed arr, mixed fun, mixed ... args) int e; mixed *ret; - if(mappingp(arr)) + switch(sprintf("%t",fun)) + { + case "mapping": return mkmapping(indices(arr),map(values(arr),fun,@args)); - if(intp(fun)) + case "int": return arr(@args); - - if(stringp(fun)) + + case "string": return column(arr, fun)(@args); - if(functionp(fun)) - { + case "function": + case "program": + case "object": ret=allocate(sizeof(arr)); for(e=0;e<sizeof(arr);e++) ret[e]=fun(arr[e],@args); return ret; - } - error("Bad argument 2 to map_array().\n"); + default: + error("Bad argument 2 to map_array().\n"); + } } mixed filter(mixed arr, mixed fun, mixed ... args) -- GitLab