name()|Name()

FUNKTION:
     varargs string name(int casus, int demon);
     varargs string Name(int casus, int demon);

DEFINIERT IN:
     /std/thing/description.c

ARGUMENTE:
     casus
          Der Fall, in dem der Name dekliniert werden soll.
     demon
          Gibt an, ob der Name mit bestimmtem oder unbestimmtem Artikel
          versehen werden soll:
             + demon = 0: Unbestimmter Artikel.
             + demon = 1: Bestimmter Artikel.
             + demon = 2: Finde selbst heraus, ob ein bestimmter oder ein
               unbestimmter Artikel verwendet werden soll.

BESCHREIBUNG:
     Diese Funktion ermittelt den Namen des Objektes im gewuenschten Fall
     und mit dem angegebenen Artikel. Moegliche Werte fuer casus sind in
     <thing/language.h> definiert. Weiterhin werden auch (falls angegeben)
     die Namensadjektive dekliniert und in den Namen eingebaut.

     Name() ist ein Alias fuer capitalize(name()), der Artikel wird also
     gross geschrieben.

RUeCKGABEWERT:
     String mit dem Namen des Objektes.

BEMERKUNGEN:
     Falls P_ARTICLE gesetzt ist, werden weder Artikel noch Namensadjektive
     in den Namen eingebaut.

     Wenn man als casus RAW angibt, wird der Name im Nominativ ohne Artikel
     und Namensadjektive zurueckgegeben.

BEISPIELE:
     Wenn das Objekt ein Ball mit P_NAME="Ball" und P_NAME_ADJ="klein" ist,
     so liefern die folgenden Aufrufe die angegebenen Ergebnisse:

     name(WER,0);    => "ein kleiner Ball"
     name(WESSEN,1); => "des kleinen Balls"
     name(RAW);      => "Ball"
     name(WEM,2);    => "einem kleinen Ball" oder "dem kleinen Ball",
                        abhaengig davon, wieviele Baelle gerade da sind.

SIEHE AUCH:
     /std/thing/description.c, Name()

----------------------------------------------------------------------------
Letzte Aenderung: 29.07.2016, Bugfix
