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

map_mapping(E)

FUNKTION:
     mapping map(mapping m, string fun, object ob [, mixed extra])
     mapping map(mapping m, closure cl [, mixed extra])

PARAMETER:
     arr	- zu mappendes Array
     fun/cl	- zu rufende Methode/Closure
     ob		- Objekt/Dateiname, an dem Methode gerufen werden soll
     extra	- weitere Parameter fuer Methode/Closure

BESCHREIBUNG:
     Mapped die Elemente (jeweils Schluessel) aus 'map' durch die Methode
     'fun' oder die Closure 'cl' in ein neues Mapping.
     Fuer jedes Element aus 'map' wird 'fun' oder 'cl' mit dem Schluessel als
     erstem Parameter [und folgend den optionalen Extra-Parametern] gerufen.

     Der Rueckgabewert der Methode/Closure wird in fuer den Schluessel als
     Datenwert in das neue Mapping eingetragen.

     ACHTUNG: Alle anderen Daten bei Mapping mit Breite>1 verfallen!

     Verwendung von Methoden:
	Wenn bei der Angabe von 'fun' kein Objekt 'ob' in Form eines Strings
	oder Objekts angegeben wird, wird this_object() angenommen.

     Verwendung von Closures:
	Es koennen sowohl Lfun-Closures als auch Lambda-Closures verwendet
	werden. Lfun-Closures koennen, wenn im selben Objekt vorhanden auch
	'private' oder/und 'static' deklariert sein, muessen aber zu dem
	Zeitpunkt der Verwendung bekannt sein (Funktionsprototypen benutzen).

RUeCKGABEWERT:
     Mapping mit Schluessel:Rueckgabewerten der Methode/Closure.

BEISPIELE:
     // ersetze in einem Mapping die Datenwerte durch das Doppelte,
     // nutze dabei die Datenwerte des Altmappings durch Uebergabe als
     // extra-Parameter

     // Anmerkung: Das geht mit walk_mapping() eleganter!

     int do_double(string key, mapping m, int mult) {
      return m[key]*mult;
     }

     mapping x, y;
     x=(["a":2, "b":3]);
     y=map((["a":2, "b":3]), #'do_double, &x, 3);

     y == (["a":6,"b":9])

AeQUIVALENZCODE (nicht empfohlen, nur zum Verstaendnis!):
     int i;
     mapping ret; mapping input;
     mixed *index;

     ret=m_allocate(0, 1);
     index=m_indices(input);
     i=sizeof(index);
     while(i--)
       ret[index[i]]=ob->fun(index[i] [, extra1, extra2, ...]))
       // ret[index[i]]=funcall(cl, index[i] [, extra1, extra2, ...]);

HISTORY
    Since LDMud 3.2.6 obsoleted by map_indices().
    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".

SIEHE AUCH:
     Arrays:		filter_array(E), map(E)
     Objektarrays:	filter_objects(E), map_objects(E)
     Mappings:		filter(E)

     Sonstiges:		walk_mapping(E), m_contains(E)
			member()
			m_indices(E), m_values(E)

29.10.2006 Zesstra
