match_ids()
***********


FUNKTION
========

   int match_ids(string *list);


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

   /std/thing/description.c


ARGUMENTE
=========

   *list      String-Array mit zu testenden IDs


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

   Die Liste der uebergebenen IDs wird mit den IDs des Objektes
   UND-Verknuepft. Die Groesse des resultierenden Arrays wird
   zurueckgegeben.
   Diese Funktion erlaubt also das gleichzeitige Pruefen auf
   mehrere IDs. Allerdings werden - im Gegensatz zu id() -
   Adjektive und Ausdruecke der Art "<ID> <nummer>" nicht
   beruecksichtigt.
   Ebenso werden Spezialitaeten wie Unitobjekte und Objekte mit
   ueberschriebenem id() nicht beruecksichtigt! Im Zweifelsfall ist daher
   doch die Nutzung von id() zu empfehlen.


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

   Anzahl der zutreffenden IDs.


BEISPIELE
=========

   Angenommen, ein Objekt habe folgende Bezeichner:

   AddId( ({"murmel","kugel","glasmurmel","glaskugel"}) );
   AddAdjective( "rund" );

   Dann liefern die angegebenen match_ids()-Aufrufe folgende Ergebnisse:

   match_ids( ({"murmel","stein"}) );         => 1
   match_ids( ({"murmel","kugel"}) );         => 2
   match_ids( ({"runde murmel"}) );           => 0
   match_ids( ({"murmel 2"}) );               => 0, auch wenn dies die
                                             zweite Murmel in der
                                             gleichen Umgebung ist


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

   AddId(), AddAdjective(), AddSingularId(), AddPluralId(), present(),
   id(), /std/thing/description.c, /std/unit.c

Last modified: Sat Mar 15 21:40:00 2000 by Paracelsus
