
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
