
SetProp()
*********


FUNKTION
========

   public mixed SetProp(string name, mixed Value);


DEFINIERT IN
============

   /std/thing/properties.c
   /sys/thing/properties.h (Prototyp)


ARGUMENTE
=========

   name       - Property, deren Wert veraendert werden soll.
   Value      - Wert, auf den der Inhalt der Property gesetzt werden soll


BESCHREIBUNG
============

   Der Datenwert der Property 'name' wird auf den Wert 'Value' gesetzt.

   Existiert eine F_SET_METHOD oder eine _set_'name'()-Methode fuer
   diese Property, so wird diese aufgerufen und ihr 'Value' uebergeben.
   Eine F_SET_METHOD hat dabei Vorrang vor _set_'name'(), d.h.
   _set_'name'() wird nach erfolgreicher F_QUERY_METHOD nicht mehr
   gerufen.

   (Diese Methoden nutzen dann Set(), um den Datenwert der Property
    'name' zu aendern. Teilweise werden aber auch interne Variablen so
    oeffentlich gemacht und sind nicht in der ueber Set/Query verfuegbaren
    Property 'name' abgelegt.)


RUeCKGABEWERT
=============

   Der Wert, der nun in der Property gespeichert ist.
   In der Regel ist das 'Value'. Wenn die Property ueber eine SET_METHOD
   oder eine _set_'name'()-Funktion verfuegt und diese 'Value' aendert
   (zum Beispiel, indem sie 'Value' an einen bestimmten erlaubten
   Wertebereich anpasst), kann der Rueckgabewert jedoch auch veraendert
   sein.

   Wenn die Property nicht veraendert werden darf, wird -1 zurueckgegeben.


BEISPIELE
=========

   // geben wir dem Zwerg eine Kurzbeschreibung
   SetProp(P_SHORT, "Ein kleiner Zwerg");


SIEHE AUCH
==========

   Aehnliches:        QueryProp(L), Set(L), Query(L)
   Generell:          SetProperties(L), QueryProperties(L)
   Konzept:           properties, /std/thing/properties.c

15.Dez 2004 Gloinson
