efun: query_dekliniert


FUNKTION:

query_dekliniert

DEKLARATION:

string query_dekliniert(int fall, object interessent, int flags)

BESCHREIBUNG:

Die Grammatik-Funktionen rufen bei der Deklination des Namens eines
Objektes in dem Objekt diese Funktion auf.

Ist der Rueckgabewert ungleich 0, so wird dieser Wert als deklinierte Form
des Namens verwendet; ist der Rueckgabewert 0, so wird auf herkoemmlichem
Wege versucht, den Namen zu deklinieren.

Diese Funktion hat Vorrang vor den Einzelfall-Funktionen query_genitiv(),
query_dativ und query_akkusativ.

Die Defines fuer fall stehen in /sys/deklin.h (sind 1-4 fuer
Nominativ-Akkusativ), das Objekt interessent ist das Objekt, welches die
Grammatikfunktion aufgerufen hat, die den Namen dekliniert haben will.

flags gibt an, in welchem Kontext der Name verwendet werden soll:
    DEKL_BESTIMMT       Dem Namen wird ein bestimmter Artikel vorangestellt
    DEKL_UNBESTIMMT     Dem Namen wird ein unbestimmter Artikel vorangestellt
    DEKL_BLANK          Dem Namen wird kein Artikel vorangestellt
Obige Defines sind keine Bitflags, d.h. eine Abfrage sollte aehnlich wie
(flags&DEKL_ART_MASK)==DEKL_BESTIMMT aussehen.

Diese Funktion ist fuer Problemfaelle der Deklination gedacht; im
Allgemeinen duerften die Einzelfall-Funktionen ausreichen.

Bei V-Items mit einer Closure als Eintrag fuer "dekliniert" wird als
1. Parameter das V-Item selber uebergeben und danach die Parameter
wie bei query_dekliniert.

BEISPIELE:

    string query_dekliniert(int fall, object interessent, int flags)
    {
        return
            ({ "Atlas",
               "Atlasses",
               "Atlasse",
               "Atlas",
            }) [fall-1];
    }

// Fuer adjektivaehnliche Namen (z.B. Reisender) kann man auf
// Grammatikfunktionen zurueckgreifen:
// (DEKL_2_ADJ_ART uebernimmt hierbei die Umrechung des Flags in den
// 2. Parameter von query_deklin. Es entspricht einem ART_NUR_ADJEKTIV
// mit ART_DER, ART_EIN bzw. ART_BLANK.)

    string query_dekliniert(int fall, object interessent, int flags)
    {
	return query_deklin(
	    ([
		"adjektiv": ({"Reisend"}),
		"gender":"maennlich"
	    ]), DEKL_2_ADJ_ART(flags), fall);
    }

VERWEISE:

query_genitiv, query_dativ, query_akkusativ, query_deklin_name, query_dekliniert

GRUPPEN:

grammatik

SOURCE:

/secure/simul_efun/deklin

UNItopia (mudadm@UNItopia.de)