diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2020-04-14 20:06:19 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2020-05-06 13:58:09 -0700 |
commit | ebdb3e3c3029d3762207e8dcadfa3a61bf0a9293 (patch) | |
tree | d27db501b1f79a0c89a1d5fbf2790171f843399c | |
parent | db24f16686b7e704e625f499140848681b31cfde (diff) | |
download | subsurface-ebdb3e3c3029d3762207e8dcadfa3a61bf0a9293.tar.gz |
media: create sort_picture_table function via macro
This needs a slight change to the macro, because here we sort by
value type. Yes, from a C-programming point of view this is horrible,
however a decent compiler should just inline everything and not
pass around value types.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
-rw-r--r-- | core/picture.c | 2 | ||||
-rw-r--r-- | core/picture.h | 1 | ||||
-rw-r--r-- | core/table.h | 4 |
3 files changed, 4 insertions, 3 deletions
diff --git a/core/picture.c b/core/picture.c index df1304ab8..d7ba597f6 100644 --- a/core/picture.c +++ b/core/picture.c @@ -31,7 +31,7 @@ static MAKE_GROW_TABLE(picture_table, struct picture, pictures) static MAKE_GET_INSERTION_INDEX(picture_table, struct picture, pictures, picture_less_than) MAKE_ADD_TO(picture_table, struct picture, pictures) static MAKE_REMOVE_FROM(picture_table, pictures) -//MAKE_SORT(picture_table, struct picture, pictures, comp_pictures) +MAKE_SORT(picture_table, struct picture, pictures, comp_pictures) //MAKE_REMOVE(picture_table, struct picture, picture) MAKE_CLEAR_TABLE(picture_table, pictures, picture) diff --git a/core/picture.h b/core/picture.h index 4e42052a4..999ef9681 100644 --- a/core/picture.h +++ b/core/picture.h @@ -35,6 +35,7 @@ extern void copy_pictures(const struct picture_table *s, struct picture_table *d extern void add_picture(struct picture_table *, struct picture newpic); extern bool remove_picture(struct picture_table *, const char *filename); extern int get_picture_idx(const struct picture_table *, const char *filename); /* Return -1 if not found */ +extern void sort_picture_table(struct picture_table *); #ifdef __cplusplus } diff --git a/core/table.h b/core/table.h index 0f168f4bc..d12a711eb 100644 --- a/core/table.h +++ b/core/table.h @@ -72,8 +72,8 @@ #define MAKE_SORT(table_type, item_type, array_name, fun) \ static int sortfn_##table_type(const void *_a, const void *_b) \ { \ - const item_type a = (const item_type)*(const void **)_a; \ - const item_type b = (const item_type)*(const void **)_b; \ + const item_type a = *(const item_type *)_a; \ + const item_type b = *(const item_type *)_b; \ return fun(a, b); \ } \ \ |