#include <thing/language.h>#include <thing/description.h>#include <thing/properties.h>
gehe zum Quellcode dieser Datei
Makrodefinitionen | |
| #define | NEED_PROTOTYPES |
Funktionen | |
| void | create () |
| static int | _query_article () |
| static int | _set_article (int art) |
| private string | query_c_article (int casus) |
| private varargs string | query_g_suffix (int gen, int casus, int anzahl) |
| varargs int | SuggestArticle (string id) |
| varargs string | QueryArticle (int casus, int dem, int force) |
| varargs string | QueryOwn (int casus) |
| varargs string | QueryPossPronoun (mixed what, int casus, int number) |
| varargs string | QueryPronoun (int casus) |
| varargs string | QueryDu (int casus, int gender, int zahl) |
| string | QueryGenderString () |
| varargs string | DeclAdj (mixed adj, int casus, int demon) |
| static int | _set_gender (int i) |
| #define NEED_PROTOTYPES |
Definiert in Zeile 16 der Datei language.c.
| static int _query_article | ( | ) | [static] |
| static int _set_article | ( | int | art | ) | [static] |
| static int _set_gender | ( | int | i | ) | [static] |
| void create | ( | ) |
Definiert in Zeile 20 der Datei language.c.
| varargs string DeclAdj | ( | mixed | adj, | |
| int | casus, | |||
| int | demon | |||
| ) |
Definiert in Zeile 164 der Datei language.c.
Benutzt P_GENDER, P_PLURAL und QueryProp().
00165 { 00166 // Unregelmaessige Adjektive 00167 if( pointerp(adj) ) return adj[casus]+" "; 00168 00169 // Falscher Typ? Und Tschuess ... 00170 if (!stringp(adj)) return ""; 00171 00172 // Plural ist einfach 00173 if (QueryProp(P_PLURAL)) 00174 { 00175 // Bestimmt 00176 if (demon) return adj+"en "; 00177 00178 // Unbestimmt 00179 return adj + ({ "e ", "er ", "en ", "e " })[casus]; 00180 } 00181 00182 if ( demon ) 00183 return adj + ({ ({ "e " , "en ", "en ", "e " }), 00184 ({ "e " , "en ", "en ", "en " }), 00185 ({ "e " , "en ", "en ", "e " }) }) 00186 [(int)QueryProp( P_GENDER )][casus]; 00187 else 00188 return adj + ({ ({ "es ", "en ", "en ", "es " }), 00189 ({ "er ", "en ", "en ", "en " }), 00190 ({ "e " , "en ", "en ", "e " }) }) 00191 [(int)QueryProp( P_GENDER )][casus]; 00192 }

| private string query_c_article | ( | int | casus | ) |
Definiert in Zeile 31 der Datei language.c.
Benutzt P_GENDER, P_PLURAL und QueryProp().
Wird benutzt von QueryArticle().
00032 { 00033 if (QueryProp(P_PLURAL)) 00034 return ({ "die ", "der ", "den ", "die "})[casus]; 00035 00036 return ({ ({ "das ", "des ", "dem ", "das " }), 00037 ({ "der ", "des ", "dem ", "den " }), 00038 ({ "die ", "der ", "der ", "die " }) }) 00039 [(int)QueryProp(P_GENDER)][casus]; 00040 }


| private varargs string query_g_suffix | ( | int | gen, | |
| int | casus, | |||
| int | anzahl | |||
| ) |
Definiert in Zeile 43 der Datei language.c.
| varargs string QueryArticle | ( | int | casus, | |
| int | dem, | |||
| int | force | |||
| ) |
Definiert in Zeile 72 der Datei language.c.
Benutzt P_ARTICLE, P_GENDER, P_NAME, P_PLURAL, query_c_article(), query_g_suffix(), QueryProp() und SuggestArticle().
Wird benutzt von name() und short().
00073 { 00074 // Kein Artikel 00075 if (!force &&!(QueryProp(P_ARTICLE))) return ""; 00076 00077 // Artikelart aussuchen 00078 if ( dem==2 ) dem = SuggestArticle(QueryProp(P_NAME)); 00079 00080 // Bestimmter Artikel 00081 if (dem) return query_c_article(casus); 00082 00083 // Unbestimmter Artikel 00084 if (QueryProp(P_PLURAL)) return ""; 00085 00086 return sprintf("ein%s ",query_g_suffix((int)QueryProp(P_GENDER),casus)); 00087 }


| varargs string QueryDu | ( | int | casus, | |
| int | gender, | |||
| int | zahl | |||
| ) |
Definiert in Zeile 141 der Datei language.c.
00142 { 00143 return 00144 ({ ({({ "du", "ihr"}),({ "du", "ihr"}),({ "du", "ihr"})}), 00145 ({({"deiner", "euer"}),({"deiner", "euer"}),({"deiner", "euer"})}), 00146 ({({ "dir", "euch"}),({ "dir", "euch"}),({ "dir", "euch"})}), 00147 ({({ "dich", "euch"}),({ "dich", "euch"}),({ "dich", "euch"})}) 00148 })[casus][gender][zahl]; 00149 }
| string QueryGenderString | ( | ) |
Definiert in Zeile 152 der Datei language.c.
Benutzt FEMALE, MALE, P_GENDER und QueryProp().
00153 { 00154 switch( (int)QueryProp( P_GENDER )) 00155 { 00156 case MALE: return "maennlich"; 00157 case FEMALE: return "weiblich"; 00158 } 00159 return("saechlich"); //fall-through 00160 }

| varargs string QueryOwn | ( | int | casus | ) |
Definiert in Zeile 90 der Datei language.c.
Benutzt P_GENDER, query_g_suffix() und QueryProp().
00091 { 00092 return sprintf("Dein%s ",query_g_suffix(QueryProp(P_GENDER),casus)); 00093 }

| varargs string QueryPossPronoun | ( | mixed | what, | |
| int | casus, | |||
| int | number | |||
| ) |
Definiert in Zeile 96 der Datei language.c.
Benutzt FEMALE, P_GENDER, P_PLURAL, query_g_suffix() und QueryProp().
00097 { 00098 int gen2; 00099 00100 // Geschlecht ermitteln 00101 gen2 = (objectp(what)?(int)what->QueryProp(P_GENDER):(int)what); 00102 00103 // Plural ist schoen einfach 00104 if (QueryProp(P_PLURAL)) return "ihr"+query_g_suffix(gen2, casus, number); 00105 00106 return (((((int)QueryProp( P_GENDER ))==FEMALE )? "ihr":"sein")+ 00107 query_g_suffix(gen2%3, casus, number)); 00108 }

| varargs string QueryPronoun | ( | int | casus | ) |
Definiert in Zeile 111 der Datei language.c.
Benutzt FEMALE, gender, MALE, P_GENDER, P_PLURAL, QueryProp(), WEM, WER und WESSEN.
00112 { 00113 int gender; 00114 00115 // Plural ist immer einfach ... 00116 if (QueryProp(P_PLURAL)) 00117 { 00118 if (casus==WEM) return "ihnen"; 00119 return "sie"; 00120 } 00121 00122 switch(QueryProp(P_GENDER)) 00123 { 00124 case FEMALE: 00125 if (casus==WESSEN) return "ihrer"; 00126 if (casus==WEM) return "ihr"; 00127 return "sie"; 00128 00129 case MALE: 00130 if (casus==WER) return "er"; 00131 if (casus==WESSEN) return "seiner"; 00132 if (casus==WEM) return "ihm"; 00133 return "ihn"; 00134 } 00135 if (casus==WESSEN) return "seiner"; 00136 if (casus==WEM) return "ihm"; 00137 return "es"; //fall-through 00138 }

| varargs int SuggestArticle | ( | string | id | ) |
Definiert in Zeile 52 der Datei language.c.
Wird benutzt von QueryArticle().
00053 { 00054 object ob,*obs; 00055 00056 // Raum oder Master: Bestimmt. 00057 if (!environment()) return 1; 00058 00059 // Keine id? Dann raus 00060 if (!id) return 1; 00061 00062 // Objekt mit gleichem Namen im env? Dann unbestimmt 00063 for ( ob=first_inventory(environment()) ; ob ; ob=next_inventory(ob) ) 00064 if ( ob!=this_object()&& id==(string)ob->QueryProp(P_NAME) ) 00065 return 0; 00066 00067 // sonst bestimmt 00068 return 1; 00069 }


1.6.3