Added public files
Roughly added all public files. Probably missed some, though.
diff --git a/doc/concepts/properties b/doc/concepts/properties
new file mode 100644
index 0000000..1ab418a
--- /dev/null
+++ b/doc/concepts/properties
@@ -0,0 +1,109 @@
+Properties
+ BESCHREIBUNG:
+ Im Gegensatz zu Variablen innerhalb eines Objektes, kann man Properties
+ von aussen veraendern, ohne eine besondere Funktion geschrieben zu haben.
+
+ 1. Das zugrundeliegende Prinzip
+ ===============================
+ Das grundlegende Konzept der MUDlib ist, dass wichtige, objektbezogene
+ Informationen in den sogenannnten Properties gespeichert werden (engl.
+ property -- Eigenschaft, Eigentum).
+
+ Diese Informationen koennen einfache Werte, wie z.B. Zahlen, Zeichen oder
+ Objekte, aber auch kompliziertere Strukturen sein.
+ Jedes Objekt kann beliebig viele solcher Properties besitzen und deren
+ Namensgebung ist nicht nur auf die von der MUDlib bereitgestellten
+ Standardproperties begrenzt. Das heisst, das fuer eigene Anwendungen die
+ Menge der Properties fuer ein Objekt beliebig erweitert werden kann.
+ Damit sind auch schon die beiden Hauptmerkmale einer Property ange-
+ sprochen:
+
+ a) ein Name oder Kennung und
+ b) ein Wert, der durch den Namen repraesentiert wird.
+
+ Das reine Verwalten einer Property mit Namen und Wert ist aber nicht sehr
+ sinnvoll und so gehoeren zu jeder Property noch zwei weitere wichtige
+ Dinge. Zu jeder Property wurden jeweils zwei Operationen eingefuehrt,
+ welche den uebergebenen Wert vor der Speicherung oder Abfrage bearbeiten.
+
+ Zusammenfassend laesst sich das Konzept der Property in folgendem Schema
+ darstellen:
+
+ +-------------------------------------------+
+ | Property |
+ +-------------------------------------------+
+ | privater Datenbereich (Property Werte) |
+ +-------------------------------------------+
+ | Direktzugriff auf den Datenbereich |
+ +-------------------------------------+ |
+ | ^ Methoden v | ^ v |
+ | Setzen | Abfragen | |
+ +-------------------------------------+-----+
+ ^ |
+ | V
+ SetProp() QueryProp()
+
+ Aus dem Schema laesst sich Folgendes erkennen:
+ - beim Setzen und Abfragen wird der Wert einer Methode uebergeben, die
+ den Wert zurueckgibt oder ggf. die Aenderungen vornimmt
+ - ein direkter Zugriff auf den Wert der ist ebenfalls moeglich, sollte
+ aber nicht der Normalfall sein, da die Methoden Nebeneffekte erzeugen
+ - in bestimmten Faellen kann man den aeusserlich aendernden Zugriff
+ vollkommen unterbinden (NOSETMETHOD, PROTECT)
+ (VORSICHT bei mappings/arrays, diese werden bei QueryProp()
+ als Referenz zurueckgegeben, sind also so aenderbar)
+
+ 2. Implementation
+ =================
+
+ Die Klasse /std/thing/properties.c stellt folgende Funktionen fuer die
+ Behandlung von Properties bereit:
+
+ Normaler Zugriff: mixed SetProp(<name>, <wert>)
+ - setzt den Wert von <name> auf <wert>
+ mixed QueryProp(<name>)
+ - gibt den Wert von <name> zurueck
+
+ Direkter Zugriff: mixed Set(<name>, <wert>, <interpretation>)
+ - setzt fuer <name> einen <wert>:
+ - den normalen Wert
+ <interpretation>: F_VALUE (==0)
+ - eine Methode
+ <wert>: closure
+ <interpretation>: F_SET_METHOD, F_QUERY_METHOD
+ - ein Flag
+ <wert>: SAVE, SECURED, PROTECTED, NOSETMETHOD
+ <interpretation>: F_MODE, F_MODE_AS, F_MODE_AD
+ mixed Query(<name>, <interpretation>)
+ - fragt fuer <name> einen <wert> ab
+ - F_SET_METHOD, F_QUERY_METHOD: die Closure/0
+ - F_MODE: das (veroderte!) Flag
+ Global: void SetProperties(<mapping>)
+ - setzt das Mapping komplett, beachtet >= PROTECTED
+ mapping QueryProperties()
+ - fragte das komplette Mapping als Kopie ab
+
+ 3. Besonderheiten/Eingebaute Properties:
+
+ Existiert zu einer Property eine Funktion mit dem selben Namen und einem
+ "_set_" bzw "_query_" davor, so wird nicht auf die das Property-Mapping
+ zugegriffen, sondern es werden die Argumente an diese Funktion uebergeben
+ und der Rueckgabewert dieser Funktion zurueckgegeben.
+ Vorteil:
+ - so kann man Daten, die schnell verfuegbar sein muessen, (bei denen
+ also Effizienz gegen SetProp/QueryProp spricht) trotzdem nach aussen
+ einheitlich zugreifbar machen
+ Nachteil:
+ - nicht wirklich sauber
+ - Speichern muss man selbst vornehmen
+ - Set/Query gehen wie auch bei Methoden an _set_*/_query_* vorbei
+ - dieses Verhalten sollte der Mudlib vorbehalten bleiben, fuer eigene
+ Prueffunktionen (wird etwas gesetzt/abgefragt) bzw. Aenderungen
+ sollte man Methoden (F_SET_METHOD/F_QUERY_METHOD) benutzen
+
+ SIEHE AUCH:
+ SetProp(L), QueryProp(L), Set(L), Query(L), SetProperties(L),
+ QueryProperties(L)
+ objekte, effizienz, closures
+
+ 21. Maerz 2004 Gloinson