From 9c98b3c16041ebd41aabbb82e71d424a940a1d47 Mon Sep 17 00:00:00 2001 From: Sebastian Geerken Date: Tue, 5 Mar 2013 11:34:03 +0100 Subject: Comparable is now subclass of Object (not pseudo-interface anymore). The old solution would have made RTTI neccessary to work correctly. --- lout/object.cc | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'lout/object.cc') diff --git a/lout/object.cc b/lout/object.cc index 85a908b9..059564c0 100644 --- a/lout/object.cc +++ b/lout/object.cc @@ -106,6 +106,29 @@ size_t Object::sizeOf() return sizeof(Object*); } +// ---------------- +// Comparable +// ---------------- + +/** + * \brief This static method may be used as compare function for qsort(3), for + * an array of Object* (Object*[] or Object**). + */ +int Comparable::compareFun(const void *p1, const void *p2) +{ + Comparable *c1 = *(Comparable**)p1; + Comparable *c2 = *(Comparable**)p2; + + if (c1 && c2) + return ((c1)->compareTo(c2)); + else if (c1) + return 1; + else if (c2) + return -1; + else + return 0; +} + // ------------- // Pointer // ------------- -- cgit v1.2.3