]> mj.ucw.cz Git - libucw.git/commitdiff
Improved array sorter according to Robert's suggestions.
authorMartin Mares <mj@ucw.cz>
Sun, 12 Jan 2003 14:11:04 +0000 (14:11 +0000)
committerMartin Mares <mj@ucw.cz>
Sun, 12 Jan 2003 14:11:04 +0000 (14:11 +0000)
lib/arraysort.h

index 316bcd20edf5f196cf57724d4914bcb6a9828f06..776051e932a21ea7e0bc0388c1cf62cdc32ac219 100644 (file)
  *  ASORT_ELT(i)    [*]        returns the key of i-th element
  *  ASORT_LT(x,y)      x < y for ASORT_TYPE (default: "x<y")
  *  ASORT_SWAP(i,j)    swap i-th and j-th element (default: assume _ELT
- *                     is a l-value and swap just the keys)
+ *                     is an l-value and swap just the keys)
  *  ASORT_THRESHOLD    threshold for switching between quicksort and insertsort
+ *  ASORT_EXTRA_ARGS   extra arguments for the sort function (they are always
+ *                     visible in all the macros supplied above), starts with comma
  *
  *  After including this file, a function ASORT_PREFIX(sort)(uns array_size)
  *  is declared and all parameter macros are automatically undef'd.
 #define ASORT_THRESHOLD 8              /* Guesswork and experimentation */
 #endif
 
+#ifndef ASORT_EXTRA_ARGS
+#define ASORT_EXTRA_ARGS
+#endif
+
 static void ASORT_PREFIX(sort)(uns array_size)
 {
   struct stk { int l, r; } stack[8*sizeof(uns)];
@@ -165,3 +171,4 @@ static void ASORT_PREFIX(sort)(uns array_size)
 #undef ASORT_EQ
 #undef ASORT_SWAP
 #undef ASORT_THRESHOLD
+#undef ASORT_EXTRA_ARGS