wahlmaschine.c-Dateireferenz

#include <properties.h>
#include <defines.h>
#include "/secure/wizlevels.h"
Include-Abhängigkeitsdiagramm für wahlmaschine.c:

gehe zum Quellcode dieser Datei

Funktionen

static private void SAY (string str)
void create ()
varargs string name (int casus, int demon)
varargs string Name (int casus, int demon)
public string QueryPronoun (int casus)
string short ()
string long ()
mixed Query (mixed param)
mixed QueryProp (mixed param)
int Set (mixed param)
int SetProp (mixed param)
varargs int id (string str, int lvl)
void init ()
void save_me ()
static int waehle ()
static private int falsch ()
static int waehle_2 (string str)
static int auswertung ()
static int wahlthema (string str)
static int moeglichkeit (string str)
mixed _internal ()

Variablen

static string in_use
string thema
string * moeglichkeiten
string * ergebnis

Dokumentation der Funktionen

mixed _internal (  ) 

Definiert in Zeile 248 der Datei wahlmaschine.c.

Benutzt ARCH_SECURITY und process_call().

00249 {
00250   if (!ARCH_SECURITY || process_call()) return 0;
00251   return ergebnis;
00252 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

static int auswertung (  )  [static]

Definiert in Zeile 181 der Datei wahlmaschine.c.

Benutzt all, ARCH_SECURITY, break_string(), CountUp(), data, ergebnis, i, moeglichkeiten, process_call(), SAY und thema.

00182 {
00183   int i,j,max,all;
00184   mapping stimmen, data;
00185   mixed names;
00186 
00187   if (!ARCH_SECURITY || process_call()) return 0;
00188 
00189   rm("/log/WAHL");
00190 
00191   data = mkmapping(ergebnis[0], ergebnis[1]);
00192   names = m_indices(data);
00193   stimmen = ([]);
00194 
00195   SAY("\n\n\nWahlergebnisse zum Thema: "+thema+"\n");
00196   SAY("\nGewaehlt haben folgende Personen: \n");
00197   SAY(break_string(CountUp(map(sort_array(names, #'>/*'*/), #'capitalize/*'*/)), 78));
00198   SAY("\n");
00199 
00200   while(sizeof(names)) {
00201     stimmen[data[names[0]]]++;
00202     names[0..0] = ({});
00203     all++;
00204   }
00205 
00206   SAY("*****************************************\n");
00207   SAY("Ergebnis:\n");
00208   for (i=0;i<sizeof(moeglichkeiten);i++)
00209     SAY(sprintf(" -- %2d.) %20s: %3d (%' '3.2f%%)\n", i+1, moeglichkeiten[i],
00210                 stimmen[moeglichkeiten[i]], 1.0 * stimmen[moeglichkeiten[i]] * 100.0 / (1.0 * all)));
00211   SAY(sprintf("Gesamtstimmen: %d\n", sizeof(m_indices(data))));
00212   return 1;
00213 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

void create (  ) 

Definiert in Zeile 23 der Datei wahlmaschine.c.

Benutzt destruct(), ergebnis, in_use, ME, moeglichkeiten, move_object() und restore_object().

00024 {
00025   if (clonep(ME)) destruct(ME);
00026   if (ergebnis) return;
00027   seteuid(getuid());
00028   in_use=0;
00029   ergebnis=({({}),({})});
00030   moeglichkeiten=({});
00031   restore_object("wahl/wahl");
00032   move_object(ME, "/gilden/abenteurer");
00033 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

static private int falsch (  )  [static]

Definiert in Zeile 148 der Datei wahlmaschine.c.

Benutzt in_use.

Wird benutzt von waehle_2().

00149 {
00150   write("Diese Auswahl ist ungueltig. Versuchs bitte gleich nochmal.\n");
00151   say(in_use+" hat ausgewaehlt.\n");
00152   in_use=0;
00153   return 1;
00154 }

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

varargs int id ( string  str,
int  lvl 
)

Definiert in Zeile 97 der Datei wahlmaschine.c.

00098 {  return (member(({"maschine", "waehler", "wahlmaschine"}), str)!=-1);  }

void init (  ) 

Definiert in Zeile 102 der Datei wahlmaschine.c.

00103 {
00104   add_action("waehle", "waehl",1);
00105   add_action("auswertung","auswertung");
00106   add_action("wahlthema", "wahlthema");
00107   add_action("moeglichkeit","moeglichkeit");
00108 }

string long (  ) 

Definiert in Zeile 71 der Datei wahlmaschine.c.

Benutzt thema.

00072 {
00073   return "Eine Wahlmaschine. Mit ihr koennen geheime Wahlen durchgefuehrt werden.\n"+
00074     "Aktuelles Thema: "+(stringp(thema) ? thema : "keines")+"\n";
00075 }

static int moeglichkeit ( string  str  )  [static]

Definiert in Zeile 231 der Datei wahlmaschine.c.

Benutzt ARCH_SECURITY, member_array(), moeglichkeiten, process_call(), RPL und save_me().

00232 {
00233   if (!ARCH_SECURITY || process_call()) {
00234     write("NOT allowed");
00235     return 0;
00236   }
00237   if (!(str=RPL->_unparsed_args())) return 0;
00238   if (member_array(str, moeglichkeiten) != -1) {
00239     write("Schon drin.\n");
00240     return 1;
00241   }
00242   moeglichkeiten+=({str});
00243   write("Ok.\n");
00244   save_me();
00245   return 1;
00246 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

varargs string Name ( int  casus,
int  demon 
)

Definiert in Zeile 51 der Datei wahlmaschine.c.

Benutzt name.

00052 {   return capitalize(name(casus, demon));  }

varargs string name ( int  casus,
int  demon 
)

Definiert in Zeile 35 der Datei wahlmaschine.c.

Benutzt RAW, WEM und WESSEN.

00036 {
00037   if (demon==RAW) return "Wahlmaschine";
00038   switch(casus) {
00039     case WEM:
00040     case WESSEN:
00041       if (demon==1)
00042         return "der Wahlmaschine";
00043       return "einer Wahlmaschine";
00044     default:
00045       if (demon==1)
00046         return "die Wahlmaschine";
00047       return "eine Wahlmaschine";
00048   }
00049 }

mixed Query ( mixed  param  ) 

Definiert in Zeile 77 der Datei wahlmaschine.c.

Benutzt FEMALE, P_GENDER, P_NAME und P_NOGET.

00078 {
00079    if (!stringp(param)) return 0;
00080    switch (param) {
00081      case P_NOGET:   return 1;
00082      case P_GENDER:  return FEMALE;
00083      case P_NAME:    return "Wahlmaschine";
00084    }
00085    return 0;
00086 }

public string QueryPronoun ( int  casus  ) 

Definiert in Zeile 55 der Datei wahlmaschine.c.

Benutzt WEM und WER.

00056 {
00057   switch(casus)
00058   {
00059     case WER:
00060       return "sie";
00061       break;
00062     case WEM: 
00063       return "ihr";
00064   }
00065   return "sie";
00066 }                                                                                                                   

mixed QueryProp ( mixed  param  ) 

Definiert in Zeile 88 der Datei wahlmaschine.c.

Benutzt Query().

00089 {  return Query(param);  }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

void save_me (  ) 

Definiert in Zeile 110 der Datei wahlmaschine.c.

Benutzt save_object().

00111 {  save_object("wahl/wahl");  }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

static private void SAY ( string  str  )  [static]

Definiert in Zeile 17 der Datei wahlmaschine.c.

00018 {
00019   write ( str );
00020   write_file("/log/WAHL", str);
00021 }

int Set ( mixed  param  ) 

Definiert in Zeile 91 der Datei wahlmaschine.c.

00092 {  return -1;  }

int SetProp ( mixed  param  ) 

Definiert in Zeile 94 der Datei wahlmaschine.c.

00095 {  return -1;  }

string short (  ) 

Definiert in Zeile 68 der Datei wahlmaschine.c.

00069 {  return "Eine Wahlmaschine.\n";  }

static int waehle (  )  [static]

Definiert in Zeile 113 der Datei wahlmaschine.c.

Benutzt i, in_use, input_to(), moeglichkeiten, notify_fail(), P_LEVEL, P_SECOND, P_TESTPLAYER und RPL.

00114 {
00115   int i;
00116   mixed second;
00117 
00118   if (!RPL) return 0;
00119   if (RPL->QueryProp(P_LEVEL)<10) {
00120     notify_fail("Man kann erst ab Stufe 10 mitwaehlen :(\n");
00121     return 0;
00122   }
00123   if (RPL->QueryProp(P_TESTPLAYER)) {
00124     notify_fail("Testspieler sind von der Wahl ausgeschlossen.\n");
00125     return 0;
00126   }
00127   if ((second=RPL->QueryProp(P_SECOND)) &&
00128       (!stringp(second) || (file_size("/save/"+lower_case(second[0..0])+"/"+lower_case(second)+".o")<=0))) {
00129     notify_fail("Nicht richtig markierte Zweities sind von der Wahl ausgeschlossen.\n");
00130     return 0;
00131   }
00132   if (in_use)
00133   {
00134     write(in_use+" waehlt gerade, warte also bitte einen Augenblick.\n");
00135     return 1;
00136   }
00137   in_use=capitalize(getuid(RPL));
00138   say(in_use+" tritt an die Wahlmaschine.\n");
00139   write(long());
00140   write("Das steht zur Auswahl:\n");
00141   for (i=0;i<sizeof(moeglichkeiten);i++)
00142     write(sprintf(" -- %d.) %s\n",i+1,moeglichkeiten[i]));
00143   write("Triff nun Deine Wahl (sie ist UNSICHTBAR): ");
00144   input_to("waehle_2",1);
00145   return 1;
00146 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

static int waehle_2 ( string  str  )  [static]

Definiert in Zeile 156 der Datei wahlmaschine.c.

Benutzt ergebnis, falsch(), i, in_use, member_array(), moeglichkeiten, name, P_SECOND, RPL und save_me().

00157 {
00158   int i;
00159   mixed name;
00160 
00161   if (!str) return falsch();
00162   
00163   name=RPL->QueryProp(P_SECOND);
00164   if (!stringp(name))
00165     name=getuid(RPL);
00166   else name=lower_case(name);
00167             
00168   if (member_array(str, moeglichkeiten)==-1) {
00169     if ( !sscanf( str, "%d", i ) ) return falsch();
00170     if ( i<1 || i>sizeof(moeglichkeiten) ) return falsch();
00171     ergebnis=insert_alist(name,moeglichkeiten[i-1],ergebnis);
00172   }
00173   else ergebnis=insert_alist(name,str,ergebnis);
00174   write("Ok.\n");
00175   save_me();
00176   say(in_use+" hat ausgewaehlt.\n");
00177   in_use=0;
00178   return 1;
00179 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

static int wahlthema ( string  str  )  [static]

Definiert in Zeile 215 der Datei wahlmaschine.c.

Benutzt _unparsed_args(), ARCH_SECURITY, ergebnis, moeglichkeiten, process_call(), RPL, save_me(), thema und WER.

00216 {
00217   if (!ARCH_SECURITY || process_call()) {
00218     write("NOT allowed");
00219     return 0;
00220   }
00221   if (!(str=this_interactive()->_unparsed_args())) return 0;
00222   thema=str;
00223   say(RPL->name(WER)+" setzt ein neues Abstimmungsthema fest.\n");
00224   ergebnis=({({}),({})});
00225   moeglichkeiten=({});
00226   write("Ok.\n");
00227   save_me();
00228   return 1;
00229 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:


Variablen-Dokumentation

string* ergebnis

Definiert in Zeile 13 der Datei wahlmaschine.c.

Wird benutzt von auswertung(), create(), waehle_2() und wahlthema().

string in_use [static]

Definiert in Zeile 9 der Datei wahlmaschine.c.

Wird benutzt von create(), falsch(), waehle() und waehle_2().

string* moeglichkeiten

Definiert in Zeile 12 der Datei wahlmaschine.c.

Wird benutzt von auswertung(), create(), moeglichkeit(), waehle(), waehle_2() und wahlthema().

string thema

Definiert in Zeile 11 der Datei wahlmaschine.c.

Wird benutzt von auswertung(), long() und wahlthema().

Erzeugt am Thu Jun 3 14:42:03 2010 für MorgenGrauen Mudlib von  doxygen 1.6.3