IsEqual()
*********


FUNKTION
========

   int IsEqual(object ob)


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

   /std/unit.c


ARGUMENTE
=========

   ob      Das Objekt das geprueft werden soll.

BESCHREIBUNG:
   Diese Funktion prueft ob zwei Objekte vom gleichen Typ sind, also
   ob z.B. ob und this_object() beides Muenzen sind oder beides
   Edelsteine. Bei einem Ergebnis != 0 fasst unit.c diese zwei Objekte
   automatisch zusammen, wenn ob->IsEqual(this_object()) auch einen
   Wert != 0 ergibt. Hierbei wird das IsEqual() von beiden beteiligten
   Objekten gerufen und sie muessen uebereinstimmen, dass sie
   eigentlich das gleiche Objekt sind. Selbstverstaendlich ist diese
   Funktion nur im Falle von Unitobjekten sinnvoll.


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

   0 - this_object() ist nicht vom selben Typ wie ob
   1 - this_object() ist vom gleichen Typ wie ob


BEISPIELE
=========

   o Ein Unitobjekt das verschiedene Beschreibungen haben kann...

      int IsEqual(object ob)
      {
         if (!(int)::IsEqual(ob)) return 0;
         return (QueryProp(P_SHORT)==ob->QueryProp(P_SHORT));
      }


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

   /std/unit.c

25.01.2015, Zesstra
