Branch: Tag:

1999-06-13

1999-06-13 21:45:35 by Martin Stjernholm <mast@lysator.liu.se>

Made map() work with array-simulating objects in all cases.

Rev: lib/modules/Array.pmod:1.34

13:      mixed map(mixed arr, mixed fun, mixed ... args)   { -  int e; +  int e,s;    mixed *ret;       if(mappingp(arr))
28:    switch(sprintf("%t",fun))    {    case "int": -  return arr(@args); +  if(objectp(arr)) { +  ret=allocate(s=sizeof(arr)); +  for(e=0;e<s;e++) +  ret[e]=arr[e](@args); +  return ret; +  } +  else return arr(@args);       case "string": -  return column(arr, fun)(@args); +  if(objectp(arr)) { +  ret=allocate(s=sizeof(arr)); +  for(e=0;e<s;e++) +  ret[e]=arr[e][fun](@args); +  return ret; +  } +  else return column(arr, fun)(@args);       case "function":    case "program":    case "object": -  ret=allocate(sizeof(arr)); -  for(e=0;e<sizeof(arr);e++) +  ret=allocate(s=sizeof(arr)); +  for(e=0;e<s;e++)    ret[e]=fun(arr[e],@args);    return ret;