AllGroups()
===========

FUNKTION
--------
::

     string *AllGroups()

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

     /p/daemon/materialdb.c (MATERIALDB)

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

     Gibt ein Array aller existenten Materialgruppen zurueck (ihre
     Definitionsform wie in <thing/material.h> aufgelistet).

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

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

7. Mai 2004 Gloinson

