Short: efun rewidth_mapping()
From: alfebtcd <alfebtcd@cs.tu-berlin.de>
Date: Wed, 16 Dec 1998 21:11:51 +0100 (MET)
Type: Feature
State: Done - implemented in 3.2-dev.56

Maybe implement this (now) sefun:

int widthof(mapping m) { return get_type_info(m,1); }

mapping rewidth_mapping(mapping m,int new_width) {
  mixed h,g;
  int i,old_width;
  h = allocate(new_width);
  old_width = widthof(m);
  if (old_width > new_width)    // shrink the mapping?
    for (i=new_width; i-->0; )  // fill all values fro the original
      h[i] = m_values(m,i);
  else {                        // no, expand it.
    for (i=old_width; i-->0; )  // use all values from the original...
      h[i] = m_values(m,i);
    g = allocate(sizeof(m));    // ... create a dummy for the rest ...
    for (i=old_width; i<new_width; i++)  // and fill the rest with the dummy
      h[i] = g;
  }
  return apply(#'mkmapping,m_indices(m),h);
}
