name()
======

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

