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
