
     **********************************************************
     *  ACHTUNG: EFUN EXISTIERT NICHT MEHR! NICHT VERWENDEN!  *
     **********************************************************

SYNOPSIS:
	mapping m_allocate(int size, int width)

DESCRIPTION:
	Reserve memory for a mapping.

	size is the number of entries (i.e. keys) to reserve, width is
	the number of data items per entry. If the optional width is
	omitted, 1 is used as default.

	This is useful only when you are going to construct a mapping
	whose approximate size you know beforehand, to save on malloc
	overhead. If you don't fill in data for all the allocated
	elements, any leftovers will be freed after the current
	function execution ended. It is also useful if you want the
	mapping to have a certain width even if you don't provide
	all the data items for the keys yet.

HISTORY
  Renamed to 'm_allocate()' in LDMud 3.2.6 and LP "03.02.1@150".
  Since LDMud 3.2.9, not available if driver is compiled without
    USE_DEPRECATED.
  Removed in LDMud 3.3 and LP "03.02.1@150"

SEE ALSO:
	mappings(LPC), walk_mapping(E), get_type_info(E)

29.10.2006 Zesstra