summaryrefslogtreecommitdiffhomepage
path: root/stc
diff options
context:
space:
mode:
authorTyge Løvset <[email protected]>2020-10-02 07:04:35 +0200
committerTyge Løvset <[email protected]>2020-10-02 07:04:35 +0200
commit5a6bb1f5061a6ac75d70edf90f75dd976cfaba7d (patch)
tree0231a274aa64b9acc880a264f6f7e39ea82f9538 /stc
parentb4561502823e9eb0c0f1160ea4cdb69118a86589 (diff)
downloadSTC-modified-5a6bb1f5061a6ac75d70edf90f75dd976cfaba7d.tar.gz
STC-modified-5a6bb1f5061a6ac75d70edf90f75dd976cfaba7d.zip
Fixed generic less function - only worked for int
Diffstat (limited to 'stc')
-rw-r--r--stc/cdefs.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/stc/cdefs.h b/stc/cdefs.h
index 909ba69e..7bfccd3e 100644
--- a/stc/cdefs.h
+++ b/stc/cdefs.h
@@ -72,12 +72,14 @@ enum {_c_max_buffer = 512};
#define c_mem_equals(x, y) (memcmp(x, y, sizeof(*(y))) == 0)
#define c_default_equals(x, y) (*(x) == *(y))
#define c_default_less(x, y) (*(x) < *(y))
-#define c_less_compare(less, x, y) (less(x, y) ? -1 : less(y, x))
-#define c_default_compare(x, y) (*(x) - *(y))
+#define c_less_compare(less, x, y) (less(y, x) - less(x, y))
+#define c_default_compare(x, y) c_less_compare(c_default_less, x, y)
#define c_default_from_raw(x) (x)
#define c_default_to_raw(ptr) (*(ptr))
#define c_default_del(ptr) ((void) (ptr))
+/* Generic algorithms */
+
#define c_foreach(...) c_MACRO_OVERLOAD(c_foreach, __VA_ARGS__)
#define c_foreach_3(it, ctype, cnt) \
for (ctype##_iter_t it = ctype##_begin(&cnt), it##_end_ = ctype##_end(&cnt); it.val != it##_end_.val; ctype##_next(&it))