blob: 255f3b94bbe7752d4035e262702fe6252be1b6ab [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001SYNOPSIS
2 mapping m_allocate(int size)
3 mapping m_allocate(int size, int width)
4
5BESCHREIBUNG
6 Die Funktion reserviert Speicher fuer ein Mapping. <size> ist die
7 Anzahl Eintraege (d.h. die Anzahl Keys), <width> ist die Anzahl
8 Dateneintraege pro Key. Wird <width> nicht angegeben, werden Keys
9 mit einem Datenelement erzeugt.
10
11 Die Funktion ist nur sinnvoll, wenn man ein Mapping erzeugt, dessen
12 ungefaehre Groesse von vornherein bekannt ist, um so den Overhead
13 von wiederholten Speicherallokation zu minimieren. Wenn nicht alle
14 allozierten Datenelemente mit Daten bestueckt werden, werden die
15 Ueberbleibsel einige Zeit spaeter bei Gelegenheit wieder freigegeben
16 (s. Bemerkungen).
17 m_allocate() ist auch nuetzlich, wenn ein Mapping bestimmter Breite
18 erzeugt werden soll, ohne bereits die Daten zu den Keys bereit zu
19 stellen.
20
21 Wenn bloss ein leeres Mapping bestimmter Breite erzeugt werden soll,
22 so kann folgende Notation verwendet werden:
23
24 ([ ]) : erzeugt ein leeres Mapping mit Breite 1.
25 ([:<width>]) : erzeugt ein leeres Mapping der Breite <width>,
26 wobei <width> eine beliebige Anweisung sein kann, die eine
27 Integerzahl zurueck liefert. Tatsaechlich wird diese Notation
28 als 'm_allocate(0, <width>)' kompiliert.
29
30BEISPIELE
31 m_allocate(3,7) -> erzeugt ein Mapping mit 7 Werten pro Key und Platz
32 fuer 3 Eintraege.
33 ([:2*3]) -> entspricht m_allocate(0,6).
34
35BEMERKUNGEN
36 Ungenutzer Speicher des allozierten Mappins wird waehrend des sog.
37 Kompaktierens des Mappings freigegeben. Dies passiert waehrend eines
38 "data cleanups" oder einer "garbage collection". Die Zeit zwischen
39 "data cleanups" ist mit configure_driver() konfigurierbar.
40
41GESCHICHTE
42 Umbenannt von allocate_mapping() in LDMud 3.2.6.
43 Die ([:<width>]) Notation wurde in 3.2.9 eingefuehrt.
44
45SIEHE AUCH
46 mappings(LPC), walk_mapping(E), get_type_info(E), m_reallocate(E)