AllMaterials()
==============

FUNKTION
--------
::

     string *AllMaterials()

DEFINIERT IN
------------
::

     /p/daemon/materialdb.c (MATERIALDB)

BESCHREIBUNG
------------
::

     Gibt ein Array aller existenten Materialien zurueck (ihre Definitions-
     form wie in <thing/material.h> aufgelistet).

SIEHE AUCH
----------
::

     Konzepte:	  material, materialerkennung
     Grundlegend: P_MATERIAL, /sys/thing/material.h
     Listen:	  AllGroups(), Dump()
		  materialliste, materialgruppen
     Master:	  AddMaterial(), ConvMaterialList(), MaterialGroup(),
		  GroupName(), MaterialName(),
		  GetGroupMembers(), GetMatMembership()

7. Mai 2004 Gloinson

