%% options copyright owner = Dirk Krause copyright year = 2013-xxxx license = bsd %% header namespace DkTools4 { /** Comparable is a general base class for the library. */ class Comparable { public: /** Compare object against another object or some data. This comparison is used by sorted containers. Example: When storing persons (name and age) we can use crit=0 as comparison criteria in the container to compare person object against person object. When searching the container for an object with a specific name we can use crit=1 for comparisons of the object against a string. @param ptr Address of other object or data. @param crit Comparison criteria, see documentation of derived classes for class-specific numbers. @return Positive number if larger than ptr, 0 if evaluates equal to ptr, negative number if smaller than ptr. */ virtual int compareAgainst(void const *ptr, int crit) const = 0; /** Compare two pointers @param l Left pointer. @param r Right pointer. @param cr Comparison criteria. @return 1 for left object is large, 0 for right object is large, 0 for objects evaluating equally. */ static int compareTwoPointers(void const *l, void const *r, int cr); }; /* End of class Comparable. */ } /* End of namespace DkTools4 */ %% module #include "Dk4Comparable.h" int DkTools4::Comparable::compareTwoPointers(void const *l, void const *r, int cr) { int back = 0; if(l) { if(r) { DkTools4::Comparable const *pl = (DkTools4::Comparable const *)l; back = pl->compareAgainst(r, cr); } else back = 1; } else { if(r) back = -1; } return back; }