SYNOPSIS
        int sizeof(mixed * val)
        int sizeof(string  val)
        int sizeof(bytes   val)
        int sizeof(mapping val)
        int sizeof(struct xxx val)

BESCHREIBUNG
        Liefert die Anzahl Elemente in einem Array <val>, die Anzahl
        Zeichen in einem String <val>, die Anzahl an Bytes in der
        Bytefolge <val> oder die Anzal Keys in einem Mapping <val>.

        Als Spezialfall kann <val> auch 0 sein. In diesem Fall liefert die
        Funktion 0 zurueck.

        Falls im Spiel Objekte zerstoert wurde, seit das Mapping zuletzt auf
        zerstoerte Keys geprueft wurde, muss es zuerst auf zerstoerte Objekte
        in Keys geprueft werden. In diesem Fall steigt die Laufzeit mit der
        Anzahl der Keys im Mapping (O(n)).
        Anderenfalls ist die Laufzeit unabhaengig der Anzahl der Schluessel
        (O(1)).

GESCHICHTE
        LDMud 3.2.9 fuehrte Strings als moegliche Argumente ein.
        LDMud 3.3 fuehrte Structs als moegliche Argumente ein.

SIEHE AUCH
        strlen(E), allocate(E), pointerp(E), mappingp(E), m_allocate(E),
        widthof(E)
