| SYNOPSIS |
| mapping m_allocate(int size) |
| mapping m_allocate(int size, int width) |
| |
| BESCHREIBUNG |
| Die Funktion reserviert Speicher fuer ein Mapping. <size> ist die |
| Anzahl Eintraege (d.h. die Anzahl Keys), <width> ist die Anzahl |
| Dateneintraege pro Key. Wird <width> nicht angegeben, werden Keys |
| mit einem Datenelement erzeugt. |
| |
| Die Funktion ist nur sinnvoll, wenn man ein Mapping erzeugt, dessen |
| ungefaehre Groesse von vornherein bekannt ist, um so den Overhead |
| von wiederholten Speicherallokation zu minimieren. Wenn nicht alle |
| allozierten Datenelemente mit Daten bestueckt werden, werden die |
| Ueberbleibsel einige Zeit spaeter bei Gelegenheit wieder freigegeben |
| (s. Bemerkungen). |
| m_allocate() ist auch nuetzlich, wenn ein Mapping bestimmter Breite |
| erzeugt werden soll, ohne bereits die Daten zu den Keys bereit zu |
| stellen. |
| |
| Wenn bloss ein leeres Mapping bestimmter Breite erzeugt werden soll, |
| so kann folgende Notation verwendet werden: |
| |
| ([ ]) : erzeugt ein leeres Mapping mit Breite 1. |
| ([:<width>]) : erzeugt ein leeres Mapping der Breite <width>, |
| wobei <width> eine beliebige Anweisung sein kann, die eine |
| Integerzahl zurueck liefert. Tatsaechlich wird diese Notation |
| als 'm_allocate(0, <width>)' kompiliert. |
| |
| BEISPIELE |
| m_allocate(3,7) -> erzeugt ein Mapping mit 7 Werten pro Key und Platz |
| fuer 3 Eintraege. |
| ([:2*3]) -> entspricht m_allocate(0,6). |
| |
| BEMERKUNGEN |
| Ungenutzer Speicher des allozierten Mappins wird waehrend des sog. |
| Kompaktierens des Mappings freigegeben. Dies passiert waehrend eines |
| "data cleanups" oder einer "garbage collection". Die Zeit zwischen |
| "data cleanups" ist mit configure_driver() konfigurierbar. |
| |
| GESCHICHTE |
| Umbenannt von allocate_mapping() in LDMud 3.2.6. |
| Die ([:<width>]) Notation wurde in 3.2.9 eingefuehrt. |
| |
| SIEHE AUCH |
| mappings(LPC), walk_mapping(E), get_type_info(E), m_reallocate(E) |