
QueryProperties()
*****************


FUNKTION
========

   mapping QueryProperties()


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

   /std/thing/properties.c


ARGUMENTE
=========

   keine


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

   Diese Funktion liefert ein Mapping mit allen fuer das Objekt
   definierten Properties zurueck.


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

   Ein Mapping mit den Properties. Das Mapping hat folgenden Aufbau:
      ([ name: wert; flags; set_method; query_method,
         name2: ... ]);


BEMERKUNGEN
===========

   - diese Funktion wird von restore_object() und save_object()
   - F_QUERY_METHODs und _query_'prop'()-Methoden haben keine Auswirkung
     auf die Wertefelder!


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

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

1.Mai 2004 Gloinson
